Claude as your shell. A GNOME app that opens Claude Code in your home directory, in your preferred terminal — one click in the app grid and you're talking to your computer.
For fifty years the way to "use a computer" seriously has been the same: open a terminal, get a shell, type commands. bash is a brilliant abstraction — but it speaks in commands, flags, and pipes, and it does exactly what you say, not what you mean.
Claude Code is the next abstraction level up: a shell where you talk to your machine in language. "Find what's eating my disk", "resize these photos and mail them to Anna", "why won't this service start" — it reads files, runs commands, fixes configs, writes code. The terminal stops being a place where you operate the computer and becomes a place where you delegate to it.
But on the desktop it's still packaged like a developer tool: open a terminal, get bash, and then launch claude. That's launching the new shell from inside the old one. If Claude is the new bash, it deserves what bash has always had — a first-class entry point and executable scripts. claudesh gives it both: an icon in your app grid that drops you straight into Claude Code in ~, and a shebang interpreter that turns plain-language prompts into scripts you can chmod +x.
Grab the .deb from the latest release:
curl -fLO https://github.com/ssubbotin/claudesh/releases/latest/download/claudesh.deb
sudo apt install ./claudesh.debYou also need Claude Code itself (claudesh will tell you if it's missing):
curl -fsSL https://claude.ai/install.sh | bashThen hit Super, type "Claude", press Enter.
If claude is the new bash, a shell script is just a prompt with a shebang. claudesh doubles as a script interpreter:
#!/usr/bin/claudesh
Tidy up the current directory: group loose files into subfolders by
type (Documents, Images, Archives), then print a one-line summary of
what moved.
chmod +x tidy && ./tidy — the script body is sent to Claude Code in print mode (claude -p), running in your current directory like any shell script would.
- Arguments:
./tidy ~/Downloads— extra arguments are appended to the prompt asScript arguments: …, so a script can say "operate on the directory given in the script arguments". - Pipes: stdin flows into claude, so
git diff | ./explainworks like any other filter. - Options in the shebang line pass through to claude:
#!/usr/bin/claudesh --model claude-haiku-4-5. - Permissions: scripts run with
--permission-mode acceptEditsby default — Claude can read, edit files, and run pre-approved commands without prompting, and your deny rules still apply. For a script with the full authority of a real shell script (no guardrails), declare it explicitly:#!/usr/bin/claudesh --dangerously-skip-permissions.
A runnable example ships in examples/hello (installed to /usr/share/doc/claudesh/examples/).
Three small pieces:
/usr/bin/claudesh— a POSIX sh wrapper with two modes. App modecds to$HOMEand runsclaudeinteractively; it probes~/.local/binand other user-level install locations explicitly, because apps launched from GNOME don't get your login-shellPATH, and it holds the window open on errors so messages stay readable. Interpreter mode kicks in when it's invoked as a shebang interpreter: the script body becomes the prompt, executed viaclaude -pin the caller's working directory.claudesh.desktop— the app entry, withTerminal=true. On modern GNOME (withxdg-terminal-exec) that opens your default terminal — Ptyxis, GNOME Terminal, whatever you've chosen — nothing is hardcoded.- the icon — the Claude spark, installed into the hicolor theme.
make deb
sudo apt install ./build/claudesh_*_all.debRequires only make, dpkg-deb, and gzip. make check validates the desktop entry and the script.
Built and tested on Ubuntu 26.04 (GNOME 50). Should work on any Debian-family distro whose desktop environment honors Terminal=true in desktop entries; a terminal that registers with xdg-terminal-exec gives the best experience.
MIT — see LICENSE.
The Claude "spark" logo used as the app icon is a trademark of Anthropic PBC and is not covered by the MIT license; it is included only to identify the application being launched (glyph path via simple-icons, CC0). This is an unofficial community project, not affiliated with or endorsed by Anthropic.