Me dotfiles.
wget -qO- https://raw.githubusercontent.com/d-gubert/dotfiles/main/scripts/bootstrap.sh | bashThis clones the repo to ~/dev/dotfiles, installs git first if needed, and runs make all.
git clone https://github.com/d-gubert/dotfiles.git ~/dev/dotfiles
cd ~/dev/dotfiles# Install everything
make all
# Or install by category
make essential # core tools, shell, window manager
make development # dev runtimes and CLI tools
make utilities # optional quality-of-life toolsIndividual packages can also be installed on their own:
make install-neovim
make install-zsh # also installs oh-my-zsh and all pluginsStow would error out if directories already exist and are not owned by it, so we actually run stow as the first step in make.
If you add other configuration files to the ubuntu directory, you can get stow to manage them as well by running make stow.
Stow is usually used by having one directory for each software you want to manage, with the internal structure of that directory being mirrored in the target. I didn't like that, so I just threw all config files into the ubuntu directory, then I can stow everything there to my home directory.
| Tool | Description | Installed via |
|---|---|---|
| homebrew | Package manager | install script |
| stow | Dotfiles symlink manager | brew |
| brave-browser | Brave Browser | install script |
| enpass | Password manager | apt (Linux) / brew cask (macOS) |
| zsh | Shell | brew |
| oh-my-zsh | Zsh framework | install script |
| powerlevel10k | Zsh theme and prompt | git |
| bat | cat with syntax highlighting |
brew |
| btop | System resource monitor | brew |
| docker | Container runtime | install script |
| ffmpeg | Audio/video processing | brew |
| fzf | Fuzzy finder | brew |
| glow | Markdown renderer for the terminal | brew |
| jq | JSON processor | brew |
| fd | Fast find replacement |
brew |
| kanata | Software keyboard remapper | brew |
| neovim | Text editor | brew |
| ripgrep | Fast grep replacement (rg) |
brew |
| wezterm | GPU-accelerated terminal emulator | apt (Fury repo, Linux) / brew cask (macOS) |
| herdr | Terminal workspace manager for AI coding agents | brew |
| i3 (Linux only) | Tiling window manager, with dependencies below | apt |
| Dependency | Description |
|---|---|
| maim | Screenshot tool |
| pulseaudio | Audio control |
| playerctl | Media player control |
| xserver-xorg-input-libinput | X11 input driver |
| xinput | X11 input device utility |
| network-manager-applet | i3 tray icon (nm-applet) |
| blueman | Bluetooth manager |
| arandr | GUI front-end for xrandr (display configuration) |
| xclip | Clipboard CLI tool |
| slop | Screen area selector |
| rofi | General purpose menu selector |
| Name | Installed via |
|---|---|
| font-fira-code-nerd-font | brew |
| Plugin | Description |
|---|---|
| zsh-autosuggestions | Fish-like command suggestions |
| zsh-syntax-highlighting | Shell syntax highlighting |
| zsh-vi-mode | Better vi mode for zsh |
| zsh-autopair | Auto closes pairs of symbols |
| Tool | Description | Installed via |
|---|---|---|
| ast-grep | AST-based code search and rewrite (sg) |
brew |
| dvm | Deno version manager | install script |
| gh | GitHub CLI | brew |
| lazygit | Terminal UI for git | brew |
| meteor | Full-stack JavaScript framework | install script |
| node | JavaScript runtime | volta |
| tealdeer | Fast tldr client |
brew |
| vi-mongo | MongoDB TUI | brew |
| volta | Node.js toolchain manager | install script |
| Tool | Description | Installed via |
|---|---|---|
| carapace | Multi-shell completion generator | brew |
| jwt-ui | JWT TUI codec | brew |
| lazyjira | Jira TUI client | brew |
| tree-sitter | Parser generator and incremental parsing | brew |
| spotatui | Spotify TUI | prebuilt installer |
These have a make install-<tool> target but aren't pulled in by any aggregate target above — install them individually if you want them.
| Tool | Description | Installed via |
|---|---|---|
| alacritty | GPU-accelerated terminal emulator | apt (Linux) / brew cask (macOS) |
| tmux | The OG terminal multiplexer | brew |
| zellij | Terminal multiplexer | brew |
| rgx | Regex TUI | brew |
| sttr | String conversion CLI | brew |
| Plugin | Description |
|---|---|
| TPM | Tmux Plugin Manager |
| tmux-sensible | Sensible defaults for Tmux |
| tmux-resurrect | Save and restore sessions |
| tmux-yank | Better copy-mode |
| catppuccin | Catppuccin for Tmux |
A local Claude Code plugin that prefixes the current tmux window name with a glyph while Claude waits for you — ● when it finishes a turn, 🔔 when it needs permission — and clears it once you reply. Tweak the glyphs in the plugin's scripts/tmux-window-status.sh.
- Plugin:
ubuntu/.claude/skills/tmux-window-status/(hooks + script). It's dropped into the config dir'sskills/, so Claude Code auto-loads it astmux-window-status@skills-dir— no marketplace or install step, and nothing added to~/.claude/settings.json. - tmux side:
ubuntu/.tmux.confsplices a@status_glyphuser option into the catppuccin window label