Skip to content

Waydroid

Waydroid | تطبيقات أندرويد على لينكس


Waydroid⚓︎

Waydroid أفضل طريقة عملية لتشغيل تطبيقات أندرويد على لينكس، الأقل استهلاكًا لموارد الكمبيوتر والأفضل من ناحية الأداء. في الفيديو شرح كامل لكيفية استخدام Waydroid، بداية من التحميل والتنصيب، مرورًا بتخصيص اللغة ولوحة المفاتيح، كذلك تبادل الملفات ونسخ النصوص، إلى جانب تنصيب التطبيقات بشكل مباشر أو من خلال المتجر.

Install WayDroid⚓︎

Fedora 36⚓︎

NOTE: Kernels 5.18.18 to 5.19.5 are broken

  1. Add the Copr repository
sudo dnf copr enable aleasto/waydroid
  1. Install waydroid
sudo dnf install waydroid

When launching waydroid from the application menu you'll be asked to initialize waydroid with some android images. Use the following links:

System OTA: https://ota.waydro.id/system

Vendor OTA: https://ota.waydro.id/vendor

NOTE: THIS WILL DOWNLOAD NON-FREE COMPONENTS (ffmpeg, possibly others)

Ubuntu 22.04⚓︎
  • Install Pre-requisites
sudo apt install curl ca-certificates -y
  • The Repo

Add the repo to your sources.list (for droidian & ubports, this step can be skipped) Replace DISTRO="jammy" with your current target. Options: focal, jammy, ubuntu-devel, bookworm, bullseye, sid

export DISTRO="jammy"
sudo curl --proto '=https' --tlsv1.2 -Sf https://repo.waydro.id/waydroid.gpg --output /usr/share/keyrings/waydroid.gpg && \
echo "deb [signed-by=/usr/share/keyrings/waydroid.gpg] https://repo.waydro.id/ $DISTRO main" > ~/waydroid.list && \
sudo mv ~/waydroid.list /etc/apt/sources.list.d/waydroid.list && \
sudo apt update
  • Install Waydroid
sudo apt install waydroid -y

Then start Waydroid from the applications menu.


GPU Requirements⚓︎

Waydroid currently works best with Intel GPUs. They should work out of the box.

AMD GPUs appear to have mixed results (in particular, the RX 6800 does not work); if Waydroid does not work you might also want to try the NVIDIA instructions below.

NVIDIA GPUs do not work currently, but there are 2 workarounds:

  • Switch to integrated graphic card if possible;
  • Use software rendering:

    • Make sure that you have already run waydroid init (see #Installation section)
    • Edit /var/lib/waydroid/waydroid_base.prop and set:

      ro.hardware.gralloc=default
      ro.hardware.egl=swiftshader
      
    • Restart the waydroid-container.service.

Install and Run Android Applications⚓︎

Waydroid is able to perform a few various operations found by using the waydroid app -h command:

usage: waydroid app [-h] {install,remove,launch,list} ...

optional arguments:
  -h, --help            show this help message and exit

subaction:
  {install,remove,launch,list}
    install             push a single package to the container and install it
    remove              remove single app package from the container
    launch              start single application
    list                list installed applications

To launch an app ising CLI, you would want to use the waydroid app launch command:

waydroid app launch xyz.apk

You can also install Android applications from the command line.

waydroid app install xyz.apk

The apk files you will sometimes find on the internet tend to only have arm support, and will therefore not work on x86_64.

You may want to install F-Droid to get applications graphically. Note that the Google Play Store will not work as is, because it relies on the proprietary Google Play Services, which are not installed.

Waydroid Prop Options⚓︎

Waydroid uses various properties in order to tell the underlying Android system how to behave in a few places. To do this, we use the waydroid prop command. To unset a prop, waydroid prop set <property> ""

Properties⚓︎
  • waydroid prop set persist.waydroid.multi_windows true/false (bool) Enables/Disables persistent freeform window mode
  • waydroid prop set persist.waydroid.invert_colors true/false (bool) Swaps the color space from RGBA to BGRA (only works with our patched mutter so far)
  • waydroid prop set persist.waydroid.height_padding 0-9999 (int) Adjust Height padding (30 will allow you to use navbar on mobile)
  • waydroid prop set persist.waydroid.width_padding 0-9999 (int) Adjust width padding
  • waydroid prop set waydroid.display_width 0-9999 (int) (auto-generated) Auto generated size of Waydroid screen
  • waydroid prop set persist.waydroid.width 0-9999 (int) Used for user to override desired resolution
  • waydroid prop set persist.waydroid.suspend true/false (bool) Keep Waydroid awake and do not let container sleep

Setting up a shared folder⚓︎

Setting up a shared folders to copy files from source to target.

Source files will be accessible from Target but not Editable.

sudo mount --bind <source> <target>

We will setup the host folder to copy files from the host, and the droid folder to copy files from waydroid.

Example:

  • Copy files from Linux to Waydroid:

    • on Waydroid Create a /Waydroid/host folder
    • on Host Create a ~/Waydroid/host folder
      mkdir ~/Waydroid/host
      
    • Bind Linux folder to the Android one
      sudo mount --bind ~/Waydroid/host ~/.local/share/waydroid/data/media/0/Waydroid/host
      
  • Copy files from Waydroid to Linux :

    • on Waydroid Create a /Waydroid/droid folder
    • on Host Create a ~/Waydroid/droid folder
      mkdir ~/Waydroid/droid
      
    • Bind Linux folder to the Android one
      sudo mount --bind ~/.local/share/waydroid/data/media/0/Waydroid/droid ~/Waydroid/droid
      

Clipboard⚓︎

Replace dnf with the appropriate command for your distro.

  • Install pip
sudo dnf install pip
  • install wl-clipboard
sudo dnf install wl-clipboard
  • install pyclip
pip install --upgrade pip pyclip
  • add $HOME/.local/bin/ to your $PATH

add

export PATH="$PATH:$(du "$HOME/.local/bin/" | cut -f2 | tr '\n' ':' | sed 's/:*$//')"

to the appropriate file .zshenv or .bashrc or .profile

  • reboot the system