# x3-ssh A GTK3-based SSH client with a tabbed terminal interface, server sidebar, notifications, and SSH key storage. ![Icon](icons/x3-ssh.png) ## 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 ```bash # 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 ```bash 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: ` - when a server config is saved - `Server connected: @:` - on successful connection - `Server disconnected` - when disconnecting - `Server removed: ` - when a server is deleted - `Key generated: ` / `Key imported: ` / `Key deleted: ` - `Failed to connect to ` - 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