- Multi-backend: v2ray, xray, sing-box — auto-detected from system PATH
- Subscriptions: Fetch and parse from URLs or local files (VLESS, VMess, Shadowsocks, Trojan)
- Routing rules: GeoIP, GeoSite, domain patterns, IP CIDR with proxy/direct/block actions
- Process management: Async lifecycle with crash recovery, graceful shutdown, log capture
- GTK4/libadwaita UI: Native Linux desktop experience with system tray integration
- XDG compliant: Config in
~/.config/v2ray-rs/, data in~/.local/share/v2ray-rs/
yay -S v2ray-rs# Dependencies (Debian/Ubuntu)
sudo apt install libgtk-4-dev libadwaita-1-dev
# Dependencies (Fedora)
sudo dnf install gtk4-devel libadwaita-devel
# Build
git clone https://github.com/victorzhuk/v2ray-rs.git
cd v2ray-rs
cargo build --releaseYou also need at least one proxy backend installed: v2ray, xray, or sing-box.
- Launch the app (or
cargo run -p v2ray-rs-uifrom source) - The onboarding wizard detects installed backends and guides initial setup
- Add a subscription URL — nodes are fetched and parsed automatically
- Enable desired nodes, configure routing rules, click Connect
Settings are stored in ~/.config/v2ray-rs/settings.toml:
[backend]
type = "xray"
binary_path = "/usr/bin/xray"
[proxy]
http_port = 10809
socks_port = 10808
[ui]
language = "en"
minimize_to_tray = truecargo check --workspace # type-check
cargo build --release # release build
cargo test --workspace # all tests
cargo clippy --workspace # lint
cargo fmt --all # formatOr via Makefile: make build, make test, make lint, make fmt.
Made with ❤️ for the Linux community
v2ray / xray / sing-box / Relm4 / v2fly GeoIP/GeoSite
