Repository navigation
v0.23.7
What's Changed
Added
- Setting to hide the split-pane hover controls (#374) — a new Settings → Interface → Window → "Hide hover controls in split panes" switch hides the top-right hover-reveal arrow (with its close/detach buttons) on split-view panes for users who find it distracting. Off by default, so the hover controls stay shown. It is fully independent of "Show connection name in split panes": each has its own switch and neither hides the other, and it applies live to every open split without a restart. With the arrow hidden, the pane header context menu and the sidebar connection menu still offer close/detach.
Fixed
- The sidebar's per-session controls are hidden when a connection has several live sessions (#374) — "Close", "Remove from Split" and "Move to New Window" each act on one session, resolved as the first session found for the connection. When a connection had two or more live sessions — common with "Open a new session on every double-click" enabled, but also reachable via the menu's own "Open new session" or opening the same entry from Favorites — the sidebar would silently act on an arbitrary one of them, which the user could not predict. The sidebar row represents the connection, not a single session, so these three controls are now hidden when the connection has ≥2 live sessions; they remain per-tab, where each targets its own session unambiguously. Connection-level items (Connect, Open new session, Edit, Delete, …) are unaffected. The count comes from a new
multi_session_checkerwired from the window off the authoritative notebook session list, mirroring the existing recording checker; it is threaded through every menu entry point (right-click, the KDE deep-row fallback, keyboard Menu/Shift+F10, and touch long-press). An external-viewer session is not in the notebook, so a terminal-plus-external pairing is not miscounted — the per-session resolver only ever targets the single notebook session anyway. - Sidebar "Close" is now offered for any connected session, and only Delete stays red (#374) — the sidebar connection menu showed Close only while the connection was in a split view; an ordinary connected session had no way to be closed from the sidebar, an inconsistency with the split case (and with the tab's own Close). Close is now offered for every connected session and routes through the same
close-tab-by-idteardown that handles both a split pane and a plain tab. It is also no longer styled destructive (red): per the GNOME HIG — and the project's own steering — the reddestructive-actionis reserved for irreversible, data-losing operations. Ending a session is recoverable by reconnecting, so Close is a normal item; only Delete (which permanently removes the connection) stays red, leaving a single destructive action in the menu rather than two. - A re-split after closing a split's owner tab no longer leaves a dead, actionless pane — closing the tab that owns a split returned its guest sessions to their home tabs but left each guest's entry in the per-session bridge map pointing at the owner's torn-down layout. That layout's model still listed the guest's old panels and the now-killed owner session, so the next split on a returned guest reused the stale bridge (
get_or_create_session_bridge: REUSING…) andrestore_panel_contentswalked a panel whose session had no content widget (no content widget for session …). The pane was left with no content and no placeholder — no header actions, no hover close/pop buttons, and no empty-pane Select Tab / close X — a "Loading…"-looking dead pane the user could neither fill nor close (it also emittedgtk_widget_size_allocate … width -38andmeasure … height 0warnings). Fixed on two levels: (1)on_split_cleanupnow drops each returned guest's bridge entry as well as the owner's, so a later split takes the create-a-fresh-bridge path with a clean single-panel model; (2) defensively,restore_panel_contentsnow falls back to the empty placeholder for any panel whose session has no resolvable content widget, so even an unforeseen stale-layout path yields an actionable pane rather than a dead one. Regression-tested (reset_after_split_restores_a_clean_single_panel_model). Pre-existing, unrelated to the #374 context-menu work in this release.
Changed
- Sidebar action toolbars restyled to match GNOME Files (#374) — three visual refinements so the sidebar's bottom action row and its "Select Connections" bar read like a native GNOME sidebar rather than a boxed-off panel:
- No divider above the bottom toolbar. Two conflicting
.sidebar toolbarview > .bottom-barrules left aborder-topdrawn on the bottom action row, visually splitting it off from the connection list; the border is removed so the row merges into the list the way GNOME Files' sidebar does. - Bottom icons spread evenly across the width. The row (History / A-Z / Recent / Vault / Smart Folders) was centre-clustered with empty space to its right; it now fills the full sidebar width with homogeneous cells, so the icons distribute evenly like Files' sidebar actions.
- "Select Connections" buttons are flat. The bulk-action buttons carried
.pill, giving each a resting rounded background; they are now flat symbolic icons (hover-only feedback), visually identical to the bottom toolbar, and the bar uses the same full-width even distribution. The destructive "Delete Selected" keeps its red hover only (no permanent red), per the GNOME HIG. - Multi-select moved to the bottom toolbar; the header-menu checkbox is gone. "Select Connections" was a checkable item in the sidebar header menu, which widened that popover. It is now a toggle button in the bottom action row (bound to the same
win.group-operationsstate, so it shows the active mode and reveals the bulk-actions bar) — more discoverable, and the header menu no longer carries the checkable item. Adding this sixth icon also tightens the bottom row's even spread so it no longer looks sparse. Connection History stays the leftmost quick-access icon, with the Select toggle second; the final order is History / Select / A-Z / Recent / Vault / Smart Folders. - "Create Cluster" dropped from the "Select Connections" bar. Cluster creation is a niche action next to the everyday bulk operations (New Group, Move, Batch Edit, Select All, Clear, Delete); it was the odd one out in the row. The bar is now six focused buttons. The capability is unchanged — clusters are still created and managed from Tools ▸ Manage Clusters (and the
cluster-from-selectionaction remains registered).
- No divider above the bottom toolbar. Two conflicting
- Split-pane close / detach controls follow the GNOME HIG instead of a hover-only reveal (#374) — a reporter hit three things at once: the pane close "X" was reachable only through a hover-reveal arrow (a touch screen has no hover, which the project's own HIG steering forbids relying on), the right-click context menu did not open over a terminal or remote-desktop pane, and a disabled "Move to New Window" sat inert on split tabs. The fixes:
- Pane context menu moved onto the pane header. With connection-name headers on (the default), right-click — or long-press on touch — the pane header for Reconnect / Remove from Split / Remove Split / Close Connection. It is attached to the header rather than the pane body on purpose: a VTE terminal and an RDP/VNC
DrawingAreaclaim button-press in the bubble phase, so a gesture on the container never fired over the content, and moving it to the capture phase to beat them would have swallowed VTE's own native Copy/Paste menu (the #84 regression). The header has no competing input, so the menu is reliable there and the terminal keeps its own right-click menu. AGestureLongPressmirrors the right-click for touch, per the HIG's long-press-with-every-context-menu rule. - Hover reveal arrow stays an independent fallback. The small corner arrow and its close/pop buttons remain available whether or not the connection-name headers are shown — the labels and the hover buttons each have their own switch and do not hide one another (a header label is small and uncluttering, so suppressing the arrow when it is on bought nothing). A user who still finds the arrow distracting can turn it off outright with the new "Hide hover controls in split panes" setting (see Added). Because the hover arrow is a single easy-to-mis-click gesture, its Close now asks for confirmation before disconnecting a live session (an
AdwAlertDialog), while the two-step header menu and sidebar paths are not second-guessed. - Sidebar connection menu gained split/window actions. Right-click a connected connection in the sidebar for Remove from Split and Close (shown only while it is in a split) and Move to New Window. The last pops a split pane out and detaches it in one step, and also detaches an ordinary background tab — so a split session can go straight to its own window without first dismantling the split by hand.
- The dead "Move to New Window" is gone from split tabs. The tab menu used to keep the item enabled on a split tab only to answer a click with a "remove the split first" toast, which reads as a broken control; it is now hidden there (
offers_detachaccepts only anAllowedverdict). The split is dismantled via Remove Split, or detached in one step from the sidebar.
- Pane context menu moved onto the pane header. With connection-name headers on (the default), right-click — or long-press on touch — the pane header for Reconnect / Remove from Split / Remove Split / Close Connection. It is attached to the header rather than the pane body on purpose: a VTE terminal and an RDP/VNC
Documentation
- User guide: Split View and Detached Session Windows updated for the header context menu, the long-press equivalent, the conditional close confirmation on the hover close, the hover arrow staying available independently of the name labels, the new sidebar split/window actions, and the removal of the inert detach item from split tabs.
Dependencies
- Updated: tokio-util 0.7.19 → 0.7.20, toml 1.1.7 → 1.1.8, toml_edit 0.25.16 → 0.25.17, toml_parser 1.1.4 → 1.1.5, zstd-sys 2.1.0 → 2.1.1. All semver-compatible patch bumps (the TOML parser family plus tokio-util and the zstd FFI shim); no security advisories affected (
cargo deny check advisoriesclean). All other in-range cargo dependencies were already at their latest compatible versions. CLI download versions all current (TigerVNC pinned at 1.16.2); the Flatpak/Flathub manifests are in sync (GNOME runtime 51, FreeRDP 3.32.1, cJSON 1.7.19, OpenH264 2.6.0), and picky-krb 0.12.5 remains held back for the same reason as 0.23.1–0.23.6: itsGssApiMessageErrorvariant breaks the pinned sspi 0.21.3, which does not match it exhaustively, so picky-krb stays at 0.12.4.
Installation
Flatpak (Recommended)
flatpak install flathub io.github.totoshko88.RustConnSnap
sudo snap install rustconnDebian/Ubuntu (.deb from this release)
sudo dpkg -i rustconn_0.23.7_amd64.deb
sudo apt-get install -f # Install dependencies if neededFedora (.rpm from this release)
sudo dnf install rustconn-0.23.7-1.fc44.x86_64.rpmAppImage
chmod +x RustConn-0.23.7-x86_64.AppImage
./RustConn-0.23.7-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
Verifying your download
Every binary on this release (deb, rpm, AppImage, Flatpak) is covered two ways.
Plain checksums — download SHA256SUMS alongside the asset, then:
sha256sum -c SHA256SUMSSigned build provenance (SLSA, via Sigstore) — proves the file was built by this
workflow from this commit:
gh attestation verify RustConn-0.23.7-x86_64.AppImage --repo totoshko88/RustConn(The snap is signed by the Snap Store; the macOS build is delivered via the Homebrew tap.)