Skip to content

Repository files navigation

EdgeTerm

English | 简体中文

A small, lightweight, high-performance terminal, SSH, SFTP, FTP, and serial client, built with Rust + Tauri.

EdgeTerm dark theme

EdgeTerm light theme

Small and lightweight

Package (v0.4.1) Download size
Windows x64 installer (.exe) 3.9 MB
macOS Apple Silicon (.dmg) 4.7 MB
Linux .deb (x64 / ARM64) 5.3 MB / 5.2 MB

Features

Session types

Type Backend Description
Local shell portable-pty A real pseudoterminal with synchronized window resizing; the Shell field takes a command line with arguments, such as wsl.exe -d Ubuntu or pwsh -NoLogo
SSH russh + russh-sftp Password, public-key, and ssh-agent authentication, followed by keyboard-interactive rounds where the server asks for a second factor (a one-time code, a push confirmation); jump hosts (ProxyJump) through another saved session, chained if needed; SFTP reuses the same connection with streaming file and folder transfers
SFTP russh + russh-sftp A file-transfer-only session over SSH — same authentication and host-key policy, opened straight into the dual-pane file manager with no terminal
FTP suppaftp Password or anonymous authentication; passive-mode browsing, UTF-8/GBK filename decoding, and streaming file and folder transfers in both directions
Serial serialport Configurable baud rate, data bits, stop bits, parity, and flow control

Text encoding and locale

Terminal sessions are UTF-8 unless the session dialog's Encoding says otherwise: a server or device that talks GB18030 / GBK, Big5, Shift_JIS, EUC-JP, EUC-KR or a Windows / KOI8 code page has its output decoded for the terminal and typed input encoded for the far end, while ZMODEM and XMODEM transfers stay binary. What a shell prints for a non-ASCII file name is decided by its locale, not by the terminal — $'\346\226\207'-style escapes from ls mean the shell's locale is not UTF-8 — so a local shell started with no locale in its environment (every GUI application on macOS) is given a UTF-8 LANG, and the dialog's Locale field sets LANG explicitly: for an SSH session it is sent with the shell request and applied by servers whose sshd_config has AcceptEnv LANG.

Interface

  • Timestamp and line-number gutter — WindTerm's most recognizable feature. Every output line includes [HH:MM:SS.SSS] and a cumulative line number, with the cursor line highlighted. Four display modes are available from the Session menu.
  • Session (left): saved connection profiles in a collapsible tree; double-click to connect. Right-click a heading or a group to create (nested) groups, rename or delete them; right-click a session to connect, edit, move it to another group, or delete it. The New Session dialog lets you choose which group a session is saved to.
  • Filer (right): a file browser that automatically switches to SFTP for SSH sessions, with file and folder upload, download, create-directory, and delete operations. Drag and drop works in both directions, anywhere on the panel: dropping files or folders from Finder / Explorer uploads them into the current remote directory, or copies them into the folder on screen when the Filer is showing local files; dragging an entry out of the window drops it on the desktop or in a file manager — a remote entry is copied down first, so hold the drag until it is ready. A drop the panel cannot take says why instead of doing nothing. Other terminal sessions browse the local filesystem. ⌘J / Ctrl+Shift+J (also in the terminal's context menu and the Filer's locate button) jumps the Filer to the directory the shell is in: a local shell is asked through the OS, an SSH shell through the server (Linux hosts), and a shell that reports its directory with OSC 7 — fish does by default; bash and zsh with a one-line prompt hook — is answered everywhere, sudo and nested shells included.
  • Sender (bottom): send text or hexadecimal input with a chosen line ending (none / LF / CRLF) to the current session or to all open sessions at once. Saved commands are scoped — to one session, a Session panel group, a session kind (serial / SSH / shell) or everywhere — and the Sender lists the ones that apply to the active tab, most specific first.

Display settings

View → Display Settings… sets the interface and terminal font sizes, the family each uses, and how many lines of scrollback a session keeps. No fonts are bundled: leaving a family blank uses the platform's own stack, and the field suggests the families this machine actually has while accepting any name you type, so a private Nerd Font build works too.

Command suggestions

With Edit → Command Suggestions enabled, EdgeTerm remembers the commands you run in the terminal and shows matching history in a popup as you type. steps into the list, Enter / Tab accepts, Esc dismisses; while nothing in the popup is selected, every other key still reaches the shell. Edit → Clear Command History… clears the recorded history.

Tab activity

A background tab shows what is running in it and keeps a highlight afterwards until you visit it, so you can start something slow and switch away. Agentic CLIs — Claude Code, Codex, Gemini CLI, Aider and the like — are followed differently: their session lasts as long as you keep the tool open, so the tab reports the assistant's turns instead, running while it works and finished when it hands the terminal back.

Data export and import

Session → Export Data… writes the saved sessions and their groups, the Sender's saved commands, and the display settings to a single .edgeterm file (plain JSON inside); Session → Import Data… accepts only .edgeterm files.

ZMODEM and XMODEM transfers

Local shell, SSH, and serial terminals automatically detect ZMODEM sessions. Run rz in the terminal to choose and send one or more local files, or run sz <file> to choose where each incoming file is saved.

XMODEM has no handshake to detect, so it is started from Session → File Transfer. Start the other end in the terminal first (rx <file>, sx <file>, a bootloader's loadx, …), then choose Send via XMODEM… or Send via XMODEM-1K… and pick the file, or Receive via XMODEM… and pick where to save it. Receiving accepts CRC and checksum blocks of 128 bytes or 1 KiB; sending uses CRC when the receiver asks for it and falls back to plain 128-byte checksum blocks otherwise. XMODEM carries no file size, so a received file keeps the sender's ^Z padding at the end of its last block. Cancel Transfer in the same menu aborts either protocol.

Mouse copy / paste

A right click in the terminal opens a context menu — Copy, Paste, Select All, Clear Buffer and Reveal Working Directory in Filer — with the word under the pointer selected first; middle-click pastes. On Windows and Linux, Edit → Right Click switches that to Copy or Paste, the console convention: a right click copies the selection if there is one and pastes otherwise, and no menu appears. macOS always uses the menu. Programs that take over the mouse (vim, tmux with mouse support, htop) receive the clicks instead; on Windows / Linux hold Shift to bypass them.

Keyboard shortcuts

macOS Windows / Linux Action
⌘N Alt+N Open the new-session dialog
⌘W Ctrl+Shift+W Close the current session (asks for confirmation while it is still connected)
⌘F / ⌘G Ctrl+Shift+F / Ctrl+Shift+G Search the terminal buffer / find next
⌘K Alt+K Clear the screen
⌘J Ctrl+Shift+J Reveal the shell's working directory in the Filer
⌘[ / ⌘] Alt+[ / Alt+] Switch to the previous / next open session
⌘1⌘9 Alt+1Alt+9 Switch to tab N
⌘⌥← / ⌘⌥→ / ⌘⌥↓ Ctrl+Alt+← / Ctrl+Alt+→ / Ctrl+Alt+↓ Show or hide Session / Filer / Sender
⌘C / ⌘V Ctrl+Shift+C / Ctrl+Shift+V Copy / paste inside the terminal
⌘A Ctrl+Shift+A Select the whole terminal buffer

Every shortcut above can be rebound in View → Keyboard Shortcuts… — click a command's keys and press the combination you want, or clear it to leave the command unassigned — except the tab-number keys and the terminal's own copy / paste / select all, which the terminal answers before the application ever sees them. Help → Restore Default Settings… puts the whole table back.

Releases

Platform Package
Windows x64 NSIS installer (.exe) and portable .zip
macOS Apple Silicon .dmg, plus the .app.tar.gz bundle used by the in-app updater
Linux x64 / ARM64 .AppImage and .deb

The Windows portable zip needs no installation: it ships a data folder next to EdgeTerm.exe, and while that folder exists every setting is stored inside it, so the whole folder can move between machines or live on a removable drive (saved passwords are encrypted with a machine-bound key and do not decrypt elsewhere; sessions and settings travel fine). The AppImage likewise runs in place on Linux without installation.

Installed copies check the latest Release on startup and can update in place; Help → Check for Updates… does the same on demand. A portable copy is not updated in place — it announces new versions and opens the download page instead.

Releases are not notarized on macOS or code-signed with Windows Authenticode; the macOS application uses ad hoc signing only, so the operating system may show a security warning on first install.

License

EdgeTerm is licensed under the GNU General Public License v3.0. Derivative works that are distributed must be released under the same license with their full source code.

The interface icons are Codicons by Microsoft, used under the Creative Commons Attribution 4.0 license.

About

Lightweight terminal, SSH, FTP and serial client built with Rust + Tauri. Installer under 5 MB, single native binary, fast startup.

Resources

Stars

55 stars

Watchers

3 watching

Forks

Releases

Packages

Contributors

Languages