Linux v0.3.0 Released

DualCPY

Dual-screen Scrcpy launcher for the AYN Thor handheld.
Two displays. One window. Full control on Linux.

bash
$
DualCPY — Docked
Display 0 120 FPS
LIVE
Display 4 60 FPS
LIVE
Control Panel
DOCK WINDOWS
SCREENSHOT
CONNECT ●
Scale
0.6×
Scroll to explore
2 Simultaneous Displays
120 FPS (Top Display)
X11 + Wayland Support
GPL v3 Open Source

Everything you need to
mirror both screens

A complete toolkit for the AYN Thor power user. Every feature is built specifically for Linux.

Dual-Screen Support

Simultaneously mirrors both Display 0 and Display 4 of the AYN Thor handheld — fully independent, fully live.

X11 Window Docking

Reparents both scrcpy windows into a single container using python-xlib. One seamless window, two displays.

Wayland Support

Runs on Wayland as independent floating windows. Docking requires X11, but everything else works seamlessly.

Wireless ADB

Built-in wireless connection overlay — Android 11+ pairing code flow, Quick Connect, and TCP/IP legacy mode. No extra windows.

Network Scanner

Automatically discovers ADB-enabled Android devices on your local subnet. No manual IP hunting required.

Layout Presets

Save and restore named screen positions and scale settings. Switch between streaming, gaming, and recording setups instantly.

Screenshot Capture

Captures both docked displays into a single composite image. Perfect for sharing your AYN Thor gameplay or UI.

Scale Control

Adjust scrcpy output resolution in real time via the UI slider. Balance quality and performance on the fly.

Swap Screens

Flip which display appears on top vs. bottom with a single button. Persisted between sessions.

Per-Display FPS

Top display runs at 120 FPS, bottom at 60 FPS. Wireless mode auto-optimises both for network performance.

Auto-Install

Missing adb or scrcpy? DualCPY installs them automatically via pacman or apt on first launch.

Wireless Optimization

Automatically detects WiFi connections and reduces FPS + applies optimised settings to prevent stuttering and dropped frames.

How DualCPY works

01

Connect your AYN Thor

Connect via USB with USB Debugging enabled, or use the built-in wireless ADB overlay to pair over WiFi.

02

Launch DualCPY

DualCPY starts two scrcpy processes — one per display — and places the control panel on the right of your screen.

03

Dock, arrange & capture

On X11, dock both windows into a single container. Save your layout as a preset. Screenshot or stream at will.

Up and running in
minutes

1. System dependencies
# Arch Linux / Manjaro / CachyOS
sudo pacman -S android-tools scrcpy python-pygame python-xlib
2. Clone & install
git clone https://github.com/DrSkyfaR/ThorCPY-Linux.git
cd ThorCPYLinux
pip install -r requirements.txt
3. Run
python3 main.py
1. System dependencies
# Debian / Ubuntu
sudo apt install adb scrcpy python3-dev python3-xlib python3-pygame
2. Clone & install
git clone https://github.com/DrSkyfaR/ThorCPY-Linux.git
cd ThorCPYLinux
pip install -r requirements.txt
3. Run
python3 main.py
Requires Python 3.8–3.13 · Linux with X11 (recommended) or Wayland · AYN Thor with USB Debugging enabled

Display Server

X11 (docking) or Wayland (floating)

Device

AYN Thor with USB Debugging enabled

Python

Version 3.8 – 3.13

Dependencies

scrcpy · adb · python-pygame · python-xlib

Changelog

Latest
v0.3.0 March 18, 2026
Added
  • Wireless connection dialog with Quick Connect and Android 11+ pairing-code flow
  • Support for legacy TCP/IP wireless mode (Android 10 and below)
  • Automatic wireless connection prompt when no USB device detected
  • Network scanner — auto-discovers ADB devices on the local subnet
  • X11 window docking via X11DockManager using python-xlib reparenting
  • StatelessDockManager as no-op fallback for Wayland sessions
  • Swap screens toggle — persisted to config
  • Layout mode switching (DUAL / TOP / BOTTOM)
  • Auto adb/scrcpy install via pkexec (pacman and apt-get)
  • SIGINT / Ctrl+C signal handling with clean shutdown
Changed
  • --window-borderless flag now only applied on Windows
  • Loading screen skipped on Linux to avoid Pygame display-init race condition
  • Process force-kill falls back to SIGKILL on Linux
Fixed
  • Bottom screen transparency issue in screenshots
  • Improved window handling stability
v0.2.0 January 31, 2026
Added
  • Scrcpy scale adjustment
  • Better logging and error handling
Fixed
  • Control Panel crash on Windows 10, improved Windows 10 compatibility
  • Refined codebase and improved window management safeguards
v0.1.1 January 28, 2026
Added
  • Incompatibility warning for Windows 10
  • Thread safety for window focus handling
  • Improved dark mode support
Fixed
  • Spacing on "DOCK WINDOWS" button text
  • Debounce and throttle sync() calls
v0.1.0 January 26, 2026
Added
  • Initial release — dual-screen scrcpy docking
  • Layout presets system
  • Screenshot capture
  • Logging system with daily rotation
  • PyInstaller build support