Native, high-performance Linux proxy client for Xray and Sing-box.
Built with Rust, GTK4, and Libadwaita. Designed for the modern Linux desktop.
Overview • Screenshots • Comparison • Protocols • Architecture • Quick Start • Roadmap
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.
| 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 |
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 |
┌────────────────────────────────────────────────────────────────────────┐
│ 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, ..│ │
│ └──────────────────────┘ └──────────────────────┘ │
└────────────────────────────────────────────────────────────────────────┘
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
xrayfrom 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 |
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 systemPATH. - 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.
Ensure the Rust toolchain and GTK4/Libadwaita headers are installed:
sudo pacman -S base-devel rust cargo gtk4 libadwaitasudo dnf install rust cargo gcc gtk4-devel libadwaita-develsudo apt install build-essential rustc cargo libgtk-4-dev libadwaita-1-dev# 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 --releaseThe compiled binary lands at ./target/release/xdelta.
- Final Release SRS (Software Requirements Specification): Complete architecture specification, protocol models, and enterprise routing requirements.
- MVP v1.0 SRS: Targeted implementation blueprint for the first functional milestone.
- 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
Contributions are welcome. To propose changes:
- Fork the repository.
- Create a feature branch (
git checkout -b feature/my-feature). - Commit your changes with descriptive messages (
git commit -m 'feat: add hysteria2 parser'). - Push to your branch (
git push origin feature/my-feature). - Open a Pull Request.
Licensed under the GNU General Public License v3.0 (GPL-3.0).


