Everything in config/ symlinks to ~/.config/<same name>, managed by the dot
function in config/fish/functions/dot.fish. dot status reports what is linked,
what drifted, and whether the system/ files below still match what is deployed.
On a new machine, link fish by hand first — dot ships inside it, so it cannot
link itself:
ln -s ~/ghq/github.com/bhdai/dotfiles/config/fish ~/.config/fish
dot link allAnything that does not fit that model — root-owned files under /etc and /opt,
directories the tools themselves write to — is documented next to the files it
deploys. Every deploy command in those files is written to run from this repo root.
| Where | What |
|---|---|
agentic/ |
Claude Code and Codex config, linked file by file into ~/.claude and ~/.codex |
config/hypr/ |
Session locking: one entry point, the fallback chain, and how to apply a change |
system/keyd/ |
Keyboard remapping, /etc/keyd |
system/pam.d/ |
PAM services for the Quickshell lock screen, and the safe procedure for testing them |
system/systemd/ |
Clearing fprintd state across suspend |
system/tlp/ |
Battery charge thresholds |
system/zapret/ |
SNI-filtering bypass |
Dolphin launches Terminal=true desktop entries (Neovim, etc.) through KDE's
KTerminalLauncherJob, which hardcodes konsole and errors with Terminal konsole not found when konsole is absent. The installed KIO (Plasma 6.7) predates
xdg-terminal-exec support, so xdg-terminals.list and $TERMINAL are ignored —
the only knob it reads is TerminalApplication in kdeglobals. KDE rewrites that
file on every settings change, so it isn't symlinked; add these two keys to the
[General] group in ~/.config/kdeglobals by hand (KDE preserves keys it doesn't
manage):
[General]
TerminalApplication=ghostty
TerminalService=com.mitchellh.ghostty.desktop