VER (Very Easy Remote Manager) is a modern, lightweight, and native Linux Remote Connection Manager built from the ground up in Rust, GTK4, and Libadwaita. Engineered for efficiency with a minimal memory footprint (typically ~25 MB RAM) and near-instant startup, it provides a fast, secure, and intuitive interface for organizing, discovering, and connecting to remote infrastructure via RDP, XRDP, VNC, SSH, and SPICE.
Install the latest release of VER on any Linux distribution with a single command (no root required):
# Using curl
curl -fsSL https://raw.githubusercontent.com/dawiisss/ver/main/install.sh | bash
# Or using wget
wget -qO- https://raw.githubusercontent.com/dawiisss/ver/main/install.sh | bashNote: Installs the standalone binary to
~/.local/bin/verand registers desktop menu launchers and icons.
Please check the Runtime Dependencies section to ensure you have the required protocol backends installed (e.g.xfreerdp3,vncviewer,remote-viewer).
For system-wide installation, distro packages, or building from source, see Installation & Packaging.
- Quick Install
- Key Features
- Quick Connect (Ctrl+K)
- Pinned & Recent Connections
- Host Reachability Prober & Smart Wake-on-LAN
- Import & Export Ecosystem (Ctrl+I / Ctrl+E)
- Local Network & Service Discovery (Ctrl+D)
- Multi-Protocol Support
- SSH Jump Hosts, Port Forwards & Tunnels
- Enterprise-Grade Security
- Active Session Tracking & System Tray
- Blazing Fast & Memory Efficient
- Global Keyboard Shortcuts
- Installation & Packaging
- Running Tests
- Acknowledgments
- License & Changelog
- Universal URI & Shorthand Parsing: Connect instantly using URIs (
ssh://user@host:port,rdp://admin@server,vnc://10.0.0.5:5901,spice://hypervisor:5900) or intuitive shorthands (user@host:2222,host:3389, IPv6[fe80::1]:22). - Live Autocomplete: Dynamic, real-time extraction and field population for protocols, hosts, ports, and usernames as you type.
- Dual Execution Modes: Launch immediately for one-off ad-hoc sessions ("Connect") or persist directly to your connection library ("Save & Connect").
- Pin to Top (Ctrl+P): Star a connection in the sidebar to list it under a "Pinned" header above all groups.
- Recent Connections: The header bar's Recent menu lists the last five connections you launched.
- Launch from the Tray: The system tray menu launches pinned connections directly and recent ones from its "Recent" submenu, without opening the main window first.
- Non-Blocking Reachability Status: Asynchronous background TCP probing displays real-time connection status in the sidebar:
- 🟢 Online: Live host reachable with latency tooltip (e.g.
Online (12 ms)). - 🔴 Offline: Host unreachable with specific failure reason (e.g.
Connection refused,Connection timed out). - 🟡 Probing: Live verification in progress.
- ⚪ Unknown: Pending initial probe.
- 🟢 Online: Live host reachable with latency tooltip (e.g.
- Integrated Wake-on-LAN (WoL): Send magic packets directly from the Connection Editor with support for standard, hyphenated, Cisco dot, and raw MAC formats.
- Automated Post-WoL Polling: Initiates a 30-second background polling cycle, automatically transitioning the status dot to 🟢 Online and triggering a desktop toast notification as soon as the target machine responds.
- Remmina Migration: Auto-scan
~/.local/share/remmina/*.remminaprofiles or import individual files with automatic extraction of display depths, audio redirection, multimon, and SSH keys. - OpenSSH
~/.ssh/config: Auto-detects and imports host blocks, hostnames, usernames, custom ports, and expanded identity files (~/.ssh/id_*). - Microsoft
.rdpSupport: Seamless import and export of standard Windows Remote Desktop.rdpconfiguration files. - JSON Backups: Connection settings with an explicit schema version and timestamp. Passwords stay in the system keyring and are excluded from backups.
- Selective Export (Ctrl+E): Granular multi-selection checklist with "Select All" / "Deselect All", dynamic counter, and smart focus pre-selection.
- Conflict Resolution: Choose between Skip Duplicates, Overwrite Existing, or Keep Both (Rename with Suffix) when importing.
- Subnet Scanning: Choose an active IPv4 interface using its actual subnet mask, or enter a CIDR range, to discover RDP (3389), VNC (5900), and SSH (22) services. Scans show progress, can be cancelled, and support up to 4096 hosts per range; larger networks require a smaller CIDR selection.
- Smart Deduplication: Automatically detects and hides machines already added to your connections list (matching host, port, protocol, and localhost equivalents) so only new, unconfigured services appear.
- One-Click Import: Quickly add discovered network machines directly into your connection inventory, immediately removing them from the discovered section.
- RDP & XRDP: Powered by
xfreerdp3with support for dynamic resolution, multimon, audio redirection, clipboard sharing, gateway servers, shared folders, security protocol negotiation (NLA, TLS, RDP, ExtNLA), and certificate verification policies (TOFU, Strict Deny, Ignore). - VNC: Seamless integration with
vncviewerwith automated credential passing and color level selection. - SPICE: Hypervisor and VM streaming via
remote-viewer, with saved credentials passed through its stdin connection settings interface. Passwords are excluded from command arguments and the child environment. - SSH: Direct launch into your favorite desktop terminal emulator (
ptyxis,kgx,gnome-terminal,konsole,alacritty,foot,wezterm,xterm) with custom private key identity paths (-i).
- Jump Hosts: Reach SSH hosts through one or more bastions (
user@bastion:22, comma separated), passed tossh -J. Jump hosts authenticate with your~/.ssh/configand ssh-agent. - Port Forwards: Attach local (
L 8080:localhost:80), remote (R 9000:localhost:3000) and SOCKS (D 1080) forwards to an SSH connection. They stay open while the session runs. - SSH Tunnels for RDP, VNC & SPICE: Set an SSH server on a graphical connection and VER opens
ssh -Lto it in the background, waits until it is ready, points the viewer at the local end, and closes the tunnel when the session ends. The connection's host is resolved from the SSH server, so internal names work. The tunnel cannot prompt, so it needs a key or ssh-agent, and new host keys are trusted on first use while changed keys are refused. - Reachability: Tunnelled and jump-host connections show the status of their first SSH hop.
- Imports:
ProxyJump,LocalForward,RemoteForwardandDynamicForwardare read from~/.ssh/config, and Remmina SSH tunnel settings are imported.
- RDP Stdin Credential Hardening: Passwords are piped over standard input via
xfreerdp3 /from-stdin:force, eliminating credential exposure in/proc/<pid>/cmdlineand process monitoring utilities (ps,top). - Secret Service Keyring Integration: Store connection passwords in your native system keyring (
gnome-keyring,kwallet,keepassxc) via the Freedesktop Secret Service API (oo7). Requests run asynchronously with a 30-second timeout. Failed password writes and deletions are reported, and failed initialization can be retried. - Configuration Hardening: Strict
0700Unix directory permissions on all user configuration paths (~/.config/ver). - Safe Process Group Signaling: Process group signal termination (
-(pid as i32)) with PID validity and liveness guards ensures child shells, SSH sessions, and terminal wrappers exit cleanly without orphan processes or accidental self-termination. - Corrupt File Auto-Recovery & User Alerting: Automatic timestamped backup creation for non-UTF8 or malformed configuration files with proactive GUI warning notifications preventing accidental data loss.
- Live Session Badges: Real-time "Active" sidebar indicators showing currently connected sessions.
- Session Logs: Embedded log view with a bounded event queue, retaining the latest 2000 lines within a 256K-character limit. Undo history is disabled to avoid retaining discarded output.
- System Tray Indicator: Background StatusNotifierItem tray icon with embedded in-memory ARGB32 pixmap and theme fallback for quick window toggle and persistent daemon mode.
- Minimal Memory Footprint: Pure native compiled Rust architecture with GTK4/Libadwaita consumes negligible RAM (typically ~20–35 MB baseline).
- Instant Startup & Responsive UI: Zero runtime overhead, sub-second launch times, and non-blocking asynchronous event handling across background network probes and connection sessions.
VER features comprehensive keyboard accelerators adhering to GNOME HIG standards:
| Shortcut | Action |
|---|---|
| Ctrl + K | Open Quick Connect dialog |
| Ctrl + N | Create New Connection |
| Ctrl + F | Focus Search Connections bar |
| Ctrl + I | Open Import Connections dialog |
| Ctrl + E | Open Export Connections dialog |
| Ctrl + D | Open Network Device Discovery |
| Ctrl + , | Open Preferences window |
| F5 / Ctrl + R | Refresh Reachability status for all hosts |
| Return | Launch selected connection |
| Delete | Delete selected connection |
| Ctrl + P | Pin / Unpin selected connection |
| Ctrl + ? / F1 | Open Keyboard Shortcuts cheat sheet |
| Ctrl + Q | Quit application |
# Using curl
curl -fsSL https://raw.githubusercontent.com/dawiisss/ver/main/install.sh | bash
# Or using wget
wget -qO- https://raw.githubusercontent.com/dawiisss/ver/main/install.sh | bashInstalls the binary to ~/.local/bin/ver and desktop launchers to ~/.local/share/applications/.
curl -fsSL https://raw.githubusercontent.com/dawiisss/ver/main/install.sh | sudo bash -s -- --systemInstalls the binary to /usr/local/bin/ver and desktop launchers to /usr/local/share/applications/.
# Install a specific release version
curl -fsSL https://raw.githubusercontent.com/dawiisss/ver/main/install.sh | bash -s -- --version v1.6.0
# Install to a custom prefix directory
./install.sh --prefix /opt/ver
# Install from a local build (target/release/ver)
./install.sh --local
# Preview actions without making changes
./install.sh --dry-runTo remove VER and its desktop launchers, run the uninstallation script:
# Using curl
curl -fsSL https://raw.githubusercontent.com/dawiisss/ver/main/uninstall.sh | bash
# Or from local repository clone
./uninstall.sh
# Remove application and also purge configuration / connection data (~/.config/ver)
./uninstall.sh --purge
# Remove system-wide installation
sudo ./uninstall.sh --systemEnsure the backend tools for your required protocols are installed on your system:
| Protocol | Backend Package / Binary | Example Package Names |
|---|---|---|
| RDP / XRDP | xfreerdp3 |
freerdp3, freerdp3-x11 |
| VNC | vncviewer, vncpasswd |
tigervnc, tigervnc-viewer |
| SPICE | remote-viewer |
virt-viewer |
| SSH | Native Terminal Emulator | ptyxis, gnome-terminal, konsole, alacritty, foot, wezterm, xterm |
You can download pre-built packages from GitHub Releases or build native packages locally:
./build_deb.sh # Generates Debian / Ubuntu .deb package
./build_pacman.sh # Generates Arch Linux pacman .pkg.tar.zst package
./build_rpm.sh # Generates RedHat / Fedora .rpm package
./build_appimage.sh # Generates standalone x86_64 AppImageDebian / Ubuntu / Pop!_OS:
sudo apt update
sudo apt install build-essential rustc cargo libgtk-4-dev libadwaita-1-devArch Linux / Manjaro / EndeavourOS:
sudo pacman -S base-devel rust gtk4 libadwaitaFedora / RHEL:
sudo dnf install @development-tools rust cargo gtk4-devel libadwaita-devel# Run in development mode
cargo run
# Build optimized release binary
cargo build --releaseThe compiled binary will be located at target/release/ver. You can install it locally using ./install.sh --local.
Run the complete test suite across all unit, boundary, network, prober, and UI targets:
cargo test --all-targetsTests that need a live, unlocked Secret Service keyring are opt-in. They use test-specific IDs; run them separately with:
cargo test --all-targets -- --ignoredThe default suite tests unavailable-keyring errors in a separate process with an isolated D-Bus address. Network tests need permission to bind loopback sockets.
Verify linter compliance:
cargo clippy --all-targets --all-features -- -D warningsVER is built on the shoulders of remarkable open-source projects and communities:
- FreeRDP: For the industry-standard
xfreerdp3client providing RDP/XRDP protocol support. - TigerVNC: For high-performance, secure VNC remote desktop client tooling.
- SPICE Project: For low-latency VM and hypervisor streaming via
remote-viewer. - OpenSSH: For the gold standard in secure remote shell connectivity.
- GNOME & Libadwaita: For modern, accessible Linux desktop design systems and HIG.
- gtk-rs: For first-class, memory-safe Rust bindings to GTK 4 and Libadwaita.
- oo7: For native Freedesktop Secret Service keyring integration in pure Rust.
- Remmina: For inspiring Linux remote management workflows.
- License: Distributed under the MIT License.
- Changelog: See CHANGELOG.md for detailed version history and release notes.