x3 916a167f67 feat: rewrite terminal to use vte_terminal_spawn_sync
Replaced the SSH library + IO thread + intermediate PTY bridge with
vte_terminal_spawn_sync(). This eliminates the broken terminal behavior
(backspace, Ctrl+C, copy/paste, bash completion) caused by the
intermediate PTY with no process on the slave side.

- SshTerminal now spawns 'ssh' as a VTE subprocess
- Removed libssh dependency from terminal (still used for key validation)
- Removed IO thread, manual PTY creation, and thread synchronization
- VTE now handles all terminal I/O, line discipline, resize, etc.
- Password saved: uses sshpass -e with SSHPASS env var if available
- Password not saved: ssh prompts interactively in the terminal
- Removed show_password_dialog (no longer needed)
- Simplified connect flow in ssh_client.cpp
2026-09-07 16:54:21 +00:00
2026-09-07 15:58:31 +00:00

x3-ssh

A GTK3-based SSH client with a tabbed terminal interface, server sidebar, notifications, and SSH key storage.

Icon

Features

  • Tabbed terminal - Multiple SSH sessions in tabs
  • Server sidebar - Saved servers in a sidebar, double-click to connect, right-click for Edit/Delete
  • Quick connect - Connect directly via host/user/port fields in the toolbar
  • Password storage - Optionally save passwords with servers (stored in config file)
  • SSH key management - Generate, import, and manage SSH keys
  • Notifications - Animated notification bar for status messages
  • VTE terminal - Full terminal emulation with 256 color support
  • Resizable pty - Terminal auto-resizes the remote pty on window resize
  • System integration - .desktop file and icon for application menu entry

Dependencies

  • GTK+ 3.0 (>= 3.24)
  • VTE 2.91 (>= 0.50)
  • libssh (>= 0.9)
  • autotools / autoconf / automake / libtool
  • pkg-config
  • g++ with C++17 support

Building

# Install dependencies (Debian/Ubuntu)
sudo apt install libgtk-3-dev libvte-2.91-dev libssh-dev \
    autoconf automake libtool pkg-config

# Build
mkdir -p build-aux
autoreconf -fi
./configure
make

# Install (installs binary, .desktop file, and icon system-wide)
sudo make install

Uninstall

sudo make uninstall

Configuration

Server configurations are stored in:

~/.config/sshclient/servers.conf

SSH keys are stored in:

~/.config/sshclient/keys.conf
~/.config/sshclient/keys/

Usage

  1. Start the application: x3-ssh
  2. Server Sidebar: Saved servers appear in the left sidebar
    • Double-click to connect
    • Right-click for context menu (Connect / Edit / Delete)
    • Click + to add a new server
  3. Quick Connect: Enter host, user, and port in the toolbar, click "Connect"
  4. SSH Keys: Click "Keys" in the toolbar to generate or import SSH keys
  5. Tabs: Click "+ Tab" for a new empty tab, "Close Tab" to close the current one

Server Dialog Fields

Field Description
Name Display name for the server
Host Hostname or IP address
User SSH username
Port SSH port (default: 22)
Password Optional, can be saved
Save password Checkbox to store password in config
SSH Key Optional key for public key authentication

Notifications

The notification bar at the top shows status messages:

  • Server saved: <name> - when a server config is saved
  • Server connected: <user>@<host>:<port> - on successful connection
  • Server disconnected - when disconnecting
  • Server removed: <name> - when a server is deleted
  • Key generated: <name> / Key imported: <name> / Key deleted: <name>
  • Failed to connect to <host> - on connection failure (red)

Notifications auto-hide after 4 seconds.

Layout

┌────────────────────────────────────────────────────┐
│ [Notification bar - auto-hiding]                   │
├────────────────────────────────────────────────────┤
│ [Server▼] [host___] [user___] [port] [Connect] ...│
├───────────┬────────────────────────────────────────┤
│ Servers   │ [Tab: MyServer] [Tab: Prod] [+]        │
│ +─────── │                                        │
│ MyServer  │  user@host:~$                         │
│ root@h:22 │                                        │
│           │                                        │
│ Prod      │                                        │
│ admin@p:22│                                        │
├───────────┴────────────────────────────────────────┤
│ Connected to root@host:22                          │
└────────────────────────────────────────────────────┘

Right-click on a server in the sidebar:

┌──────────┐
│ Connect  │
│ Edit     │
│ Delete   │
└──────────┘

License

MIT

S
Description
GTK3 SSH client with tabbed terminal, server management and SSH key storage
Readme
564 KiB
Languages
Makefile 48.9%
Shell 31.1%
C++ 19.9%
M4 0.1%