Skip to content
TssHackPublic

About

High-performance, elegant Linux client for Xray and Sing-box built with Rust, GTK4 and Libadwaita

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Latest commit

 

History

32 Commits

Folders and files

Repository files navigation

xdelta Logo

xdelta

Native, high-performance Linux proxy client for Xray and Sing-box.
Built with Rust, GTK4, and Libadwaita. Designed for the modern Linux desktop.


Rust GTK4 Libadwaita Platform License


Overview • Screenshots • Comparison • Protocols • Architecture • Quick Start • Roadmap


📌 Overview

Linux users needing circumvention tools typically face a bad trade-off: bloated Electron apps that consume 300+ MB of RAM, or legacy Qt wrappers that clash with modern desktop themes.

xdelta fixes this with a 100% native Rust binary compiled directly against GTK4 and Libadwaita. It delivers:

  • Sub-40 MB RAM footprint: A fraction of the memory used by web-wrapper clients.
  • Sub-200 ms startup time: Launches instantly without runtime baggage.
  • Native GNOME HIG design: Follows system styling, accent colors, and dark/light mode automatically.
  • Dual-core flexibility: Drives both Xray-Core and Sing-Box through a unified interface.
  • Non-blocking concurrency: Runs all latency tests and subscription updates on Tokio worker threads without dropping UI frames.

📸 Screenshots

Dashboard — Power Hub & Telemetry

Dashboard

Servers — Real-time Latency & Protocol Matrix

Servers

Settings — Accent Color, Wallpapers & System Integration

Settings


📊 How xdelta Compares

Feature Electron-based Clients Legacy Qt Clients xdelta (Rust + GTK4)
Idle Memory (RSS) 250 – 400 MB 80 – 150 MB < 40 MB
Launch Time ~1.5 – 3.0 s ~0.6 – 1.2 s < 0.2 s
Wayland & HiDPI Variable / Scaled Inconsistent Native Wayland & fractional scaling
Desktop Integration Custom titlebars Qt styling on GNOME Native Libadwaita & GNOME HIG
Core Architecture Bundled node daemon Single core only Dual-engine (Xray & Sing-box)
GUI Thread Safety IPC event bridge QEvent loop coupling Tokio workers + Glib async channels

🌐 Supported Protocols

xdelta parses standard URI strings, Base64 subscription lists, and Clash/Meta configurations:

Protocol Transport & Obfuscation Engine
VLESS XTLS Reality, Vision flow, standard TLS, gRPC, WebSocket Xray / Sing-box
VMess WebSocket (Path & Host), gRPC, TCP, HTTPUpgrade Xray / Sing-box
Trojan Standard TLS, SNI, ALPN Xray / Sing-box
Shadowsocks AEAD ciphers, 2022 standards (2022-blake3-aes-128-gcm) Xray / Sing-box
Hysteria 2 UDP tunnel, Salamander obfuscation, bandwidth shaping Sing-box
TUIC v5 QUIC tunnel with BBR congestion control Sing-box

🏗️ Architecture

┌────────────────────────────────────────────────────────────────────────┐
│                        GTK4 / Libadwaita UI                            │
│   [Dashboard]  [Servers]  [Subscriptions]  [Routing]  [Settings] [Logs] │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ glib::MainContext / async-channel
┌───────────────────────────────────▼────────────────────────────────────┐
│                    xdelta Application Engine (Rust)                    │
│  ┌───────────────────────┬──────────────────────┬────────────────────┐ │
│  │ State Management      │ Subscription Parser  │ Async Ping Pool    │ │
│  │ (Tokio Runtime)       │ (Base64/Clash/JSON)  │ (TCP & HTTP Probe) │ │
│  └───────────────────────┴──────────────────────┴────────────────────┘ │
│  ┌───────────────────────┬──────────────────────┬────────────────────┐ │
│  │ Config Synthesizer    │ System Proxy Manager │ TUN Controller     │ │
│  │ (In-memory JSON)      │ (GSettings / D-Bus)  │ (ip route / nft)   │ │
│  └───────────────────────┴──────────────────────┴────────────────────┘ │
└───────────────────────────────────┬────────────────────────────────────┘
                                    │ Child process stdio / Unix Socket
┌───────────────────────────────────▼────────────────────────────────────┐
│                  Proxy Core Subprocess Layer                           │
│           ┌──────────────────────┐    ┌──────────────────────┐         │
│           │      Xray-Core       │ OR │       Sing-Box       │         │
│           │  (vless, vmess, ...) │    │ (hy2, tuic, vless, ..│         │
│           └──────────────────────┘    └──────────────────────┘         │
└────────────────────────────────────────────────────────────────────────┘

🚀 Installation & Quick Start

📦 Pre-built Packages (Zero-Prerequisite Setup)

No external dependencies required: All official distribution packages come pre-bundled with Xray-core and GeoIP/GeoSite routing databases. You do not need to install xray from AUR or external repositories; simply install the package and launch xdelta.

Download the latest release package for your distribution from the GitHub Releases page:

Distribution / Format Package Type Architecture Installation Command Core Engine
Arch Linux / CachyOS / Manjaro .pkg.tar.zst x86_64 sudo pacman -U ./xdelta-*.pkg.tar.zst Pre-bundled
Debian / Ubuntu / Pop!_OS .deb amd64 sudo apt install ./xdelta_*.deb Pre-bundled
Fedora / RHEL / openSUSE .rpm x86_64 sudo dnf install ./xdelta-*.rpm Pre-bundled
Universal Linux .AppImage x86_64 chmod +x xdelta-*.AppImage && ./xdelta-*.AppImage Pre-bundled
Standalone Portable .tar.gz x86_64 tar -xzf xdelta-*.tar.gz && ./install.sh Pre-bundled

📥 Built-in Core Downloader & Auto-Setup

If building from source on a machine without a system-wide Xray installation:

  • Automatic Discovery: xdelta searches bundled paths (/usr/lib/xdelta/bin/), portable directories, user data (~/.local/share/xdelta/bin/), and system PATH.
  • One-Click In-App Downloader: Navigate to Settings → Core Engine; if the core is missing, click "Download Core" to automatically fetch and configure the latest official Xray binary and routing assets directly from XTLS releases.

🛠️ Building from Source

1. Install System Dependencies

Ensure the Rust toolchain and GTK4/Libadwaita headers are installed:

Arch Linux / CachyOS / Manjaro

sudo pacman -S base-devel rust cargo gtk4 libadwaita

Fedora / RHEL

sudo dnf install rust cargo gcc gtk4-devel libadwaita-devel

Ubuntu 24.04+ / Debian 13+

sudo apt install build-essential rustc cargo libgtk-4-dev libadwaita-1-dev

2. Build and Run

# Clone the repository
git clone https://github.com/TssHack/xdelta.git
cd xdelta

# Build and run in debug mode
cargo run

# Build an optimized release binary
cargo build --release

The compiled binary lands at ./target/release/xdelta.


📋 Documentation


🗺️ Roadmap

  • Project architecture and engineering design
  • Complete SRS specifications (Final and MVP)
  • v1.0 (MVP Milestone):
    • Libadwaita UI layout: Dashboard, Servers, and Subscriptions views
    • Protocol parsers: VLESS (Reality/TLS), VMess, and Trojan
    • Asynchronous Base64 subscription downloader
    • Multi-threaded TCP latency test pool
    • Dynamic Xray configuration generator
    • GNOME System Proxy automation via GSettings
  • v1.1:
    • Sing-Box integration
    • Hysteria 2 and TUIC v5 support
    • Real HTTP round-trip delay testing
  • v2.0:
    • Layer-3 TUN mode with DNS leak prevention
    • GeoIP & GeoSite smart routing rule manager
    • Real-time bandwidth charts and connection monitor

🤝 Contributing

Contributions are welcome. To propose changes:

  1. Fork the repository.
  2. Create a feature branch (git checkout -b feature/my-feature).
  3. Commit your changes with descriptive messages (git commit -m 'feat: add hysteria2 parser').
  4. Push to your branch (git push origin feature/my-feature).
  5. Open a Pull Request.

📄 License

Licensed under the GNU General Public License v3.0 (GPL-3.0).

About

High-performance, elegant Linux client for Xray and Sing-box built with Rust, GTK4 and Libadwaita

Topics

Resources

Stars

6 stars

Watchers

0 watching

Forks

Releases

Contributors

Languages