A native Linux compatibility layer for the official NetEase UU Remote client.
English · 简体中文
Important
uur does not redistribute UU Remote. It downloads the official Windows
installer from NetEase after the user explicitly accepts the upstream EULA.
| Capability | Linux integration |
|---|---|
| Control other computers | Official UU interface and media stack under Wine |
| Allow this Linux computer to be controlled | ScreenCast portal/PipeWire capture and native Linux input |
| X11 and Wayland | Capability detection instead of distribution or desktop allowlists |
| Clean lifecycle | Bridges start with UU and stop with its managed Wine prefix |
| Native tools | Linux PTY terminal, wallpaper, Quick Launch, proxy, and sleep inhibition |
| Upstream resilience | API-level runtime adapters; no version/RVA patch matrix |
| Distribution | Arch/pacman, deb, rpm, portable tar.zst, and an AUR recipe |
After installing any package, run these commands in this order:
# 1. Inspect the current Wine, portal, PipeWire, and input capabilities.
uur doctor
# 2. Accept NetEase's EULA, download the official client, and create the prefix.
uur setup --accept-eula
# 3. Start capture, input, the managed Wine services, and the UU interface.
uur runuur setup without --accept-eula intentionally stops after printing the
official EULA URL. It does not install the proprietary client.
Many capabilities remain untested; runtime testing so far covers Arch Linux, KDE Plasma, and Wayland.
After setup, UU Remote is also available from the application menu. The menu
entry launches the complete uur run session.
Download the newest package for the system from the GitHub Releases page. Native recipes and release artifacts share one version and filesystem layout.
Install a downloaded release package with pacman:
sudo pacman -U ./dist/uur-0.1.4-1-x86_64.pkg.tar.zstAfter the package is available from AUR:
paru -S uursudo apt install ./uur_0.1.4_amd64.debsudo dnf install ./uur-0.1.4-1.x86_64.rpmOn systems with different RPM dependency names, install the dependencies manually or use the portable archive.
sudo tar --zstd -C / -xf ./uur-0.1.4-linux-x86_64.tar.zstnix build
nix run . -- doctorThe flake also exports nixosModules.default; see Nix and NixOS.
Alpine edge can build the native musl package layout with:
docker build -f packaging/alpine/Dockerfile .An APKBUILD is included under packaging/alpine/.
cargo build --release --locked
./hook/build.sh
./capture/build.sh
./scripts/install-user.shThe source build requires Rust, a C compiler, PipeWire development files,
pkg-config, and the MinGW-w64 x86_64 toolchain.
Gentoo, Void Linux, Slackware, Solus, ALT Linux, Exherbo, Clear Linux, Mageia,
OpenMandriva, PCLinuxOS, Venom Linux, Guix System, and other package ecosystems
can use the portable archive or the shared packaging/stage.sh source layout.
See Platform support and usage for distribution families, portal choices, X11/Wayland sessions, standalone window managers, immutable systems, and libc boundaries.
uur run # Start or show the managed UU session
uur doctor # Read-only environment diagnostics
uur upstream check # Check the official NetEase release feed
uur autostart enable # Optional: start after graphical login
uur autostart disable # Remove the managed login entry
uur wol status # Inspect the physical wired adapter's WOL state
uur display status # Monitor, window, or portal virtual source
uur display source virtual
uur stop # Stop only uur's helpers and Wine prefixIf UU was started from the desktop, choose Quit from the launcher's
application actions. When running from a terminal, use uur stop or press
Ctrl+C.
Diagnostic input overrides:
UUR_INPUT_BACKEND=portal uur run
UUR_INPUT_BACKEND=uinput uur run
UUR_INPUT_BACKEND=xtest uur runUse the default auto mode after troubleshooting.
- A Wayland session with both RemoteDesktop and ScreenCast portals uses one combined, unprivileged session for input and video.
- A Wayland session with only ScreenCast uses PipeWire for video and uinput for full-desktop input.
- An X11 session uses Wine's native X11 capture and XTest input.
- XTest under XWayland is only a partial fallback and is not advertised as full Wayland desktop control.
Run uur doctor instead of inferring support from a desktop or distribution
name.
Screen capture, keyboard, pointer, lifecycle management, wallpaper metadata,
native terminal, Quick Launch, proxy synchronization, suspend inhibition, and
host WOL configuration are implemented. Quick Launch exposes the XDG
application catalog through UU and resolves each request back to gio launch;
it never accepts an arbitrary command from Wine. Other UU features require
native Linux service adapters rather than being left inside the Wine prefix:
| Feature | Direction |
|---|---|
| Terminal | Authenticated UU transport → native PTY and the user's login shell |
| Quick Launch | UU application inventory → authenticated XDG desktop activation |
| Wake-on-LAN setup | uur wol → real wired interface and NetworkManager profile |
| Received files | Validated staging → the user's XDG Downloads directory |
| Sending files | File portal or explicit CLI selection → bounded native staging |
| Port mapping | Policy-controlled native TCP/UDP broker; loopback by default |
| Clipboard and phone text | RemoteDesktop Clipboard portal with X11 fallback |
The protocol, security boundaries, lifecycle, and implementation phases are in Native service adapters.
Official UU Remote client (managed Wine prefix)
│
├─ Windows API adapter ── authenticated input/control protocol
│
└─ GDI/DXGI capture boundary ◄── private triple-buffer frame transport
▲
Linux supervisor ── ScreenCast portal ── PipeWire
│
└─ RemoteDesktop portal / uinput / XTest
The Windows ABI adapter is small C code. Session policy, desktop integration, capability selection, and lifecycle management are implemented in Rust.
Start with:
uur doctorSession logs are stored at:
${XDG_STATE_HOME:-$HOME/.local/state}/uur/session.log
For Wine diagnostics only:
WINEDEBUG=+loaddll uur runNormal runs suppress Wine's non-actionable fixme output.
- Architecture
- Platform support and usage
- Capture protocol
- Native service adapters
- Feature parity
- Upstream adaptation
- Package installation
- Nix and NixOS
- Windows feature map
- Video and display backends
The project learned from GuoWQ222/uu-remote-for-linux, lachlanchen/uu-remote-ubuntu-bridge.
NetEase UU Remote is proprietary software of NetEase. uur is an unofficial
compatibility project and is not affiliated with NetEase.