What's Changed
Fixed
-
"Open Browser via Tunnel" found no browser on macOS and only showed a toast — the tunnelled-browser auto-detection added in 0.21.9 was Linux-only: it consulted
xdg-settings(absent on macOS) and then probed a list of Linux binary names (google-chrome,chromium,brave-browser, …) onPATH. On macOS a Chromium-family browser is an.appbundle under/Applications, not a binary onPATH— and a GUI app'sPATHdoes not list it anyway — so detection always failed and RustConn fell back to the "No Chromium-based browser found" toast instead of opening a browser. Auto-detection now also probes the macOS bundles directly (find_macos_chromium_app), checking both/Applicationsand~/Applicationsfor Google Chrome, Chromium, Brave, Microsoft Edge and Vivaldi, and launches the executable inside the bundle by its full path — which still honours--proxy-serverand--user-data-dir. A path configured by hand in Settings already worked and is unchanged. -
External RDP, VNC and SPICE viewers were reported "not installed" on macOS even when present — the same defect as the tunnelled browser, in the viewer detection: RDP (FreeRDP), VNC (RealVNC/TigerVNC) and SPICE (virt-viewer) clients were looked up only as bare binary names on
PATH, but on macOS they are.appbundles under/Applications, notPATHbinaries. A new sharedrustconn_core::which::find_macos_apphelper (which the browser fix now also uses) probes/Applicationsand~/Applicationsfor the known bundles and returns the executable inside, so external-viewer launch and the Settings "installed clients" list find them. The "install …" hints are now platform-specific (brew install freerdp,brew install --cask virt-viewer, RealVNC/TigerVNC/Screen Sharing) rather than naming Linux packages. A FreeRDP CLI installed via Homebrew already resolved and is unchanged. -
The system-browser and Cockpit paths hardcoded
xdg-open, which does not exist on macOS — a Web connection in System browser mode, and the built-in "Cockpit" command template, both emitted a literalxdg-open <url>. In the GUI the Web connection is intercepted by the portal launcher, but the CLI and the template ranxdg-opendirectly, which fails on macOS. Both now use the platform URL opener —openon macOS,xdg-openon Linux (rustconn_core::secret::url_open_command). -
A SPICE session on macOS always fell back to a password prompt — the mode-0600
.vvconnection file that carries the SPICE host/port/TLS/password is written under$XDG_RUNTIME_DIR, which does not exist on macOS, so the file was never created and the viewer prompted instead of connecting with the stored credential. The file now falls back to the per-user temp directory ($TMPDIR, a0700-owned/var/folders/…path) on macOS; on Linux it still uses$XDG_RUNTIME_DIRand the file is created0600regardless. The Flatpak--env-fdcommand-environment path is unchanged (it is Flatpak-only and needs the runtime dir for its host-path translation). -
Connection search matched entries with no visible relation to the query — typing
gitin the sidebar search could surface an entry likeaws ssothat contains nog,iortin its name. The lowest tier of the fuzzy matcher scored a connection whenever some query characters appeared, in order, anywhere across any scored field (host, group, tags, notes, custom properties, username) — amatched == 0check was the only thing that returned "no match", so a single stray character was enough. That tier now requires the whole query to appear as an in-order subsequence before it scores at all (fuzzy_score_charsinrustconn-core), which removes the partial-match noise. Exact, prefix and substring matching are unchanged, so real searches behave as before; a full scattered subsequence still ranks, but below any genuine substring hit. -
The Jump Host picker in the Tunnel wizard and the New/Edit Connection wizard filtered nothing — the fix that gave the connection editor's Jump Host dropdowns a working type-to-search (0.21.9) did not reach the Tunnel builder's Connection and Jump Host pickers, the connection wizard's Jump Host picker, or a group's SSH Jump Host — those were still plain
ComboRow/searchlessDropDowns, so with a large inventory you had to scroll the entire list. They are nowDropDowns wired through the sharedenable_string_searchhelper, matching the connection editor everywhere a jump host or tunnel target is chosen.
Added
- The New/Edit Cluster dialog can filter its connection list — the cluster editor showed every connection as an unsearchable checklist, which is impractical with hundreds of hosts. A filter box above the list now hides rows whose name or host does not contain the typed text; the checkbox state is never touched, so clearing the filter keeps whatever was already ticked. Select All / Deselect All act on the currently filtered rows only, so narrowing the list and hitting Select All is how you pick a subset.
Dependencies
- Updated: reqwest 0.13.4→0.13.5, zerocopy 0.8.56→0.8.57, hybrid-array 0.4.14→0.4.15, font-types 0.12.4→0.12.5
Installation
Flatpak (Recommended)
flatpak install flathub io.github.totoshko88.RustConnSnap
sudo snap install rustconnDebian/Ubuntu (.deb from this release)
sudo dpkg -i rustconn_0.21.10_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora (.rpm from this release)
sudo dnf install rustconn-0.21.10-1.fc44.x86_64.rpmAppImage
chmod +x RustConn-0.21.10-x86_64.AppImage
./RustConn-0.21.10-x86_64.AppImagemacOS (Homebrew)
brew tap totoshko88/rustconn
brew install rustconn
open $(brew --prefix)/opt/rustconn/RustConn.appAll dependencies (GTK4, libadwaita, VTE, Adwaita icons) are installed automatically.
Requires macOS 13 (Ventura) or later.
OBS Repositories
Packages available at: https://build.opensuse.org/package/show/home:totoshko88:rustconn/rustconn
# Debian 13 (Trixie)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Debian_13/ /' \
| sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Debian_13/Release.key \
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn
# Ubuntu 24.04 LTS (Noble)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_24.04/ /' \
| sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_24.04/Release.key \
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn
# Ubuntu 26.04 LTS (Resolute)
echo 'deb http://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_26.04/ /' \
| sudo tee /etc/apt/sources.list.d/rustconn.list
curl -fsSL https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/xUbuntu_26.04/Release.key \
| gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/rustconn.gpg > /dev/null
sudo apt update && sudo apt install rustconn
# Fedora 44
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Fedora_44/home:totoshko88:rustconn.repo
sudo dnf install rustconn
# Fedora 43
sudo dnf config-manager addrepo --from-repofile=https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/Fedora_43/home:totoshko88:rustconn.repo
sudo dnf install rustconn
# openSUSE Tumbleweed
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Tumbleweed/ rustconn
sudo zypper ref && sudo zypper in rustconn
# openSUSE Leap 16.0
sudo zypper ar https://download.opensuse.org/repositories/home:/totoshko88:/rustconn/openSUSE_Leap_16.0/ rustconn
sudo zypper ref && sudo zypper in rustconnArch Linux (AUR)
yay -S rustconnFreeBSD (Ports)
pkg install rustconnFull installation guide: https://github.com/totoshko88/RustConn/blob/main/docs/INSTALL.md