High-performance, ultra-low latency virtual secondary display for Linux (Wayland & X11) streamed to Android tablets and phones.
π¬π§ English Β· πΈπ¦ Ψ§ΩΨΉΨ±Ψ¨ΩΨ©
- What is Orbiscreen?
- Why Orbiscreen vs Alternatives?
- Popular Use Cases
- Highlights
- Desktop Support
- Quick Start
- Commands
- Android App
- Architecture
- Project Structure
- Frequently Asked Questions (FAQ)
- Documentation
- Support & Community
- Contributing
- License
Orbiscreen turns a spare Android tablet or phone into a genuine secondary monitor for your Linux desktop. It creates an independent kernel-level virtual display via DisplayLink's evdi (COSMIC, GNOME, X11), or a compositor-native virtual monitor on KDE Plasma and wlroots with zero root required and no screen-share dialogs, streamed as MPEG-TS/H.264 with reverse multi-touch, mouse, keyboard, and pressure-sensitive stylus control natively on Android.
| Feature / Capability | Spacedesk | Deskreen | Weylus | Apple Sidecar | Orbiscreen |
|---|---|---|---|---|---|
| Linux Host Support | β (Windows only) | β (Web based) | β (Web based) | β (macOS only) | β Linux-first |
| Wayland & X11 Support | β | β | β Native Wayland & X11 | ||
| True Extended Display | β (Windows only) | β (Needs HDMI dummy) | β (Screen mirror only) | β (Apple only) | β Real Virtual Monitor |
| Native Android Client | β | β (Browser only) | β (Browser only) | β (iPad only) | β Native Jetpack Compose |
| Hardware Encoding | β | β | β | β NVENC & VA-API | |
| Ultra-Low Latency | ~50-80ms | ~150-300ms | ~80-120ms | ~30ms | β‘ ~25-40ms |
| Stylus Pressure & Tilt | β | β | β | β 4095 Levels (Krita/GIMP) | |
| Reverse Touch & Mouse | β | β | β | β Multi-touch, Mouse & Keys | |
| Zero Root (KDE & wlroots) | N/A | β | β | N/A | β Rootless (KWin / wlroots) |
| Open Source | β (Proprietary) | β (GPL-3.0) | β (AGPL-3.0) | β (Closed source) | β GPL-3.0 (100% Free) |
- π± Repurpose Spare Tablets & Phones: Don't let your older Android tablet (Samsung Galaxy Tab, Xiaomi Pad, Lenovo Tab) gather dust. Turn it into a high-utility second screen.
- π¨ Digital Drawing Tablet (Graphic Digitizer): Connect your tablet and stylus (S-Pen, capacitive, active stylus) to paint with native pressure sensitivity and tilt in Linux creative software like Krita, GIMP, Blender, and Inkscape.
- π» Dual Monitor On the Go: Travel light without carrying fragile external monitors. Extend your Linux laptop screen at coffee shops, flights, coworking spaces, or hotel desks.
- π₯οΈ Auto-Rotating Portrait Monitor: Rotate your device to vertical orientation for reading code, API documentation, terminal logs, or keeping Discord/Slack visible.
- β‘ Zero Wi-Fi Latency via USB: Plug in a USB cable; Orbiscreen's automatic ADB reverse tunnel delivers interference-free, ultra-low latency performance.
- XDG Desktop Portal Virtual Display API: Rootless virtual display creation on GNOME 46+ and KDE Plasma 6+ via ScreenCast
SourceType::Virtual, with automatic EVDI fallback - Graphic Digitizer with Stylus Hover & Pressure: 4095 pressure levels, tilt tracking, and in-air hover cursor tracking mapped to Linux
uinputfor Krita, GIMP, and Blender - Touchpad Drag-and-Drop Gesture: Double-tap and drag in Touchpad mode for seamless window moving and file selection, with strict multi-monitor boundary confinement
- Ultra-Low Latency 5GHz Wi-Fi Tuning: 6-frame GOP (100ms keyframe interval) with sub-50ms buffer pipeline for instantaneous recovery and zero-lag responsiveness
- Chromebook CM3001 & ChromeOS Support: Auto-probing internal ADB route (
100.115.92.2:5555) for plug-and-play USB streaming on ChromeOS ARC++ - Session Token Security & Bootstrap: Session token generation with strict
0o600permissions and automated discovery delivery, supporting#token=URL hash for direct links - Connection Lifecycle & Fast Recovery: Explicit disconnect detection, 500ms
/healthprobe, and capped reconnection attempts - Real virtual display via
evdi(X11 and Wayland), or zero root on KDE Plasma / wlroots: KWin virtual monitor or compositor headless output without kernel modules - Material 3 Android client: Jetpack Compose, Catppuccin Mocha / Latte brand palette, light/dark theme
- Auto-Orientation Resolution Adaptation: Automatically swaps width and height when your phone/tablet rotates between landscape and portrait
- 3-Row Spacious Keyboard Overlay: Top-docked layout ensuring bottom taskbars, terminals, and prompts stay 100% visible
- Built-in web client: Watch from any browser at
http://<host>:8788/(MSE via locally bundledmpegts.js, no CDN) - Live discovery: NSD scan of nearby hosts, manual
host:portentry, optional subnet scanner - Native streaming: ExoPlayer with
OkHttpDataSource+ tuned load control for ultra-low latency MPEG-TS / H.264 - Host control panel: Keyboard, lock, blank, Ctrl+Alt+Del, and retry actions
- USB transport via
adb reverse: Hot-plug detection picking up newly connected devices within two seconds - Hardware encoding: NVIDIA NVENC, Intel/AMD VA-API, and x264 software fallback
- Cryptographic signing of every Linux and Android artifact
| Environment | Virtual second display | Capture | Input |
|---|---|---|---|
| KDE Plasma (Wayland) | β Native (Portal Virtual / zkde-screencast, no root) | β PipeWire | β RemoteDesktop portal / uinput |
| COSMIC (Wayland) | doctor --fix) |
β Portal ScreenCast (PipeWire) | β uinput (multi-touch & stylus) / RemoteDesktop |
| Sway / Hyprland / wlroots | β Headless output via compositor IPC (no root) | β wlr-screencopy (no dialog) | β virtual-pointer / virtual-keyboard (no portal) |
| GNOME (Wayland) | β Portal Virtual (GNOME 46+) / EVDI | β Portal ScreenCast (PipeWire) | β RemoteDesktop portal: persisted |
| XFCE / MATE / LXQt / Cinnamon (X11) | β Via EVDI | β XShm mirrored root (pooled, duplicate frames skipped) | β XTEST (rootless), uinput fallback |
| Anything else | β
Via EVDI (guided by orbiscreen doctor --fix) |
Best available backend | Best available backend |
orbiscreen doctor reports the detected compositor, the exact capture plan auto will follow, and what is missing on the system; orbiscreen doctor --fix installs the EVDI kernel module on detected distros. Full details in Desktop Environment Support.
-
Ubuntu / Pop!_OS / Linux Mint (Launchpad PPA):
sudo add-apt-repository ppa:shadow-x78/ppa -y sudo apt update sudo apt install orbiscreen -y
-
Fedora (COPR):
sudo dnf copr enable shadow-x78/orbiscreen -y sudo dnf install orbiscreen -y -
Universal AppImage (
.AppImage): Downloadorbiscreen-x86_64.AppImagefrom GitHub Releases:chmod +x orbiscreen-x86_64.AppImage ./orbiscreen-x86_64.AppImage
-
One-Command Automated Installer:
git clone https://github.com/shadow-x78/orbiscreen.git ~/Orbiscreen cd ~/Orbiscreen ./scripts/install.sh
-
Android App (
.apk): Downloadorbiscreen-android-release.apkfrom GitHub Releases.
-
From Terminal (Foreground Daemon):
orbiscreen start
-
As Background Service (systemd user unit):
systemctl --user start orbiscreen # To enable automatically on login: systemctl --user enable orbiscreen
# Start virtual display daemon with auto environment detection
orbiscreen start
# Start with custom resolution and framerate
orbiscreen start --width 1920 --height 1080 --fps 60
# Force specific hardware encoder (nvenc, vaapi, x264)
orbiscreen start --encoder nvenc
# Run diagnostics and view capture pipeline details
orbiscreen doctor
# Automatically install missing kernel modules or dependencies
orbiscreen doctor --fix
# Gracefully stop running daemon
orbiscreen stop- Instant mDNS Discovery: Automatically discovers Linux hosts on your Wi-Fi network.
- USB Cable Hot-Plug: Connect with a single USB cable for zero-latency, zero-interference streaming via ADB reverse.
- Chromebook & ChromeOS ARC++ Ready: Auto-probing internal ADB route on
100.115.92.2:5555for Chromebook CM3001 and ChromeOS devices. - Graphic Digitizer Support: Stylus in-air hover cursor tracking, pressure sensitivity (4095 levels), and tilt angle support for drawing in Krita and GIMP.
- Touchpad Drag-and-Drop: Double-tap and drag gesture for smooth window dragging, file movement, and text selection.
- Ultra-Low Latency Wi-Fi Tuning: 40-120ms tuned buffer profile paired with 6-frame GOP encoding for instant live edge tracking on 5GHz networks.
- Fast Disconnect Detection: Instant 500ms health checking and capped reconnection preventing infinite retry loops.
- Dynamic Auto-Rotation: Rotating your device automatically synchronizes virtual screen aspect ratio.
- Top-Docked Keyboard Overlay: 3-row layout with function keys, shortcuts, and navigation that never obscures your workspace.
- Streamlined Display Settings: Dedicated pointer speed slider and instant resolution picker.
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β orbiscreen-daemon β
β ββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ β
β β orbiscreen-display β β orbiscreen-capture β β
β β (evdi kernel/DRM) β β (zkde-screencast/wlr/ashpd) β β
β ββββββββββββββββββββββ ββββββββββββββββββββββββββββββββββ β
β β β β
β βΌ βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β orbiscreen-encode (GStreamer NVENC/VAAPI/x264) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β β
β βΌ β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
β β orbiscreen-transport (HTTP MPEG-TS + mDNS + ADB USB) β β
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
orbiscreen/
βββ crates/
β βββ orbiscreen-core/ # shared types, config, errors
β βββ orbiscreen-display/ # evdi-backed virtual displays
β βββ orbiscreen-capture/ # X11 (x11rb) + Wayland (zkde-screencast / ashpd PipeWire)
β βββ orbiscreen-encode/ # GStreamer pipeline (VAAPI / NVENC / x264)
β βββ orbiscreen-input/ # uinput tablet & touch + ashpd RemoteDesktop
β βββ orbiscreen-transport/ # axum + mDNS + ADB reverse USB
β βββ orbiscreen-daemon/ # CLI binary wiring every layer together
βββ clients/
β βββ web/ # browser MPEG-TS client (HTML / CSS / JS)
β βββ android/ # Material 3 Compose app
βββ assets/
β βββ logo/ # Vector SVG and PNG icon & banner set
βββ data/ # desktop entry, RPM spec, systemd service
βββ scripts/ # install, packaging (deb / rpm / AppImage), dev tooling
βββ docs/ # bilingual guides (EN + AR)
Can I use my Android tablet as a true extended display, not just screen mirroring?
Yes! Unlike screen-mirroring apps, Orbiscreen creates an independent, native virtual monitor on your Linux desktop (via KDE Plasma KWin virtual display, wlroots headless output, or EVDI kernel driver). You can position it anywhere relative to your physical monitors, drag application windows to it, and adjust resolution up to 4K.
Does Orbiscreen work on Wayland without root permissions?
Yes! On modern Linux desktop environments like KDE Plasma (Wayland) and wlroots compositors (Sway, Hyprland), Orbiscreen creates native virtual monitors rootlessly without any kernel modules or screen-share authorization dialogs. On COSMIC, GNOME, and X11, Orbiscreen uses EVDI for kernel-level display support.
Can I use my tablet as a drawing tablet with pressure sensitivity in Krita or GIMP?
Yes! Orbiscreen intercepts stylus pressure (up to 4095 levels) and tilt angles from active styluses (such as Samsung S-Pen or capacitive styluses) and injects them as a genuine Linux tablet digitizer. You can sketch and paint naturally in Krita, GIMP, Blender, and Inkscape.
How does Orbiscreen compare to other solutions?
Unlike proprietary solutions restricted to specific operating systems and ecosystems, Orbiscreen delivers a high-performance, open-source extended monitor experience built specifically for Linux hosts and compatible with any Android tablet, phone, or web browser.
Can I connect via USB cable instead of Wi-Fi?
Yes! Orbiscreen features built-in automatic ADB reverse tunneling over USB. Simply enable USB Debugging on your Android device and plug it in; Orbiscreen automatically establishes a zero-interference USB connection within two seconds.
What is the latency during streaming?
With hardware encoding enabled (NVIDIA NVENC or Intel/AMD VA-API on Linux, and MediaCodec hardware decoding on Android), latency is imperceptible and near-zero, making it snappy and responsive for coding, reading, browsing, and media consumption.
| Document | Description |
|---|---|
| ARCHITECTURE.md | System topology, frame pipeline & D-Bus architecture |
| UDP_TRANSPORT.md | UDP Annex-B video path, packet types, DPLPMTUD & test hooks |
| DE_SUPPORT.md | Per-desktop support matrix, capture plans & troubleshooting |
| PACKAGING.md | Multi-distro packaging specs (.deb, .rpm, AppImage) |
| DBUS_SPEC.md | D-Bus Session Bus IPC interface specifications |
| TROUBLESHOOTING.md | Common issues, diagnostics & hardware acceleration fixes |
If Orbiscreen has made your workflow smoother or saved you from buying a costly portable monitor:
- β Star this repository on GitHub - every star boosts discoverability in GitHub Search and Google!
- π’ Share with the community on Reddit (r/linux, r/android, r/kde), Mastodon, or X/Twitter.
- π Report issues or suggest features via GitHub Issues.
- π‘ Contribute code or translations via Pull Requests.
- Fork the repository
- Create a feature branch:
git checkout -b feature/my-feature - Commit your changes:
orbiscreen | <type>: <description> - Push to the branch
- Open a Pull Request
Please read our Contributing Guidelines and Code of Conduct for community standards, development workflow, and the release process.
Distributed under the GPL-3.0 License.
Built by shadow-x78 Β· Changelog Β· Code of Conduct Β· Security
Β© 2026 Orbiscreen