Waydroid template

It seems that pulseaudio or pipewire-pulse package is required for Waydroid to work. You can install it like this:

apt install -y --no-install-recommends pipewire-pulse

I’ve updated the guide.

Nice catch ! That works :ok_hand:
Thank you for your time :smiley:

(There is a little typo in the command. install is written twice)

1 Like

You’re right, thanks for the correction.

Is there an installation script which has incorporated all the findings in this discussion? I’m honest… I just want to run the script and start working with it without typos and other issues.

I’ve updated the guide to add an easy way to install the Waydroid template.

Is there a fast way to copy this to root terminal of sway

apt install -y ca-certificates extrepo
https_proxy=http://127.0.0.1:8082 http_proxy=http://127.0.0.1:8082 extrepo enable waydroid
apt update
apt install -y sway qubes-core-agent-networking waydroid pipewire-qubes curl unzip build-essential libx11-dev libxtst-dev xclip wl-clipboard pip python3-venv x11-utils thunar qubes-core-agent-thunar
mkdir -p /etc/systemd/system/waydroid-container.service.d
cat << ‘EOF’ | tee /etc/systemd/system/waydroid-container.service.d/override.conf >/dev/null
[Unit]
ConditionPathExists=!/run/qubes/this-is-templatevm
EOF
curl --proxy http://127.0.0.1:8082/ --tlsv1.2 --proto =https --max-time 180 https://codeload.github.com/cdown/clipnotify/zip/refs/heads/master -o clipnotify-master.zip
unzip -j clipnotify-master.zip -d clipnotify
cd clipnotify
mkdir -p /opt/bin
sed -i “s|/usr/local|/opt|g” Makefile
make
make install
echo ‘export PATH=“/opt/bin:$PATH”’ >> /etc/profile.d/opt-bin.sh
echo “exec /opt/bin/x11-wl-clip.sh” > /etc/sway/config.d/99-x11-wl-clip.conf
mkdir -p /opt/bin
cat << ‘EOF’ | tee /opt/bin/x11-wl-clip.sh >/dev/null
#!/bin/bash
x11_wl=‘while DISPLAY=“:0” clipnotify -s clipboard; do xclip -d “:0” -selection clipboard -o | wl-copy; done’
wl_x11=‘wl-paste -nw xclip -d “:0” -selection clipboard’
eval “${x11_wl}” &>/dev/null &
eval “${wl_x11}” &>/dev/null
pstree -A -p $$ | grep -Eow “[0-9]+” | xargs kill &>/dev/null
EOF
chmod +x /opt/bin/x11-wl-clip.sh
python3 -m venv /opt/venv/pyclip
source /opt/venv/pyclip/bin/activate
pip install --proxy http://127.0.0.1:8082 pyclip
deactivate
echo ‘export PATH=“$PATH:/opt/venv/pyclip/bin”’ >> /etc/profile.d/python-venv.sh
echo ‘export PYTHONPATH=“$PYTHONPATH:/opt/venv/pyclip/lib/python3.11/site-packages”’ >> /etc/profile.d/python-venv.sh
cat << ‘EOF’ | tee /etc/systemd/system/waydroid-firewall.service >/dev/null
[Unit]
ConditionPathExists=!/run/qubes/this-is-templatevm
PartOf=waydroid-container.service
After=waydroid-container.service
BindsTo=waydroid-container.service
Requires=qubes-iptables.service
After=qubes-iptables.service
BindsTo=qubes-iptables.service
[Service]
Type=oneshot
ExecStart=/usr/bin/bash -c “if (nft create chain ip qubes waydroid-input) &>/dev/null; then nft add rule ip qubes custom-input jump waydroid-input; fi”
ExecStart=/usr/bin/bash -c “if (nft create chain ip qubes waydroid-forward) &>/dev/null; then nft add rule ip qubes custom-forward jump waydroid-forward; fi”
ExecStart=/usr/sbin/nft add rule ip qubes waydroid-input iifname “waydroid0” meta l4proto {tcp, udp} th dport { 53, 67 } accept
ExecStart=/usr/sbin/nft add rule ip qubes waydroid-forward iifname “waydroid0” oifgroup 1 accept
ExecStart=/usr/sbin/nft add rule ip qubes waydroid-forward oifname “waydroid0” iifgroup 1 accept
ExecStop=/usr/sbin/nft flush chain ip qubes waydroid-input
ExecStop=/usr/sbin/nft flush chain ip qubes waydroid-forward
RemainAfterExit=yes
[Install]
WantedBy=waydroid-container.service
EOF
systemctl daemon-reload
systemctl enable waydroid-firewall.service
echo “default_border none” > /etc/sway/config.d/94-disable-window-titlebar.conf
perl -0777 -i -pe ‘s/(^\hbar\s|\v\hbar\s)({(?:(?>[^{}]+)|(?-1))*})//g’ /etc/sway/config
cat << ‘EOF’ | tee /opt/bin/sway-waydroid.sh >/dev/null
#!/bin/bash
sway &>/dev/null &
WAYLAND_DISPLAY=“wayland-1” XDG_SESSION_TYPE=“wayland” DISPLAY=“:1” waydroid first-launch &>/dev/null &
for i in $(seq 1 3);
do
if xwininfo -name “wlroots - X11-1” &>/dev/null; then
break
fi
sleep 1
done
while xwininfo -name “wlroots - X11-1” &>/dev/null; do
sleep 2
done
WAYLAND_DISPLAY=“wayland-1” XDG_SESSION_TYPE=“wayland” DISPLAY=“:1” waydroid session stop &>/dev/null
pstree -A -p $$ | grep -Eow “[0-9]+” | xargs kill &>/dev/null
EOF
chmod +x /opt/bin/sway-waydroid.sh
cat << ‘EOF’ | tee /usr/share/applications/Waydroid-Sway.desktop >/dev/null
[Desktop Entry]
Type=Application
Name=Waydroid-Sway
Exec=/opt/bin/sway-waydroid.sh
Icon=waydroid
Categories=X-WayDroid-App;
X-Purism-FormFactor=Workstation;Mobile;
EOF
cat << ‘EOF’ | tee /opt/bin/waydroid-install-apk >/dev/null
#!/bin/sh
WAYLAND_DISPLAY=“wayland-1” XDG_SESSION_TYPE=“wayland” DISPLAY=“:1” waydroid app install $1
EOF
chmod +x /opt/bin/waydroid-install-apk
cat << ‘EOF’ | tee /opt/bin/waydroid-upgrade >/dev/null
#!/bin/sh
https_proxy=http://127.0.0.1:8082 http_proxy=http://127.0.0.1:8082 waydroid upgrade
EOF
chmod +x /opt/bin/waydroid-upgrade

You don’t need to paste it in the terminal in sway.
You need to open XTerm window in your Waydroid template by running this command in dom0 terminal:

qvm-run -u root d12m-waydroid xterm &

Copy the commands in browser → copy browser qube clipboard to global clipboard → copy from global clipboard to the Waydroid template qube clipboard (Xterm window) → paste the commands in the XTerm from clipboard using Shift+Insert shortcut.

Not able to post anything to this terminal, even tried to copy text to file and than move file to template and dom0 no chance

Select the commands in browser.
Ctrl+C
Ctrl+Shift+C
Open the XTerm window in Waydroid template
Ctrl+Shift+V
Shift+Insert

Hi all,

I’m running Waydroid and facing issues with some ARM apps not showing up in the Play Store. I found the Waydroid Script on GitHub at GitHub - casualsnek/waydroid_script: Python Script to add OpenGapps, Magisk, libhoudini translation library and libndk translation library to waydroid ! and have a couple of questions:

  1. Is Libhoudini necessary for running ARM apps on Waydroid?
  2. Can anyone provide a simple guide or steps to integrate Libhoudini with Waydroid using this script?

Any advice on improving app compatibility would also be appreciated. Thanks!

Did you install magisk and Smart dock with this because some things didn’t work for me. I would clone the VM and than Install libhoudine and see what it makes

Is this incomplete? I can’t find the part int where you actually install waydroid in the template

It’s complete.
The waydroid is installed in this part:

That’s strange, it doesn’t show me this part in your original post. only here in your citation. When I hit the “go to the quoted post” button of the citation it shows me everything except this part.

Thanks for the quick reply

Click on:

Easy way to configure Waydroid template for Qubes OS 4.2 with in-VM kernel, audio support and Thunar installed.

or:

Advanced way to configure Waydroid template for fine-tuning.

to expand the text.

Is it possible to use Orbot or Tor Browser in Waydroid without connecting to Tor again (when already using sys-whonix as net-vm)…? Or would you use Orbot in Waydroid and connect the Waydroid Qube to sys-firewall?

It’s not supported by Tor Browser and Orbot.
What do you want to achieve?

I want the Waydroid Qube using Tor and I thought it would be best using Tor Browser when surfing… Whonix Workstation also uses Tor Browser with Tor Connection from sys-whonix so I thought it would be the way to go for a Android Qube as well…

So instead connecting Waydroid Qube to sys-firewall and use Orbot and Tor Browser in the Waydroid Qube?

Just connect the Waydroid qube to the sys-whonix if you want the apps there to go through Tor.
Why do you want to use the Tor Browser in the Waydroid instead of using Tor Browser in the Whonix Workstation qube? I don’t see any benefit.

Your are right, but thanks to your comment I ditched another plan to use a private messenger on waydroid… Just looked and found out there is a linux .deb and .rpm also available!

Thank you!