Skip to content

LittleHaku/dotfiles

Repository files navigation

dotfiles

Lightweight dotfiles managed with GNU Stow. The previous Ansible playbook has been removed in favour of a small set of stowable packages.

Requirements

  • git
  • GNU Stow
    • Arch: sudo pacman -Sy --needed stow
    • Debian/Ubuntu: sudo apt install stow
    • macOS: brew install stow

Bootstrap packages

The helper ./bin/bootstrap installs the baseline toolchain (fzf, bat, ripgrep, fd/fd-find, eza, lsd, nodejs/npm, texlive, tmux, neovim, uv, zoxide, zsh, etc.) using the detected package manager. Preview the commands before running them:

./bin/bootstrap --dry-run

When you're satisfied, drop --dry-run to install. Package lists live in packages/pacman.txt (primary Arch list), packages/apt.txt (Debian servers), and packages/brew.txt (macOS). Edit the list for the platform you care about. If a package is unavailable on your platform (e.g. uv on older Debian releases), bootstrap will skip it with a warning so the rest can still install. After packages finish, bootstrap will also install the dlvhdr/gh-dash GitHub CLI extension when gh is available (a dry run just prints the command).

packages/ is ignored by Stow via .stow-local-ignore, so it won't ever get linked into your home directory.

Keyd

sudo systemctl enable --now keyd.service
sudo systemctl start keyd
sudo systemctl restart keyd

Windows extras

Optional AutoHotkey helpers live in the windows/ahk package (caps-to-esc-and-ctrl.ahk, alternative-lock.ahk). On Windows or from WSL you can drop them into place with:

./bin/dotfiles windows --target /mnt/c/Users/<username>

That will create C:\Users\<username>\ahk\. Copy the scripts into your AutoHotkey startup folder or include them from your main .ahk entrypoint.

GNOME helpers

Run ./bin/setup-gnome to configure the workspaces, apply the Super-key shortcuts, and install the browser connector that GNOME Extensions expects. Pass --workspaces 6 (for example) to change the default count, --dry-run-install to preview the package command, or --skip-browser if you already have it.

The underlying helpers now live in bin/gnome/ so you can run them individually:

  • ./bin/gnome/workspaces — sets a fixed workspace count (defaults to five) and wires Super+number / Super+Shift+number for switching or moving. Use this when you only want the workspace tweaks.
  • ./bin/gnome/super-shortcuts — calls the workspace helper first, then adds the Super-based app launchers and extra bindings.
  • ./bin/gnome/install-browser-connector — installs gnome-browser-connector (or chrome-gnome-shell on older Ubuntu releases) using pacman, apt, or dnf.

Right now I'm using https://github.com/vinceliuice/MacTahoe-gtk-theme

With the extensions:

  • Dash to Dock: but remember to disable in behavior "Use keyboard shortcuts to activate apps"
  • User Themes: and here select the MacTahoe theme as well as in tweaks
  • Blur my Shell: but it's not working on my Gnome version

Shortcuts and keybinds

The goal is to keep these combos consistent across GNOME, Hyprland, XFCE, KDE, etc.:

  • Super+<number> → focus workspace (five by default)
  • Super+Shift+<number> → move window to workspace
  • Super+Enter → open Ghostty (falls back to wezterm, kitty, alacritty, gnome-terminal)
  • Super+B → open Zen Browser (falls back to firefox, chromium, brave)
  • Super+E → open the file manager (nautilus, then thunar, dolphin)
  • Super+W → close the focused window (D-Bus method with CLI fallbacks)
  • Caps Lock (via keyd) → Esc when tapped, Ctrl when held
  • Left Shift + Right Shift (via keyd) → Caps Lock

Quick start

git clone https://github.com/LittleHaku/dotfiles.git
cd dotfiles
./bin/dotfiles

By default the helper stows the main packages (bash, ghostty, git, nvim, tmux, wezterm, zsh, btop, gh-dash) into $HOME. Pass specific package names to only link a subset:

./bin/dotfiles zsh tmux
./bin/dotfiles --unstow tmux            # remove a package
./bin/dotfiles --dry-run --verbose      # preview actions
./bin/dotfiles --overwrite              # backup conflicts then replace them
./bin/dotfiles --keep-existing          # skip packages blocked by existing files

You can also run Stow manually if you prefer:

stow --target="$HOME" zsh
stow --target="$HOME" nvim

Packages

  • bash.bashrc, .bash_profile
  • git.gitconfig
  • ghostty~/.config/ghostty
  • gh-dash~/.config/gh-dash/config.yml
  • nvim~/.config/nvim
  • tmux~/.config/tmux/tmux.conf
  • wezterm~/.config/wezterm/wezterm.lua
  • zsh.zshrc
  • btop~/.config/btop/btop.conf
  • keyd/etc/keyd/default.conf (sudo stow --target /etc/keyd keyd)
  • windows/ahk~/ahk/*.ahk (optional AutoHotkey helpers)

Notes

  • Run ./bin/dotfiles --target /tmp/test-home to verify changes without touching your actual home folder.
  • Conflicting files are reported by Stow. Pass --overwrite to move them into .dotfiles-backups/<timestamp>/ before symlinking, or --keep-existing to leave them untouched and skip that package. Use --backup-dir <path> to control where backups are stored.
  • Feel free to add new packages following the same structure: create a directory at the repository root and place files exactly where they should appear in your home directory.

About

Dotfiles for Linux and Windows

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published