https://github.com/seinfold/shellfish
Shellfish is a bash script installer of Ubuntu/Debian Linux terminal pack that uses Fish Terminal and custom tools, tweaks and settings for it. Perfect for full stack development, game servers, general nerding and Linux power use!
https://github.com/seinfold/shellfish
bash-script coding debian fish-shell irc kali-linux linux linux-mint poweruser raspberry-pi-os shell-script shell-scripting ubuntu zorin-os
Last synced: about 1 month ago
JSON representation
Shellfish is a bash script installer of Ubuntu/Debian Linux terminal pack that uses Fish Terminal and custom tools, tweaks and settings for it. Perfect for full stack development, game servers, general nerding and Linux power use!
- Host: GitHub
- URL: https://github.com/seinfold/shellfish
- Owner: seinfold
- License: mit
- Created: 2025-10-20T14:43:32.000Z (8 months ago)
- Default Branch: main
- Last Pushed: 2025-10-22T11:56:07.000Z (8 months ago)
- Last Synced: 2025-11-01T21:05:06.240Z (7 months ago)
- Topics: bash-script, coding, debian, fish-shell, irc, kali-linux, linux, linux-mint, poweruser, raspberry-pi-os, shell-script, shell-scripting, ubuntu, zorin-os
- Language: Shell
- Homepage:
- Size: 214 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Shellfish Terminal Toolkit
- **Version:** 1.1.0
- **Author:** seinfold
- **License:** MIT (see `LICENSE`)
- **Credits:** Fish shell, eza, tree, fzf, neofetch, zoxide, GNU screen, irssi, GitHub CLI, JetBrainsMono Nerd Font (Nerd Fonts project), Bun completion contributors
Shellfish tunes your Debian/Ubuntu terminal in minutes. One guided session installs the essentials, locks in high-contrast fonts/icons, and leaves your shell tidy (with backups).

---
## What Shellfish installs
| Component | Purpose |
|-----------|---------|
| **fish shell** | Modern shell with custom modifications that you can tune to your likings |
| **eza** | Fast, colourful replacement for `ls` with Git status and icons |
| **tree** | Recursive directory tree view |
| **fzf** | Fuzzy finder for history, files, and command output |
| **neofetch** | System summary banner |
| **zoxide** | `z` and `zi` smart directory jumping |
| **git** | Version control CLI used by Shellfish helpers |
| **curl** | HTTP utility used during setup and scripting |
| **wget** | Alternate download utility for environments without curl |
| **python3** | Runtime for gitget helper script |
| **GNU screen** | Terminal multiplexer keeping long-running sessions alive |
| **irssi** *(optional)* | IRC client you can run inside screen |
| **gh** *(optional)* | GitHub CLI for quick repo listing and SSH auth checks |
| **unzip** | Required to unpack font archives |
| **JetBrainsMono Nerd Font Light** | Installed automatically so Fish icons render correctly (keep your terminal on this font or another Nerd Font) |
> Shellfish automatically installs JetBrainsMono Nerd Font Light. Switching your terminal to a non Nerd Font may hide file/folder graphic elements.
---
## Shellfish customisations
Quick reminders for the helpers Shellfish installs:
- **`gg` / `gitget`** – list or clone GitHub repositories.
```fish
gg --list # show repos as name.git
gg my-repo.git # clone by name
gg 3 # clone the third entry
```
- **`scr` / `screens`** – easy managing of GNU screen sessions.
```fish
scr NAME # opens screen NAME - use for game consoles / irc / development servers
scr NAME log # opens screen NAME - use for game consoles / irc / development servers with logging under ~/Documents/logs
screens # list all screens running that you can join with 'scr' or detach them with Ctrl-A → D
```
- **`irc`** – shortcut to IRC session with Irssi on a network of your choosing.
```fish
irc # opens irc server connection, use with screen to keep chats open that you can return to
```
- **`stay `** – run a command detached from the terminal (`nohup` wrapper).
- **`ls`** / **`treelist`** – aliased to `eza --icons` and `tree -a -I '.git'` for glyph-rich directory views.
---
## Quick start
```bash
git clone https://github.com/seinfold/shellfish.git ~/shellfish
cd ~/shellfish
chmod +x shellfish.sh
./shellfish.sh
```
### Optional installs
1. **GitHub support** – guided prompts store your GitHub username for `gitget`, optionally install a sample `~/.ssh/config`, and create `~/.ssh/id_ed25519_github`; type `abort` anytime to skip and remember to run `gh auth login`.
1. **irssi** – choose whether to install the IRC client; if enabled you can pick a default network (ircnet/libera/oftc/efnet/custom).
1. **SSH shortcuts** – guided prompts capture alias/server/user/port (type `abort` to skip), update `~/.ssh/config`, and generate matching lowercase/uppercase Fish helpers in `~/.config/fish/functions/ssh_shortcuts.fish`.
Shellfish automatically replaces your `~/.bashrc` - but don't worry it will create backups that you can revert to by just running the script again.
---
## After installation
1. **Add your GitHub key** (if generated):
```bash
cat ~/.ssh/id_ed25519_github.pub
```
Paste into GitHub → Settings → SSH and GPG keys.
2. **Authenticate GitHub CLI** (if enabled):
```bash
gh auth login --hostname github.com --git-protocol ssh --web
```
3. **Open a fresh Fish terminal**
4. **Set a default GitHub user for gitget** (if you skipped it during setup):
```bash
fish -c 'set -Ux GITGET_GITHUB_USER '
```
## Current known risks and problems
1. **Bash path linkings to installed apt packages might have inconsistencies** - Under repair, this basically means that you might need to re-install some tool via apt so that they work with Fish terminal
2. **Installer doesn't fully uninstall** - if you run the installer again to revert changes, it will still leave all installed packages. Check /documents for User Guide that has single command to run to remove all installed packages, modify it so that you wont remove anything you already had
---
## Optional follow-ups
- Tweak the generated `~/.config/fish/functions/ssh_shortcuts.fish` entries anytime or rerun the installer to add more shortcuts.
- Bind `Ctrl+S` to the screen list: `bind \cs 'screens\n'` in `config.fish`.
## Backups
Shellfish automatically backs up any file it changes with a timestamped `.bak`. When you rerun the installer it detects those backups and offers to restore the previous state before applying new settings.
---
ASCII art credit: based on classic “><((°>” fish tweaked for Shellfish.