- Shell 100%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
|
||
| home | ||
| .gitignore | ||
| bootstrap.sh | ||
| deps.md | ||
| install.sh | ||
| README.md | ||
5d_dotfiles
My terminal, exactly how I like it. This is the config that makes my shell feel like home — the sharp retro font, the clean prompt, the small quality-of-life touches that make typing all day pleasant. It's portable, so I can take it to any machine and feel the same.
Install (one command)
On a fresh Arch/CachyOS machine, just run:
curl -fsSL https://5d.fyi/dotfiles | bash
That installs everything — the zsh plugins, the Spleen font, waifufetch, the whole setup — and links the configs into place. The only thing left is the interactive prompt setup it prints at the end.
What it looks like
- Crisp, retro text — the font is Spleen 32x64, a hand-drawn bitmap font with razor-sharp pixels. No fuzzy anti-aliasing blur; it's pixel-perfect at its designed size.
- Icons that just work — Spleen can't draw icons, so my terminal quietly borrows a Nerd Font for the symbols (folders, git, the little arrows). The text stays Spleen, the icons fill in around it. Best of both.
- A prompt that keeps up — powerlevel10k shows me where I am and my git status instantly, with zero lag, and collapses old prompts so my screen doesn't get cluttered.
Why it's built this way
- No framework, no surprises. I don't use oh-my-zsh or starship. Everything in my shell config is a line I wrote and understand. If something's missing on a machine, it just skips that part instead of breaking.
- Fast. The prompt appears the instant the shell opens, and git status in big repos is instant too.
- Consistent everywhere. Same look and behavior on my desktop, my laptop, over SSH — anywhere.
What's in here
The repo mirrors my home directory under home/:
| File | What it does |
|---|---|
.zshrc |
The main config — paths, the prompt, plugins, history, aliases, small niceties |
.config/zsh/helpers.zsh |
take (make a folder and step into it) and extract/x (unpack any archive) |
.config/kitty/ |
The terminal's look — Spleen font + the color theme |
.config/ghostty/config.ghostty |
Same font setup for Ghostty if I'm using that |
.config/opencode/themes/rog-red.json |
Red theme for the opencode fork — moved out of this repo; install manually if wanted |
Setting up a new machine
# 1. Install the pieces (one command, Arch/CachyOS)
sudo pacman -S zsh zsh-autosuggestions zsh-syntax-highlighting \
zsh-theme-powerlevel10k fzf pkgfile \
ttf-firacode-nerd kitty ghostty
paru -S spleen-font # the Spleen font (AUR only — gives you the crisp bitmap version)
# 2. Drop the configs into place
./install.sh
# 3. Finish the prompt setup
exec zsh && p10k configure
The installer uses GNU stow if you have it; otherwise it makes symlinks itself. Full details in deps.md.
Little touches you'll notice
- Typing is colorful — commands you type get colored as you go, and misspelled commands are gently corrected.
- Arrows recall what you typed — type
par, press Up, and the shell pulls up the last command you ran starting withpar; with nothing typed, Up walks history normally. - Ctrl+arrows hop word by word — Ctrl+Left/Right jump between words while editing (and Alt+arrows do the same), Ctrl+Delete kills a whole word, and word-stops respect path separators so
Ctrl+Wdeletes one segment of a path at a time. Ctrl-X Ctrl-E opens the current line in your editor. - Colored
ls—lsis colored;ll,la,lsa, andlare ready-made variants. - Moving around faster —
mdmakes a folder,...climbs two levels,-goes back to the last directory,1–9jump to spots on the directory stack. - Tab finds things even when you don't know the start —
cd zmatchesfolder_z13(substring fallback), case-insensitively, and even jumps on word separators (cd fz→folder_z13) — prefix matches always win first - Gray suggestions while you type — the shell remembers what you've typed before and quietly suggests it; press Tab to accept.
- History that actually sticks — your last 10,000 commands persist across sessions.
- Tab titles that make sense — the window title shows the folder you're in, then the command you're running.
- Git without the staring — the prompt shows your branch and clean/dirty state instantly, even in big repos.
History of this project
-
2026-08-14 — Restored OMZ keyboard parity the portable config had silently dropped: Ctrl+Left/Right word movement (dead under kitty because xterm-kitty's terminfo has no
kLFT5/kRIT5— Alt+arrows only worked by terminfo luck), Ctrl+Delete kill-word, Ctrl-X Ctrl-E line editing,WORDCHARS=''(word jumps stop at/ . - _),complete_in_word/always_to_end, completion caching, andextended_history/hist_verify. -
2026-08-13 — Started fresh. Dropped oh-my-zsh and the CachyOS defaults for a config I fully own: installed p10k, autosuggestions, and syntax highlighting, fixed history persistence, added the helpers and Ghostty support, and restructured everything into the drop-in
home/layout. Published to my wiki. -
2026-08-13 — Restored completion matching that oh-my-zsh used to provide:
cd zagain finds folders containing z. The portable config now uses a 3-stage matcher (case-insensitive prefix → word-initials → substring) that beats the old behavior by adding case-insensitivity and word-separator jumps. -
2026-08-13 — Restored the rest of the oh-my-zsh niceties the portable config had dropped: Up/Down recall the most recent command by typed prefix (
up-line-or-beginning-search, a built-in widget — no framework dependency), coloredlsplusll/la/lsa/l, nav shortcuts (md/rd/.../-/1–9), Home/End/PageUp/PageDown/Shift-Tab bindings, grep that skips VCS/venv dirs,diff --color, andinteractivecomments/multios/long_list_jobs. Dropped the now-unused zsh-history-substring-search plugin. -
2026-08-13 — Refined scope and restored more OMZ shell feel: added completion waiting dots (red
…on Tab), command typo correction (setopt correct), colored man pages (LESS_TERMCAP_md/_me), andFZF_DEFAULT_COMMAND='fd --type f'. Removed.p10k.zsh(wizard config stays out — each machine runsp10k configure) and the opencoderog-red.jsontheme (not terminal config). Syncedkitty.confdefaults tofont_size 16.0andcopy_on_select no.