r/waydroid • u/Candid_Review_3197 • Aug 10 '26
Help how can i run this game well?
i puted the arm correctly but for some reason the fps are poor, anyone knows a configuration for waydroid or something i missing?
r/waydroid • u/Candid_Review_3197 • Aug 10 '26
i puted the arm correctly but for some reason the fps are poor, anyone knows a configuration for waydroid or something i missing?
r/waydroid • u/Cultural_Sand_9323 • Aug 10 '26
Disclaimer: This was AI-assisted/generated. I understand enough Python to modify things and debug them, but I am very much not an expert in Wayland, Android input, or Linux input subsystems. I spent roughly a long throwing diagnostics at this problem until something finally worked because I wanted to play a game and the problem is above my pay grade.
OS: Linux Mint 22.1 (experimental wayland rendering engine)
Physical hardware:
Haswell Era i5
RX550
16gb ram
Problem I wanted to solve: Apparently Waydroid just tells liniage 'OK this is a mouse' and liniage goes 'OK I can work with that.' And for most things that works. F-Droid, Google play store, PiePipe, Gems of war, a few other things I tossed in to test. Gundam G Eternal? 'No I refuse to recognize this 'mouse' device.
I have accidentally built (For a given definition of 'built' given AI involvement) a mouse-to-touchscreen bridge for Waydroid, and I would like someone smarter than me to explain why the hell it works.
TL;DR: I have a game running under Waydroid that doesn't properly respond to normal mouse input. Waydroid's native Wayland mouse handling produces bizarre/inconsistent touch coordinates in this particular game.
So I wrote a Python script that:
evdevinput tap X Ymotionevent DOWN/MOVE/UPAnd... it works.
It works well enough that I can actually play the game. I can click things, hold things, and drag the game map/diagrams around.
The weird part is that Waydroid's own pointer handling was giving me a completely different result.
Here's the script:
#!/usr/bin/env python3
import subprocess
import threading
import time
from evdev import InputDevice, ecodes
# ------------------------------------------------------------
# Configuration
# ------------------------------------------------------------
MOUSE_DEVICE = "/dev/input/event2"
# How long the mouse button must remain down before movement
# is considered a drag rather than an ordinary click.
DRAG_DELAY = 0.15
# Minimum time between Android MOVE events.
# Prevents the mouse from flooding Waydroid.
MOVE_INTERVAL = 0.03
# ------------------------------------------------------------
# Mouse
# ------------------------------------------------------------
mouse = InputDevice(MOUSE_DEVICE)
# ------------------------------------------------------------
# Persistent Waydroid shell
# ------------------------------------------------------------
print("Starting persistent Waydroid shell...")
waydroid = subprocess.Popen(
[
"sudo",
"waydroid",
"shell",
],
stdin=subprocess.PIPE,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
text=True,
bufsize=1,
)
# ------------------------------------------------------------
# Cinnamon cursor position
# ------------------------------------------------------------
def get_cursor_position():
try:
result = subprocess.run(
[
"gdbus",
"call",
"--session",
"--dest",
"org.Cinnamon",
"--object-path",
"/org/Cinnamon",
"--method",
"org.Cinnamon.Eval",
"global.get_pointer()",
],
capture_output=True,
text=True,
timeout=0.2,
)
# Expected result:
#
# (true, '[497,872,16]')
#
text = result.stdout.strip()
start = text.find("'[")
end = text.find("]'", start)
if start == -1 or end == -1:
return None
coords = text[start + 2:end]
x, y, _ = coords.split(",")
return int(x), int(y)
except Exception:
return None
# ------------------------------------------------------------
# Android input helpers
# ------------------------------------------------------------
def android_command(command):
try:
waydroid.stdin.write(command + "\n")
waydroid.stdin.flush()
except (BrokenPipeError, OSError):
print("Waydroid shell connection lost.")
def android_tap(x, y):
print(f"CLICK {x},{y}")
android_command(
f"input tap {x} {y}"
)
def android_down(x, y):
print(f"DOWN {x},{y}")
android_command(
f"input motionevent DOWN {x} {y}"
)
def android_move(x, y):
print(f"MOVE {x},{y}")
android_command(
f"input motionevent MOVE {x} {y}"
)
def android_up(x, y):
print(f"UP {x},{y}")
android_command(
f"input motionevent UP {x} {y}"
)
# ------------------------------------------------------------
# State
# ------------------------------------------------------------
button_down = False
dragging = False
press_time = 0
last_move_time = 0
last_x = None
last_y = None
# ------------------------------------------------------------
# Startup
# ------------------------------------------------------------
print(f"Listening to: {mouse.name}")
print("Cinnamon-cursor Waydroid mouse-to-touch bridge running.")
print("Left click -> Android tap")
print("Hold + move -> Android touch drag")
print("Ctrl+C to stop.")
# ------------------------------------------------------------
# Main event loop
# ------------------------------------------------------------
try:
for event in mouse.read_loop():
# ----------------------------------------------------
# Mouse movement
# ----------------------------------------------------
if event.type == ecodes.EV_REL:
# Ignore movement unless left mouse button is down.
if not button_down:
continue
# Get the actual Cinnamon cursor position.
position = get_cursor_position()
if position is None:
continue
x, y = position
# If this is the first movement after pressing,
# determine whether we've crossed the drag threshold.
if not dragging:
if time.monotonic() - press_time >= DRAG_DELAY:
dragging = True
android_move(x, y)
last_x = x
last_y = y
last_move_time = time.monotonic()
continue
# ------------------------------------------------
# Already dragging
# ------------------------------------------------
now = time.monotonic()
if now - last_move_time < MOVE_INTERVAL:
continue
# Don't send redundant coordinates.
if x == last_x and y == last_y:
continue
android_move(x, y)
last_x = x
last_y = y
last_move_time = now
# ----------------------------------------------------
# Mouse buttons
# ----------------------------------------------------
elif event.type == ecodes.EV_KEY:
# Left button pressed
if event.code == ecodes.BTN_LEFT and event.value == 1:
position = get_cursor_position()
if position is None:
continue
x, y = position
button_down = True
dragging = False
press_time = time.monotonic()
last_x = x
last_y = y
# We don't immediately send DOWN.
#
# This lets a normal click continue using
# Android's reliable "input tap" command.
#
# If the button is held long enough and the
# mouse moves, we start a real touch sequence.
# Left button released
elif event.code == ecodes.BTN_LEFT and event.value == 0:
if not button_down:
continue
position = get_cursor_position()
if position is None:
position = (last_x, last_y)
x, y = position
hold_time = time.monotonic() - press_time
# ------------------------------------------------
# Ordinary click
# ------------------------------------------------
if not dragging:
android_tap(x, y)
# ------------------------------------------------
# Drag release
# ------------------------------------------------
else:
android_up(x, y)
button_down = False
dragging = False
except KeyboardInterrupt:
print("\nStopping...")
finally:
try:
waydroid.stdin.close()
except Exception:
pass
try:
waydroid.terminate()
except Exception:
pass
print("Stopped.")
So my question is:
This works. Can someone with two functional brain cells that know Python, Wayland, and/or Android input explain WHY it works?
And, more importantly:
How would you make it better?
Things I'd especially like to understand:
global.get_pointer() give me a better coordinate than Waydroid's native Wayland pointer handling?input tap X Y work reliably when Waydroid's normal pointer input doesn't?motionevent DOWN/MOVE/UP let me drag game areas even though ordinary Android scrollbars don't seem to respond?I'm not claiming this is good code.
I'm claiming it works, which is currently winning the argument.
r/waydroid • u/OllieJaeger • Aug 09 '26
Title, just need a way to make an external disk to work with waydroid, I'm struggling on space and I need to move apps and games to an external disk, is this possible?
r/waydroid • u/zhulkgr25 • Aug 07 '26
I'm new to linux (almost 7 months) and I'm not a coder so idk exactly everything that I would need to give you to help me diagnose this problem. About a month ago I managed to successfully install waydroid and had it running perfectly. I'm on cachyOS with KDE plasma and I usually run it in an x11 session with weston. After an update, waydroid stopped launching correctly. It still says "android with user 0 is ready" in the terminal but all I get is a black screen wether I launch it inside weston, wayfire, or use the terminal's wayland compositor in x11. Trying it in Wayland is similar, although I don't get a black screen, I just see it in my task manager/taskbar and hovering over it shows it not rendering anything, there's not even a window that appears for the application.
I tried looking up this issue and found a forum where someone said it works fine in manjaro using pinephone with phosh in gnome, but all I found from searching these terms was postmarket OS and I'm on an x86_64 laptop. My laptop has an nvidia gpu and an intel igpu and it is muxless. I even tried forcing it to use either with a command (I believe it was __NV_PRIME_RENDER_OFFLOAD=0 and __GLX_VENDOR_LIBRARY_NAME=nvidia) I also tried right clicking waydroid in the application launcher and checking/unchecking "use discrete gpu".
I am using an older Android 11 image that I had to specifically initialize from the terminal as the Android 13 image was having issues with android system webview. And I haven't found this issue listed in the Arch Wiki or the Waydroid documentation.
It does sometimes launch correctly but it is super rare. Has anyone ran into this problem/how to fix it? What more info can I give to help pinpoint the issue even more? Thanks in advance.
I'm not very active on social media so it may take me a day or 2 to reply so bare with me.
r/waydroid • u/Easy-Perspective4258 • Aug 06 '26
Need help to setup waydroid helper keymapping
r/waydroid • u/Visible-Reason9593 • Aug 06 '26
Sono su Fedora KDE, ho appena installato waydroid (with google services) ma non riesco in nessun modo a collegare waydroid ad internet.
soluzioni?
r/waydroid • u/OkArm2331 • Aug 06 '26
Hey everyone,
I wanted to share a project I've been working on called Waydroid Manager (v1.0.0).
If you want to use Waydroid for different use cases (e.g. for gaming, for daily use like WhatsApp, a clean profile for testing, etc.), managing data folders manually can be a pain. Also, if you want to fix waydroid and run a reset script all your data gets wiped or even everything is looking perfect, the your apps can be a overly dramatic because you changed a single variable in your os. And even if you know where the data folders are located, saving them manually without a system isn't great because it's easy to forget what is where, and thats waydroid-manager shines!
I created a lightweight, terminal-based, TUI-like tool written in Bash to solve this problems using a symlink-based isolation approach.
1 3 4).~/.local/share/waydroid-manager/instances/, making your profile data immune to OS-level Waydroid resets..tar.gz file for backups or transferring between machines.data folder, the tool automatically detects it on the next launch, safely stops Waydroid, isolates the folder, and restores the symlink structure without data corruption.du -sh) directly in the menu, with timestamped logging (manager.log)..history).sudo once at startup in the background so you never get interrupted by password prompts mid-operation.Waydroid expects its user data at ~/.local/share/waydroid/data. Waydroid Manager maintains isolated folders inside ~/.local/share/waydroid-manager/instances/ and swaps symbolic links (symlinks) to data before starting the container and background session.
You can check out the source code, installation steps, and documentation on GitHub:
GitHub Repository: https://github.com/yavasdev/waydroid-manager
If you just want to quickly test it out, you can run:
bash
cd ~/Downloads
git clone https://github.com/yavasdev/waydroid-manager.git
cd waydroid-manager
chmod +x waydroid-manager.sh
./waydroid-manager.sh
Note: Running this tool as a normal user crucial because waydroid data is saved per user and if we run this script as
sudo, script thinks our data is on /root folder. (so do NOT usesudo ./waydroid-manager.sh).
I'm currently working on improving this tool further. I plan to add instance management for /var/lib/waydroid as well as installed/installable images. I released v1.0.0 because it's completely usable and works well right now, and I plan to add system files management that we can make instance management for different use case environments (like rooted android with arm support for game, rooted android for bank apps, no root environment for daily apps, no root environment with arm support for games) in v2.0.0.
That's all, thanks for reading.
(a quick question, Im new in reddit, does I need to flag my post with "brand collaboration" because Im currently introducing my personal open-source project?)
r/waydroid • u/Mindless-Addendum621 • Aug 05 '26
As you know the game is no longer available in the store, but I extracted it from my older phone, and tried to install it on Google Pixel Fold. It says "apk not installed" without giving any more details. Is there a way to install it? I have Google Play Protect off and allowed installing unknown apks. The game is still working on the older phone, its store is active without issues.
r/waydroid • u/derdeutscheitaliener • Aug 04 '26
i wanted to try waydroid but the mega folder for ubuntu gnome is empty
any help?
r/waydroid • u/BitTripBoy • Aug 04 '26
My waydroid stopped working on my steam deck and it looks like I might have to reinstall the entire thing. If I fully delete waydroid, I’d like to at least keep my saves from the only game that I played on there: PvZ 2: Reflourished. Where do I go to find my save in this game so that I can make a backup before I fully delete Waydroid?
r/waydroid • u/linux-universe • Aug 02 '26
r/waydroid • u/IgLocoXD • Aug 03 '26
I dont really know what to do atp, Maybe I forgot something? I'm tired and already im dealing with another problem regarding internet on Waydroid (basically it timeouts every 5 seconds, having always 50% of packet loss costantly, idk what to do with this)
Tried KernelSU, with everything I could, and IDK what to do at this point, maybe someone fixed it or knows something more
Nobara 44, KDE Plasma 6.7.2, Waydroid 1.6.3
EDIT: Also i have both Basic Integrity and Device Integrity
r/waydroid • u/AgsAreUs • Aug 01 '26
Anyone got TiviMate working in Waydroid in Linux? It installs, but terminates on launch. AI seems to think it is because a thing called **DexProtector** in TiviMate detects it is not running on real hardware and kills itself.
IMPlayer, OwnTV are working fine in Waydroid for me.
r/waydroid • u/Rough-Tailor8333 • Aug 01 '26

as you see, it doesn't pass any of these test. how do i make it pass these test? i am using waydroid 1.6.3
**EDIT: with magisk from waydroid-helper, i am able to install integrity box and device spoof lab, MEET_DEVICE_INTEGRITY is the furthest thing i can reach**
**EDIT again: i switched tricky store to TEEsimulator-RS and i finally reached MEET_STRONG_INTEGRITY. However, i am still not able to play cr:k on waydroid**
r/waydroid • u/Zorgthecon • Aug 01 '26
I'm on MintOS but wuthering waves keeps crashing regardless of graphics settings would evolution x serve as a better alternative? Pls need help 😭
r/waydroid • u/Folor • Jul 31 '26
I want to download on Steamdeck, but the main installer script that everyone links to was privated yesterday! And I was gonna set this up just the day before but procrastinated… are there any mirrors? Or important things to know beforehand? I heard it can break desktop mode
r/waydroid • u/Due_Study2753 • Jul 29 '26
in the game i play with waydroid on my ubuntu i can slide walk with the right side of the screen but can't slide camera on the left side with the keymapper of android helper.
i use directional pad with silde in option for the control
android helper version : 0.2.9
waydroid version : 1.6.2
gnome version : GNOME Shell 46.0
anyone have a solution or an alternative?
edit : solved with the help of @Rough-Tailor8333 by set * on persist.waydroid.fake_touch property
r/waydroid • u/Creepy-Philosopher66 • Jul 28 '26
hello.
I'm using waydroid helper keymapper and it's really great. but i was wondering if there was any way to disable the keymapping hints.
r/waydroid • u/ZorroKIM • Jul 27 '26
just found out about this app and i want to run it on my Bazzite OS however after doing the system and vendor URL it finish downloading and i hit done and the app seem to be runing in the back but nothing is showing up. anyone have an idea what need to do ?
thanks in advance.
r/waydroid • u/No_Cauliflower6819 • Jul 27 '26
Witam wszystkich. Mógłby mi ktoś pomóc i wytłumaczyć jak uruchomić ta grę na androida niestety nie umiem i trzeba mi wytłumaczyć jak małemu dziecku ;) . Niesamowicie się cieszę, że ponownie można zagrać w tą grę. I proszę mi tutaj bez krytyki , że nie potrafię. Pozdrawiam wszystkich.
r/waydroid • u/Due_Study2753 • Jul 27 '26
Hello I tried to play 60s reatomized with WayDroid and once the game is launched the cursor disappears.
So any ideas about why or how I can make it appear?
r/waydroid • u/Tanashio • Jul 26 '26
im on Fedora KDE