RustConn

totoshko88GPL-3.0活跃维护

跨平台远程连接管理器,把 SSH、RDP、VNC、SPICE、MOSH、Telnet、串口和 Kubernetes 等连接统一到一个 GTK4/libadwaita 界面里,客户端用 Rust 内嵌实现。

Modern cross-platform connection manager — SSH, RDP, VNC, SPICE, MOSH, Telnet, Serial, Kubernetes and Zero Trust — with a GTK4/libadwaita interface and embedded Rust clients. Linux, macOS, FreeBSD, Windows (WSLg).

v0.24.10发布于 2026-11-09 23:29 UTC660star +6 / 7 天39fork同步于 2026-11-10 06:00 UTC

怎么上手

README 里没有找到可直接复制的安装命令

README 里没有找到可直接复制的安装命令,请到 README 或官方文档查看安装方式。

硬件要求

README 没有说明硬件要求。

下载:源码 zip·GitHub Releases(安装包)本站不镜像安装包

项目说明

这个项目的说明还在生成中,先参考下面「最近发版」和 README。

这个条目还没有人工点评。如果它对你很有用,欢迎到 提交仓库 页写下你的使用经验。

用户点评

登录用户的真实使用记录,可按版本和硬件筛选
共 0 条

    还没有人点评。第一个说出真实体验的人最有价值。

    最近发版

    5 个版本v0.24.10
    1. v0.24.10最新正式版2026-11-09 · 2026-11-09 23:29 UTC

      What's Changed

      Fixed

      • macOS: the menu-bar icon follows the system style — the tray icon was a full-colour image that clashed with the other status items. It is now a monochrome template glyph, so macOS tints it for a light or dark menu bar like any native item. (rustconn/src/tray.rs, rustconn/assets/icons/hicolor/scalable/apps/io.github.totoshko88.RustConn-tray-macos.svg)
      • macOS: Settings no longer shifts and clips a few seconds after opening — once client detection finished, the Clients page replaced its rows with full install paths and unbounded version strings, which made the dialog wider than its 600 px content width and cut off every page. The path is now one ellipsised line (full text in a tooltip) and the version label is ellipsised too. (rustconn/src/dialogs/settings/clients_tab.rs)
      • macOS: the Dock icon is grey in the Clear and Tinted icon styles — when RustConn runs without a .app bundle, its Dock tile is set at runtime, which bypasses the system's monochrome icon styles, so it stayed full-colour next to every other app. The tile now reads AppleIconAppearanceTheme and, for Clear or Tinted, uses a grey tile (dark or light to match). Inside a bundle the .icns is still left to macOS. (rustconn/src/main.rs, rustconn/assets/icons/macos-dock/)
      • A broken CLI wrapper is no longer shown as installed with an error for a version — Settings → Connection showed Tailscale CLI with a ✓ and /usr/local/bin/tailscale: line 2: …: No such file or directory in the version column when the wrapper outlived a removed Tailscale.app. A command that exits 126/127 (the shell's "cannot execute" / "not found") now yields no version and is reported as not found. Applies to every Zero Trust CLI on that page. (rustconn/src/dialogs/settings/clients_tab.rs)

      Changed

      • macOS: Compact interface is off by default — it was switched on for new macOS installs to compensate for scaling problems that are now fixed. A fresh install gets the standard chrome, as on Linux. Existing users keep whatever is saved in their settings; the switch is still in Settings → Interface, the primary menu and Ctrl+Shift+D. (rustconn-core/src/config/settings.rs)

      Improved

      • Settings no longer spins the main loop while it detects clients — the Clients and SSH Agent pages polled their background result through an idle source, which never sleeps, so the interface ran flat out for the few seconds detection took each time Settings opened. They now poll every 50 ms, as the Secrets page already did. (rustconn/src/dialogs/settings/clients_tab.rs, rustconn/src/dialogs/settings/ssh_agent_tab.rs)
      • Development builds optimise third-party dependencies — cargo run compiled GTK, VTE and IronRDP at opt-level 0, which made tab overview, redraws and scrolling feel slower than a release build. Dependencies are now built at opt-level 2 in the dev profile; the workspace crates are unchanged. (Cargo.toml)

      Documentation

      • macOS: running with cargo run — docs/MACOS_BUILD.md now shows the full cargo run command with the macOS feature set and explains why the default features fail on javascriptcoregtk-6.0. (docs/MACOS_BUILD.md)

      Dependencies

      • Updated (semver-compatible): arc-swap 1.9.4→1.9.5, itoa 1.0.18→1.0.19, notify-types 2.2.0→2.3.0, syn 3.0.9→3.0.10. cargo deny check advisories is clean; CLI downloads, FreeRDP 3.33.0, cJSON 1.7.19, GNOME runtime 51 and Snap core26 are current.
      • RUSTSEC-2023-0071 (rsa Marvin Attack) — a fix now exists but is still out of reach — rsa 0.10.0 (2026-11-08) is the patched release, with constant-time arithmetic. RustConn cannot take it yet: ironrdp-connector 0.12.0, the latest, pins picky =7.0.0-rc.26, and picky, sspi and winscard pin rsa =0.10.0-rc.18; the same pins hold sspi 0.23.1, winscard 0.4.1, picky rc.29 and pkcs1 0.8.0 back. The acceptance rationale in deny.toml and .cargo/audit.toml is updated to say so; it is not exploitable in a local client
    2. v0.24.92026-11-09 · 2026-11-09 01:21 UTC
      查看更新说明

      What's Changed

      Added

      • Azerbaijani (az) added — PR #414, contributed by Naim Shafiev — a full catalogue of this release's strings, with terminology aligned to the GNOME and Firefox Azerbaijani translations. Azerbaijani can be chosen in Settings → Interface → Language (it maps to the az_AZ.UTF-8 locale), and the translator is credited in the About dialog. (po/az.po, po/LINGUAS, rustconn/src/i18n.rs, rustconn/src/app.rs, README.md, docs/INSTALL.md)

      Fixed

      • The CodeQL scan runs again — every job of the in-repo CodeQL workflow failed. Rust was set to the autobuild build mode, which CodeQL does not support for Rust (only none); the Python and Ruby jobs found no code, because the only Python and Ruby files live under scripts/ and packaging/, which the config excludes; and the Actions job's results were refused because the repository's CodeQL default setup was still enabled. The workflow now scans actions and rust (build mode none), and default setup is to be turned off in Settings → Code security, as the workflow header now explains. The CodeQL change was contributed in PR #414 by Naim Shafiev. (.github/workflows/codeql.yml, .github/codeql/codeql-config.yml)

      Changed

      • Bitwarden's "Keep the CLI running" process now stops when the screen locks or the computer suspends — with the switch on, one bw serve process holds the unlocked vault in its memory, and until now it stayed running while the user was away. It is now stopped on the same screen-lock and suspend signals that remove RustConn's SSH keys from the agent, on Linux and macOS. Nothing asks for the master password afterwards: the session key stays in RustConn, as it does with the switch off, so the next vault operation starts a fresh bw serve and only that first operation is slower. A process busy with an operation at that moment is stopped as soon as the operation finishes, so a lookup in flight is never cut off, and the stop never delays the lock or the suspend. In the Flatpak this needs the same opt-in flatpak override as the SSH key removal; in the Snap a screen lock is seen and a suspend is not. (rustconn-core/src/secret/bitwarden.rs, rustconn-core/src/secret/bitwarden_serve.rs, rustconn-core/src/lock_events/mod.rs, rustconn/src/app.rs, docs/BITWARDEN_SETUP.md, docs/INSTALL.md)

      Dependencies

      • resvg 0.48 → 0.49 — the SVG renderer for the tray icon (supersedes Dependabot PR #404). The calls RustConn makes (usvg::Tree::from_data, resvg::render) are unchanged in this release. (rustconn/Cargo.toml)
      • CI — taiki-e/install-action v2.87.25 → v2.88.1 (Dependabot PR #403), pinned by commit SHA as before, in every CI and release job that installs a Rust tool. (.github/workflows/ci.yml, .github/workflows/release.yml)
      • Updated (semver-compatible): crypto-bigint 0.7.10→0.7.11, notify 8.2.1→8.2.2, usvg 0.48.1→0.49.0 (with resvg), uuid 1.29.1→1.29.2, zip 9.4.2→9.5.0. cargo deny check advisories is clean; cargo-sources.json regenerated for the Flatpak/Flathub manifests.

      Installation

      Flatpak (Recommended)

      flatpak install flathub io.github.totoshko88.RustConn
      

      Snap

      sudo snap install rustconn
      

      Debian/Ubuntu (.deb from this release)

      sudo dpkg -i rustconn_0.24.9_amd64.deb
      sudo apt-get install -f  # Install dependencies if needed
      

      Fedora (.rpm from this release)

      sudo dnf install rustconn-0.24.9-1.fc44.x86_64.rpm
      

      AppImage

      chmod +x RustConn-0.24.9-x86_64.AppImage
      ./RustConn-0.24.9-x86_64.AppImage
      

      macOS (Homebrew)

      brew tap totoshko88/rustconn
      brew install rustconn
      open $(brew --prefix)/opt/rustconn/RustConn.app
      

      All 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:rustco

    3. v0.24.82026-11-08 · 2026-11-08 01:53 UTC
      查看更新说明

      What's Changed

      Added

      • Dynamic Folder scripts can define the full connection, not just host/port/username (issue #410) — a dynamic-folder entry now accepts an optional protocol_config object in the native RustConn shape, so a generated connection can carry anything the connection editor sets: an SSH startup_command (e.g. tmux new-session -A -s my-session), an auth_method, RDP display options, and so on. The object is the same tagged form the config file uses ({"type": "Ssh", "startup_command": "…", "auth_method": "agent"}); its type tag decides the protocol and default port, and the protocol string is then only used to warn on a mismatch. Entries without protocol_config behave exactly as before, so existing scripts are unaffected. Because the connection stays read-only, the configuration is re-applied on every refresh instead of being lost when the folder regenerates, which removes the need to hand-edit a generated connection only to have the edit discarded on the next refresh. (rustconn-core/src/models/dynamic_folder.rs, rustconn-core/src/dynamic_folder.rs, docs/USER_GUIDE.md)
      • A KeePass database per connection or group (issue #411) — with the KeePass backend, a connection or a group can now name its own .kdbx file instead of the single global one, so personal and corporate vaults can live side by side. Groups get a KeePass Database row on the Identity page (independent of Default Credentials); connections get one beside the Vault password source. A connection reads from its own file, else from the nearest group above it that sets one, else from the global database; an empty field inherits. Only the file changes — the database password, key file and YubiKey slot still come from Settings → Secrets, so a database that needs a different passphrase is not covered yet. The path is device-local: it is stripped from the full sync export, never part of Group Sync, and a remote edit keeps this device's own value. Switching a connection's password source away from Vault drops its path. The unlock prompt for a locked database now names the override file. Every KeePass operation follows the same resolution, not just the connect: saving, loading and testing a password in the connection editor, a group's own password (saved, loaded and deleted in the group's database), copying a connection's password on paste, deleting it with the connection, renaming it on an edit or group move, and the VNC password prompt. A move that changes which database a connection resolves to leaves the entry in the old file and logs it, rather than copying between databases; the password is entered again. The KeePass Database rows are hidden when the KeePass backend is not active, and the file picker filters on *.kdbx with a named filter. rustconn-cli follows the same resolution: secret get, secret set, secret delete and add --password-stdin open the connection's database instead of always the global one and print which file they used, and the override is set with --kdbx-path on add, update and group edit (an empty value on update/group edit clears it) and shown by show and group show. Backend-to-backend credential transfer still uses the global database only. (rustconn-core/src/models/connection.rs, rustconn-core/src/models/group.rs, rustconn-core/src/secret/resolver.rs, rustconn-core/src/sync/full_export.rs, rustconn/src/state/mod.rs, rustconn/src/state/sync.rs, rustconn/src/vault_ops.rs, rustconn/src/dialogs/connection/, rustconn/src/dialogs/widgets.rs, rustconn/src/window/edit_group.rs, rustconn/src/window/connection_dialogs.rs, rustconn/src/window/rdp_vnc.rs, rustconn-cli/src/, po/, docs/USER_GUIDE.md, docs/CLI_REFERENCE.md)

      Fixed

      • Embedded RDP on macOS sent the wrong keys (issue #412) — on the macOS GTK Quartz backend the GDK hardware keycode is an Apple virtual keycode (NSEvent.keyCode), not an evdev keycode, but the embedded (IronRDP) c
    4. v0.24.72026-11-06 · 2026-11-06 00:00 UTC
      查看更新说明

      What's Changed

      Added

      • The Kubernetes connection editor can pick a context from the kubeconfig — the Context field keeps its free-text entry but gains a button that lists the contexts defined in the kubeconfig the connection names (or $KUBECONFIG / ~/.kube/config when the field is empty), with the current-context marked. The list is read with serde_yaml, taking only the context names and current-context and ignoring every other kubeconfig field; a missing or unreadable file simply offers nothing to pick. (rustconn-core/src/protocol/kubernetes.rs, rustconn-core/src/protocol/mod.rs, rustconn/src/dialogs/connection/kubernetes.rs)
      • A crash from a Rust panic is now recorded to a local log, and the next launch says so — a panic writes its message, location, backtrace and the build version to $XDG_STATE_HOME/rustconn/crash-<timestamp>.log (the OS data directory where there is no state directory). The next start shows a banner with an Open Log button; once the log has opened the logs are cleared so a handled crash does not reappear (if it cannot be opened, the banner stays and a toast names the file). A panic the program survives (one caught internally, or one that only ends a background thread) is removed again on a clean exit, so the banner appears only when the previous run really did not finish. The log is owner-readable only, stays on the machine and is never sent anywhere — review it before sharing, as a panic message can contain formatted data. This catches Rust panics only; a SIGSEGV inside a C library (GTK, VTE) does not come through here. (rustconn-core/src/crash_report.rs, rustconn/src/main.rs, rustconn/src/app.rs, rustconn/src/window/mod.rs)
      • Run a saved snippet from the Command Palette, and save a terminal selection as a snippet — the palette's new ! prefix lists snippets and runs the chosen one; because the palette hangs off the main window, it always asks for confirmation first, so a snippet is never sent to the wrong terminal when a detached window or split pane holds focus (issue #315). The terminal right-click menu gains Save Selection as Snippet…, which opens the snippet editor with the selection of the terminal you right-clicked pre-filled (also in a split pane or a detached window) for you to name and trim — nothing is stored without your action. (rustconn-core/src/search/command_palette.rs, rustconn/src/dialogs/command_palette.rs, rustconn/src/dialogs/snippet.rs, rustconn/src/terminal/config.rs, rustconn/src/window/snippets.rs, rustconn/src/window/snippet_actions.rs)

      Fixed

      • A "Save N Files" RDP download no longer hangs on "Downloading…" when the clipboard channel is gone, and a failed save is now shown as a toast (issue #390) — if the CLIPRDR channel was unavailable when a file-contents request was made, the request returned silently and the button sat on "Downloading…" forever, because the error was raised through the clipboard backend that no longer existed. The failure is now reported straight through the session event channel, so the batch unwinds. A batch that could not save every file also raises an error toast, not just a 3-second inline status the user could miss. (rustconn-core/src/rdp_client/client/commands.rs, rustconn/src/embedded_rdp/polling_handlers.rs)
      • Embedded RDP now locks the remote file clipboard during a copy, so a file copied in the session survives a focus change (issue #390, Fix B) — the embedded clipboard channel now advertises CAN_LOCK_CLIPDATA. When the server also supports it (Windows does), IronRDP sends a Lock PDU after the Format List Response whenever the server announces a file list, carries the clipDataId on each File Contents Request, and expires each lock on its own. Without it a server was free to drop the File Stream data the moment its clipboard changed — the "copy a file in the session, switch to another app, come back and Save" race that the earlier Fix A could not cover, because
    5. v0.24.62026-11-05 · 2026-11-05 14:41 UTC
      查看更新说明

      What's Changed

      Added

      • SSH keys RustConn adds to the agent itself expire after 12 hours and are removed on exit — when a multi-hop ProxyJump connect or an SFTP / Midnight Commander launch needs a key the agent lacks, RustConn runs ssh-add -t 43200 without prompting (30-second limit), records the key (and its certificate), and removes exactly those keys on exit over the agent socket. Keys already in the agent before RustConn's add, or added in Settings → SSH Agent, are never touched; a key you re-add with ssh-add in a terminal after RustConn added it is still removed on lock, suspend or exit. Legacy PEM/PKCS#8 keys are added only to an empty agent and rely on the 12-hour lifetime, as do keys added by rustconn-cli sftp when it cannot clean up. (rustconn-core/src/ssh_agent/own_keys.rs, rustconn-core/src/ssh_agent/wire.rs, rustconn-core/src/ssh_agent/keyfile.rs, rustconn-core/src/sftp.rs, rustconn/src/window/protocols_ssh.rs, rustconn/src/app.rs, rustconn-cli/src/commands/sftp.rs, docs/USER_GUIDE.md, and others)
      • The same keys are also removed on screen lock and suspend (Linux) — a new D-Bus listener (lock_events, non-default lock-events feature, always on in the GUI) watches login1 PrepareForSleep and the freedesktop/GNOME screensaver ActiveChanged, holding a sleep delay inhibitor so the removal finishes before suspend. Unreachable sources are logged and skipped. Flatpak and Snap get no new permissions: in the Flatpak lock/suspend removal is an opt-in flatpak override (docs/INSTALL.md); in the Snap screen lock works, suspend is not detected. (rustconn-core/src/lock_events/, rustconn-core/Cargo.toml, rustconn/src/app.rs, docs/INSTALL.md, docs/SNAP.md, docs/USER_GUIDE.md, and others)
      • The same keys are also removed on screen lock and sleep (macOS) — a new isolated FFI crate, rustconn-lock-sys, observes com.apple.screenIsLocked and NSWorkspaceWillSleepNotification and feeds them into the same lock_events subscribers through lock_events::notify. Sleep is not delayed for the removal; an unfinished removal completes on wake. (rustconn-lock-sys/, rustconn-core/src/lock_events/mod.rs, rustconn/src/app.rs, .github/workflows/ci.yml, scripts/verify.sh, docs/ARCHITECTURE.md, and others)
      • Encrypted SSH keys are unlocked once per session in RustConn's own dialog — a connect, reconnect, first jump host, or SFTP / mc launch with a passphrase-protected OpenSSH key the agent lacks now opens an Unlock SSH Key dialog (three attempts); the key goes into the agent for 12 hours and is removed on exit, lock and suspend like the other keys RustConn adds. The passphrase is never stored or read from a vault. Cancel, a refusing agent (e.g. 1Password) or a held certificate fall back to ssh's own terminal prompt; a Cancel is remembered for that key and agent socket until RustConn quits, and legacy PEM/PKCS#8 keys or an agent that does not answer get no dialog. Concurrent connects share one dialog, and the SSH editor warns that Agent Forwarding exposes unlocked keys. (rustconn-core/src/ssh_agent/unlock.rs, rustconn-core/src/ssh_agent/own_keys.rs, rustconn/src/dialogs/key_unlock.rs, rustconn/src/window/key_unlock.rs, rustconn/src/window/protocols_ssh.rs, rustconn/src/dialogs/connection/ssh.rs, po/, docs/USER_GUIDE.md, and others)
      • Vietnamese (vi) added — PR #408, contributed by dinhkarate — a full catalogue brought up to this release's strings, selectable in Settings → Interface → Language, with the translator credited in the About dialog. (po/vi.po, po/LINGUAS, rustconn/src/i18n.rs, rustconn/src/app.rs)

      Fixed

      • A connection's key sequence is now sent when the connect first waits for the port check — the Automation key sequence and split-view drag-and-drop registration were skipped for SSH, Telnet and Mosh connects that ran the (default) pre-connect port check. Both now r

    README 原文

    未翻译

    RustConn is a cross-platform connection orchestrator with a GTK4/libadwaita interface. It brings SSH, RDP, VNC, SPICE, MOSH, Telnet, Serial, Kubernetes, and Zero Trust connections under one roof — with embedded Rust clients where possible and seamless integration with external tools where needed. Runs on Linux (GTK4/libadwaita), macOS, FreeBSD, and Windows via WSLg.

    Screenshots

    Welcome screenEmbedded RDP session
    Connection wizardSFTP file browser
    Split viewTab overview
    SettingsEmbedded web browser

    More screenshots on the Flathub listing.

    Features

    Capabilities

    CategoryDetails
    File TransferSFTP file browser via system file manager (sftp:// URI, D-Bus portal)
    OrganizationGroups, tags, templates, custom icons (emoji/GTK), connection history & statistics
    MonitoringRemote host metrics bar (CPU, RAM, disk, network, load, system info) — agentless, per-connection toggle
    ImportAsbru-CM, Remmina, SSH config, Ansible inventory, Royal TS, MobaXterm, SecureCRT, PuTTY/KiTTY (.reg), mRemoteNG (confCons.xml), Remote Desktop Manager, RDP files (.rdp), virt-viewer (.vv), libvirt (XML + daemon), CSV, native (.rcn)
    ExportAsbru-CM, Remmina, SSH config, Ansible inventory, Royal TS, MobaXterm, SecureCRT, CSV, RDP files (.rdp), native (.rcn) — passwords are never exported
    SecurityKeePassXC (KDBX), libsecret, macOS Keychain, Bitwarden CLI, 1Password CLI, Passbolt CLI, Pass (passwordstore.org), script credentials; encrypted-file fallback with no keyring required (machine-bound or a portable file for use across machines); hardware-token SSH auth (FIDO2 security keys, PKCS#11 / YubiKey / smart cards); FIDO2 passkey redirection for RDP sessions
    TerminalSplit terminals, command snippets, text highlighting rules, session recording, custom terminal themes, tab overview, tab pinning, OSC 133 shell integration (prompt navigation + failed-command marker)
    Session WindowsMove any session (SSH, Telnet, Serial, Kubernetes, MOSH, Zero Trust, embedded RDP/VNC/Web) to its own window and back with Ctrl+Shift+M — per-monitor fullscreen, never reconnects
    AutomationExpect rules, key sequences, pre/post-connect tasks, elevated credentials (sudo/su injection), output filters (ChromaTerm), cluster & ad-hoc broadcast, session reconnect, Wake-on-LAN
    NetworkingJump hosts (bastions) picked per connection, per group, or as a global default — honoured by SSH, SFTP, RDP, VNC, and SPICE, with multi-hop chains and a per-connection Direct override; Open Browser via Tunnel — one right-click on an SSH host raises a SOCKS proxy and opens a browser (embedded or external Chromium) routed through it, to reach host-only web UIs; Multipath TCP for mobility & bandwidth aggregation (SSH/RDP/VNC), network-change auto-reconnect, port knocking, fwknop SPA; one-click QUIC (quicssh) ProxyCommand preset for SSH over QUIC (connection migration and UDP NAT traversal; quicssh installed separately)
    WorkflowSmart folders, SSH port forwarding, visual SSH tunnel builder, workspace profiles (save/restore open sessions, including split layout and divider ratio), settings backup/restore, .rdp file association
    Cloud SyncSynchronize connections via shared cloud directory (Google Drive, Syncthing, Nextcloud, Dropbox); group sync with Master/Import access model; simple sync with UUID-based merge
    CLIrustconn-cli — headless management: list/add/update/delete connections, import/export, snippets, groups, templates, clusters, WoL, shell completions; optional secret and client-launch commands behind features
    LanguagesEnglish, plus translations into Azerbaijani, Belarusian, Czech, Danish, German, Spanish, French, Italian, Georgian, Kazakh, Dutch, Polish, Portuguese, Slovak, Swedish, Ukrainian, Uzbek, Vietnamese and Simplified Chinese

    Protocol support

    ProtocolClientType
    SSHVTE terminal (port forwarding: -L/-R/-D)Embedded
    RDPIronRDP / FreeRDP fallback (bundled in Flatpak)Embedded + external
    VNCvnc-rs / vncviewer fallbackEmbedded + external
    SPICEremote-viewer / virt-viewerExternal
    TelnetVTE terminalEmbedded
    Serialpicocom via VTEExternal (bundled in Flatpak)
    Kuberneteskubectl exec via VTEExternal
    MOSHmosh via VTEExternal
    Zero TrustAWS SSM, GCP IAP, Azure Bastion, Azure SSH (AAD), OCI, Cloudflare, Teleport, Tailscale, Boundary, Hoop.devExternal
    WebEmbedded WebKitGTK 6.0 browser (Linux) / System browser / Custom browser commandEmbedded + external

    Installation

    MethodCommand / Link
    Flatpak (recommended)flatpak install flathub io.github.totoshko88.RustConn
    Snapsudo snap install rustconn (permissions)
    macOS (Homebrew)brew tap totoshko88/rustconn && brew install rustconn
    Debian 13 / Ubuntu 24.04 / Ubuntu 26.04OBS apt repository (setup)
    openSUSE (Tumbleweed, Slowroll, Leap 16.0)OBS zypper repository (setup)
    Fedora 43 / 44OBS dnf repository (setup)
    Arch Linuxyay -S rustconn (AUR, community)
    FreeBSDpkg install rustconn (ports, community)
    AppImageGitHub Releases
    Windows (WSL2)Runs under WSLg (guide)
    From sourceRust 1.95+, GTK4 4.14+ (build guide)
    Nix (flake)nix profile install github:totoshko88/RustConn or add to your flake inputs

    Files attached to a GitHub release carry a signed build-provenance attestation — verify a download with gh attestation verify <file> --repo totoshko88/RustConn (details).

    Keyboard shortcuts are customizable in Settings → Keybindings; press Ctrl+? in the app for the complete, always-current list.

    Documentation

    DocumentDescription
    User GuideComplete usage documentation
    InstallationAll installation methods and repository setup
    Build GuideBuilding from source, feature flags, per-distro prerequisites
    macOS BuildBuilding and running on macOS, Homebrew, DMG packaging
    Windows / WSL2Running RustConn on Windows via WSLg
    CLI Referencerustconn-cli commands and examples
    ArchitectureCrate structure and design decisions
    CI & Build FlowCI pipelines, OBS packaging, Flathub release process
    Zero TrustSetup guides for each supported Zero Trust provider
    ChangelogRelease history and notable changes

    Contributing

    CONTRIBUTING.md covers development setup, the quality gate, and the conventions a pull request is checked against. Participation is under the Code of Conduct.

    • Bugs and features — issue tracker; the forms ask for the version, install method, and desktop, which is usually what a diagnosis turns on.
    • Questions — Discussions.
    • Code — see the Build Guide and Architecture to get started.
    • Translations — RustConn ships every catalogue listed in po/LINGUAS; the .po files live in po/. New languages and corrections are appreciated.
    • Vulnerabilities — privately, via Security Advisories rather than an issue (SECURITY.md).

    Support

    License

    GPL-3.0 — Made with ❤️ in Ukraine 🇺🇦