Linux desktop client for V2Ray-style links, built with Python 3.11+ and PyQt6, powered by Xray-core.
Current release target: v0.1.9.0.5
Project status: beta (stable for daily use, focused feature scope).
- Validate and run
vless://links through Xray-core - Save/manage multiple profiles (favorite/default/duplicate/edit/delete)
- Validation persistence for saved profiles (no unnecessary revalidation)
- Local SOCKS5 + HTTP proxy endpoints (auto-select free ports when needed)
- Optional desktop system-proxy apply/restore while running
- Health indicator + ping + speed test + traffic/uptime metrics
- Diagnostics panel with runtime proxy state and log access
- Built-in update check against GitHub Releases
- Light/Dark theme
- Linux desktop environment (GNOME/KDE/etc.)
xrayavailable inPATH
Quick check:
xray versionPrimary supported release artifacts:
- AppImage
- Debian package (
.deb)
Also available for Debian/Ubuntu users:
- APT repository (published from release workflow)
- Download the latest AppImage from GitHub Releases.
Expected artifact name pattern:
v2link-client-<version>-linux-<arch>.AppImage<arch>isx86_64oraarch64
- Make executable and run:
chmod +x v2link-client-*.AppImage
./v2link-client-*.AppImage- Optional launcher setup:
mkdir -p ~/.local/bin
cp v2link-client-*.AppImage ~/.local/bin/v2link-client.AppImage
chmod +x ~/.local/bin/v2link-client.AppImageCreate ~/.local/share/applications/v2link-client.desktop:
[Desktop Entry]
Name=v2link-client
Exec=/home/YOUR_USER/.local/bin/v2link-client.AppImage
Icon=v2link-client
Type=Application
Categories=Network;
Terminal=false- Download the latest
.debfrom GitHub Releases.
Expected artifact name pattern:
v2link-client_<version>_<arch>.deb<arch>isamd64orarm64
- Install:
sudo dpkg -i v2link-client_<version>_amd64.deb
sudo apt -f install- Launch:
v2link-clientImport the repository key:
curl -fsSL https://udayasri0.github.io/v2link-client/apt/public.key \
| gpg --dearmor \
| sudo tee /usr/share/keyrings/v2link-client-archive-keyring.gpg >/dev/nullAdd the source list:
echo "deb [arch=amd64,arm64 signed-by=/usr/share/keyrings/v2link-client-archive-keyring.gpg] https://udayasri0.github.io/v2link-client/apt stable main" \
| sudo tee /etc/apt/sources.list.d/v2link-client.list >/dev/nullInstall:
sudo apt update
sudo apt install v2link-clientpython3 -m venv .venv
source .venv/bin/activate
python -m pip install --upgrade pip
pip install -r requirements.txt
./scripts/dev_run.shBuild AppImage only:
./scripts/build_appimage.shBuild .deb only:
./scripts/build_deb.shBuild full release set (PyInstaller + AppImage + .deb + checksums):
./scripts/build_release.shArtifacts are written to dist/:
v2link-client-<version>-linux-<arch>.AppImagev2link-client_<version>_<arch>.debSHA256SUMS
Canonical version source: pyproject.toml ([project].version).
- Update
pyproject.tomlversion. - Update
CHANGELOG.md. - Commit changes.
- Create and push matching tag:
git tag v<version>
git push origin v<version>- GitHub Actions workflow
.github/workflows/release.ymlwill:
- verify
tag version == pyproject version - build AppImage +
.deb+SHA256SUMS - upload artifacts to GitHub Release
- publish/update signed APT repo to
gh-pages
Public key file is committed at apt/public.key.
Export matching private key:
gpg --armor --export-secret-keys "v2link-client APT Repository <apt@v2link-client.local>"GitHub secrets:
APT_GPG_PRIVATE_KEY: ASCII-armored private keyAPT_GPG_PASSPHRASE: key passphrase (if protected)
- Paste
vless://link. - Click Validate & Save.
- Click Start.
- Enable System Proxy for desktop-wide proxying, or use Copy manual proxy settings.
Currently implemented:
vless://security=tlsandsecurity=none- transport:
tcp,ws,grpc - optional:
sni,fp,alpn,allowInsecure,flow - limited
headerType=httphandling for TCP
Not yet implemented:
vmess://,trojan://,ss://- REALITY and advanced routing profiles
- Saved profiles:
$XDG_CONFIG_HOME/v2link-client/profiles.json(fallback~/.config/v2link-client/profiles.json) - Preferences/legacy compatibility:
~/.config/v2link-client/profile.json - Runtime state and generated config:
~/.local/state/v2link-client/ - Logs:
~/.local/state/v2link-client/logs/
Common causes:
- Invalid endpoint or blocked server
- Mismatched
sniand certificate with strict TLS verification (allowInsecure=0)
Actions:
- verify link/server settings
- try
snialigned with target host - inspect logs via Open logs folder
Install missing runtime library:
sudo apt update
sudo apt install -y libxcb-cursor0
