···2233# dotfiles
4455-Personal config files for zsh, bash, fish, Ghostty, Neovim, git, COSMIC, and Sway,
66-managed by a single dependency-free Python script, `dots`.
55+Personal config files for zsh, bash, fish, Ghostty, Neovim, git, COSMIC, Sway,
66+starship, and keyd, managed by a single dependency-free Python script, `dots`.
7788## Layout
991010```
1111dotfiles/
1212-├── dots # the manager itself - lives at the repo root
1313-├── zsh/.zshrc
1414-├── bash/.bashrc
1515-├── fish/ # ~/.config/fish
1616-├── ghostty/config
1717-├── nvim/ # ~/.config/nvim
1818-├── git/.gitconfig
1919-├── cosmic/ # ~/.config/cosmic
2020-├── sway/ # ~/.config/sway
2121-└── .backups/ # created automatically by `dots install`, gitignore-able
1212+├── dots # the manager itself - lives at the repo root
1313+├── zsh/zshrc # ~/.zshrc
1414+├── bash/bashrc # ~/.bashrc
1515+├── fish/config.fish # ~/.config/fish/config.fish
1616+├── fish/fish_plugins # ~/.config/fish/fish_plugins
1717+├── ghostty/config.ghostty # ~/.config/ghostty/config.ghostty
1818+├── nvim/ # ~/.config/nvim
1919+├── git/gitconfig # ~/.gitconfig
2020+├── cosmic/xkb_config # ~/.config/cosmic/com.system76.CosmicComp/v1/xkb_config
2121+├── cosmic/custom-shortcuts # ~/.config/cosmic/com.system76.CosmicSettings.Shortcuts/v1/custom
2222+├── cosmic/system-actions # ~/.config/cosmic/com.system76.CosmicSettings.Shortcuts/v1/system_actions
2323+├── sway/ # ~/.config/sway
2424+├── starship/starship.toml # ~/.config/starship.toml
2525+├── keyd/default.conf # /etc/keyd/default.conf
2626+└── backups/ # created automatically by `dots install`, gitignore-able
2227```
23282429## Commands
···61666267Each tracked file/directory becomes a symlink pointing into the repo
6368(e.g. `~/.config/nvim` -> `~/dotfiles/nvim`). Anything that was already
6464-sitting at that path gets moved into `.backups/<timestamp>/...` inside
6969+sitting at that path gets moved into `backups/<timestamp>/...` inside
6570the repo first — nothing is ever silently overwritten or deleted.
66716772## Keeping it in sync
···9710298103## Notes / things worth reviewing before your first commit
99104100100-- **`cosmic/`** mirrors the entire `~/.config/cosmic` tree, which COSMIC
101101- spreads across many per-component subfolders. After the first
102102- `./dots collect`, skim `git status` for anything that looks like
103103- machine-specific state (caches, instance IDs, etc.) rather than actual
104104- settings, and remove/gitignore it if so.
105105-- **`fish/fish_variables`** stores fish's universal variables (including
106106- any `abbr` abbreviations you've set) — generally fine to track, but
107107- worth a glance in case anything machine-specific snuck in there.
108108-- Consider adding `.backups/` to `.gitignore` — those are local safety
105105+- **`cosmic/`** tracks three specific files (keyboard layout, custom
106106+ shortcuts, and system-action overrides) rather than the entire
107107+ `~/.config/cosmic` tree. COSMIC spreads state across many per-component
108108+ subfolders; only these three have been singled out as worth versioning.
109109+- Consider adding `backups/` to `.gitignore` — those are local safety
109110 snapshots, not really meant for version control.