The terminal application I want to use. CLI or GUI.
A terminal application with improvements over the native ones it wraps. Good autocomplete. Knowledge of what directories are commonly used. Directory bookmarks. Syntax highlighting. Integrated SSH support. Convenience functionality for git repos and python virtual environments.
Compatible with Windows, Linux, and Mac. Windows users need to have Powershell 7 or higher installed.
This is not a shell scripting language like bash or powershell: It wraps the existing terminal you
launch it from. In this sense, it differs from zsh, fish etc: These are full scripting/execution systems, in addition to improved an improved UI. This program provides the latter only.
For a GUI version which has correspondingly more features, see shell-gui.
Highlights:

Download and launch from the releases page. If not using Windows
or Ubuntu/Debian, or on an ARM CPU, compile with cargo r --release. You may wish to place the executable
somewhere convenient, and add it to the system path; then you can launch by typing shell.
shelp: Show all commands and key shortcuts.
Ctrl + B: Bookmark the current directory.
Ctrl + 1: Show all directory bookmarks
bm <number> (e.g. bm 2): Go to this number in the bookmarks
bm <a few letters> to go to a bookmark that contains these letters
Ctrl + 2: Show recent directories
cd <number> (e.g. cd 2): Go to this number in the recent directories
cd <a few letters> to go to a recent directory that contains these letters
Ctrl + 3: Show command history. Press again to page through older entries
his <number> (e.g. his 2): Go to this number in the history
his p<page> (e.g. his p2): Jump to a page of the history list
his <a few letters> to go to a recent command that contains these letters
Ctrl + 4: Show command history in the current directory. Press again to page through older entries
this <number> (e.g. this 2): Go to this number in the history
this p<page> (e.g. this p2): Jump to a page of the history list
this <a few letters> to go to a recent command that contains these letters
remote add username@host: Add a remote
Ctrl + 5 (or remote list): Show remotes
ssh 2 Go to #2 on the remotes list
cd cod + Tab: Go to a bookmark or recent directory that contains these letters, e.g ~/code
Use the arrow keys to navigate to recent items
Press Tab to autocomplete

Type cd, then a few characters from the folder name, then press tab to complete the bookmark.

As you type, Shell shows a dimmed (grey) suggestion after the cursor: the most recent command from your history that starts with what you've typed so far. Press Right Arrow or End to accept it; keep typing to ignore it. Suggestions draw on your full saved history, not just the current session.
Tab completes the cd argument against your bookmarks first, then directories on disk (including nested paths like code/Bi), then recent directories, then directories nested anywhere under a bookmark (up to 4 levels deep). For example, with ~/code/Bio bookmarked, cd plasc + Tab completes to ~/code/Bio/plascad from any directory. Other commands fall back to filename completion in the current directory.
The in-progress input is colored as you type: the command word is teal, the subcommand magenta, flags/parameters green, and quote characters orange. The command word turns red when it isn't recognized, i.e. it's not a built-in, not a known shell word, and not an executable found on your PATH.
Run sync followed by a commit message in quote. Quotes are optional. This runs the following:
git add .git commit -am <the commit message>git pushsync "A commit message"
// Or:
sync A commit message
Warning: This isn't suitable for all workflows. If you use git in a way where it isn't appropriate to sync all gitignored files, this may have unintended consequences!
Shell will display the current git branch in the input terminal, if in a directory which hosts a git repo.
Run logs <service>, to view the recent Journalctl logs. Linux only. For example, this runs:
sudo journalctl -u gunicorn -f for the gunicorn service.
shelp: List every command and key shortcut, one per line.exit or quit: Exit the program.sync: Run git add ., git commit -am <the commit message>, and git push.logs: Runs journalctl -u -f with the service.del bm <number>: Delete a bookmark by number.his <number>: Execute a command from history.his <letters>: Execute the newest command containing those letters.his p<page> (e.g. his p2): Show a page of the history list; page 1 is the most recent.this <number> or this <letters>: Execute a matching history command from the current directory.this p<page> (e.g. this p2): Show a page of history from the current directory.hisd <number>: Execute a command from history, in its original working dir.cat: Displays the contents of a (generally text) file. Similar to the standard Linux operation, but
also works on Windows.cd <number>: Go to this recent directory (as listed with Ctrl + 2). For bookmarks, use bm <number>.bm <number>: Go to this bookmark (as listed with Ctrl + 1).bm <letters>: Go to a bookmark whose path contains those letters.cd <letters>: Go to a bookmarked or recent directory whose path contains those letters.cd <part-of-path> + Tab key: Go to this directory history item
The shell handles ssh itself (in-process, via the russh library) instead of launching the OS's ssh client. Passwords are stored in the OS keyring (Windows Credential Manager / macOS Keychain / Linux Secret Service), never in the state file — so reconnecting to a saved remote needs no re-typing.
ssh [user@]host [port] or ssh <number>: Connect to a host, or to a saved
remote by its remote list index. On first connect you're prompted for a
password (entered hidden), which is then saved to the keyring.remote list (or Ctrl + 5): List saved remotes with their indices.remote add [user@]host[:port]: Save a remote (prompts for a password to store).remote del <number>: Remove a saved remote (and its keyring password).mode pty: an interactive shell (full-screen apps like vim/top work);
Ctrl+] detaches back to exec mode. mode exec switches back.exit (while connected) disconnects and returns to the local shell. his N indicator next to the prompt shows the current
item — e.g. S <cwd> his 29 $ .... Fish-style prefix search: if you've already typed something, ↑ walks only the history entries that start with it (e.g. type git then ↑ to step through past git commands); with an empty
input it walks everything.cd <path> into
the input and shows a green cd N indicator next to the prompt; Enter
goes there. Left/Right still move the caret when the input has text and
no cd recall is active.Ctrl + B: Bookmark the current directory.
Ctrl + 2: List the most recent directories a command has been executed from.
Ctrl + 3: List the most recent commands executed.
Ctrl + 4: List commands entered in the current directory.
Ctrl + 5: List saved SSH remotes.
Ctrl + 1: List all bookmarks.
Ctrl + D: Exit
Note: Ctrl + 1–5 work in the Windows terminal via the bundled line editor. Most Unix terminals cannot transmit Ctrl + digit; use the typed commands there.
These lists are paginated (newest items first). Press the same keystroke again
to step to the next (older) page, wrapping back to the first page after the
last. For history, his p<number> or this p<number> jumps straight to a page.
Standard line-editing shortcuts, provided by the underlying line editor:
Application state, including folder bookmarks, is saved in a file called shell_state.ss, in the user's
home directory. It is text-based file format with backwards compatibility support.
Rust
100.0%
The terminal application I want to use. CLI or GUI.
A terminal application with improvements over the native ones it wraps. Good autocomplete. Knowledge of what directories are commonly used. Directory bookmarks. Syntax highlighting. Integrated SSH support. Convenience functionality for git repos and python virtual environments.
Compatible with Windows, Linux, and Mac. Windows users need to have Powershell 7 or higher installed.
This is not a shell scripting language like bash or powershell: It wraps the existing terminal you
launch it from. In this sense, it differs from zsh, fish etc: These are full scripting/execution systems, in addition to improved an improved UI. This program provides the latter only.
For a GUI version which has correspondingly more features, see shell-gui.
Highlights:

Download and launch from the releases page. If not using Windows
or Ubuntu/Debian, or on an ARM CPU, compile with cargo r --release. You may wish to place the executable
somewhere convenient, and add it to the system path; then you can launch by typing shell.
shelp: Show all commands and key shortcuts.
Ctrl + B: Bookmark the current directory.
Ctrl + 1: Show all directory bookmarks
bm <number> (e.g. bm 2): Go to this number in the bookmarks
bm <a few letters> to go to a bookmark that contains these letters
Ctrl + 2: Show recent directories
cd <number> (e.g. cd 2): Go to this number in the recent directories
cd <a few letters> to go to a recent directory that contains these letters
Ctrl + 3: Show command history. Press again to page through older entries
his <number> (e.g. his 2): Go to this number in the history
his p<page> (e.g. his p2): Jump to a page of the history list
his <a few letters> to go to a recent command that contains these letters
Ctrl + 4: Show command history in the current directory. Press again to page through older entries
this <number> (e.g. this 2): Go to this number in the history
this p<page> (e.g. this p2): Jump to a page of the history list
this <a few letters> to go to a recent command that contains these letters
remote add username@host: Add a remote
Ctrl + 5 (or remote list): Show remotes
ssh 2 Go to #2 on the remotes list
cd cod + Tab: Go to a bookmark or recent directory that contains these letters, e.g ~/code
Use the arrow keys to navigate to recent items
Press Tab to autocomplete

Type cd, then a few characters from the folder name, then press tab to complete the bookmark.

As you type, Shell shows a dimmed (grey) suggestion after the cursor: the most recent command from your history that starts with what you've typed so far. Press Right Arrow or End to accept it; keep typing to ignore it. Suggestions draw on your full saved history, not just the current session.
Tab completes the cd argument against your bookmarks first, then directories on disk (including nested paths like code/Bi), then recent directories, then directories nested anywhere under a bookmark (up to 4 levels deep). For example, with ~/code/Bio bookmarked, cd plasc + Tab completes to ~/code/Bio/plascad from any directory. Other commands fall back to filename completion in the current directory.
The in-progress input is colored as you type: the command word is teal, the subcommand magenta, flags/parameters green, and quote characters orange. The command word turns red when it isn't recognized, i.e. it's not a built-in, not a known shell word, and not an executable found on your PATH.
Run sync followed by a commit message in quote. Quotes are optional. This runs the following:
git add .git commit -am <the commit message>git pushsync "A commit message"
// Or:
sync A commit message
Warning: This isn't suitable for all workflows. If you use git in a way where it isn't appropriate to sync all gitignored files, this may have unintended consequences!
Shell will display the current git branch in the input terminal, if in a directory which hosts a git repo.
Run logs <service>, to view the recent Journalctl logs. Linux only. For example, this runs:
sudo journalctl -u gunicorn -f for the gunicorn service.
shelp: List every command and key shortcut, one per line.exit or quit: Exit the program.sync: Run git add ., git commit -am <the commit message>, and git push.logs: Runs journalctl -u -f with the service.del bm <number>: Delete a bookmark by number.his <number>: Execute a command from history.his <letters>: Execute the newest command containing those letters.his p<page> (e.g. his p2): Show a page of the history list; page 1 is the most recent.this <number> or this <letters>: Execute a matching history command from the current directory.this p<page> (e.g. this p2): Show a page of history from the current directory.hisd <number>: Execute a command from history, in its original working dir.cat: Displays the contents of a (generally text) file. Similar to the standard Linux operation, but
also works on Windows.cd <number>: Go to this recent directory (as listed with Ctrl + 2). For bookmarks, use bm <number>.bm <number>: Go to this bookmark (as listed with Ctrl + 1).bm <letters>: Go to a bookmark whose path contains those letters.cd <letters>: Go to a bookmarked or recent directory whose path contains those letters.cd <part-of-path> + Tab key: Go to this directory history item
The shell handles ssh itself (in-process, via the russh library) instead of launching the OS's ssh client. Passwords are stored in the OS keyring (Windows Credential Manager / macOS Keychain / Linux Secret Service), never in the state file — so reconnecting to a saved remote needs no re-typing.
ssh [user@]host [port] or ssh <number>: Connect to a host, or to a saved
remote by its remote list index. On first connect you're prompted for a
password (entered hidden), which is then saved to the keyring.remote list (or Ctrl + 5): List saved remotes with their indices.remote add [user@]host[:port]: Save a remote (prompts for a password to store).remote del <number>: Remove a saved remote (and its keyring password).mode pty: an interactive shell (full-screen apps like vim/top work);
Ctrl+] detaches back to exec mode. mode exec switches back.exit (while connected) disconnects and returns to the local shell. his N indicator next to the prompt shows the current
item — e.g. S <cwd> his 29 $ .... Fish-style prefix search: if you've already typed something, ↑ walks only the history entries that start with it (e.g. type git then ↑ to step through past git commands); with an empty
input it walks everything.cd <path> into
the input and shows a green cd N indicator next to the prompt; Enter
goes there. Left/Right still move the caret when the input has text and
no cd recall is active.Ctrl + B: Bookmark the current directory.
Ctrl + 2: List the most recent directories a command has been executed from.
Ctrl + 3: List the most recent commands executed.
Ctrl + 4: List commands entered in the current directory.
Ctrl + 5: List saved SSH remotes.
Ctrl + 1: List all bookmarks.
Ctrl + D: Exit
Note: Ctrl + 1–5 work in the Windows terminal via the bundled line editor. Most Unix terminals cannot transmit Ctrl + digit; use the typed commands there.
These lists are paginated (newest items first). Press the same keystroke again
to step to the next (older) page, wrapping back to the first page after the
last. For history, his p<number> or this p<number> jumps straight to a page.
Standard line-editing shortcuts, provided by the underlying line editor:
Application state, including folder bookmarks, is saved in a file called shell_state.ss, in the user's
home directory. It is text-based file format with backwards compatibility support.
Rust
100.0%