Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 84 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,87 @@
dotfiles
========

some .files
some .files, plus a KDE Plasma desktop setup.

Layout
------

| Path | What |
|-------------|-------------------------------------------------------------------------|
| `.bashrc`, `.vimrc`, `.tmux.conf`, `.Xmodmap` | shell/editor dotfiles, installed into `$HOME` |
| `.smw_*.wav` | sounds `.bashrc` plays on command success/failure, installed to `~/bin/` |
| `kde/` | KDE Plasma, terminal, and CLI-tool configs, installed into `$XDG_CONFIG_HOME` (`~/.config`) |
| `install.sh` | installer, with backup and restore |

Everything else at the top level (`consul_cluster.sh`, `sources.list`,
`INVERT.itermcolors`, …) is loose reference material and is not installed.

Install
-------

```sh
./install.sh -n # preview: show exactly what would be touched
./install.sh # install everything (prompts once)
./install.sh -g kde # just the KDE/desktop configs
./install.sh -g home # just the shell/editor dotfiles
```

**Backups are on by default.** Before anything is overwritten, the current
version is copied to a timestamped directory under
`~/.local/share/dotfiles-backups/<YYYYmmdd-HHMMSS>/`, alongside a
`manifest.tsv` recording every target and a `meta.txt` with the date, host,
and repo commit. Pass `--no-backup` to skip that (the script warns when you
do).

By default a directory target (`~/.config/nvim`, `~/.config/kitty`, …) is
replaced wholesale, so what you end up with matches the repo exactly. Use
`--merge` to copy files into the existing directory instead and leave
unrelated files in place.

Restore
-------

```sh
./install.sh --list-backups # what's available
./install.sh --restore # roll back the most recent install
./install.sh --restore 20260812-0307 # or a specific one
./install.sh --restore -n # preview the rollback
```

A restore is exact, not just a copy-back: files that existed before are put
back as they were, and files the install *created* (recorded as `ABSENT` in
the manifest) are removed again, along with any empty directory the install
had to create.

Note that installing twice snapshots the *installed* copies the second time
around, so `--restore` walks back one install at a time. Check
`--list-backups` and pick the timestamp from before your first install if
you want to get all the way back.

Other options
-------------

| Flag | Effect |
|------|--------|
| `-n`, `--dry-run` | print the plan, change nothing |
| `-y`, `--yes` | skip the confirmation prompt |
| `--backup-dir D` | put backups somewhere else (also `$DOTFILES_BACKUP_DIR`) |
| `-h`, `--help` | full usage |

KDE configs
-----------

`kde/` is vendored from [youngcoder45/My-KDE-Dotfiles](https://github.com/youngcoder45/My-KDE-Dotfiles)
at commit `c2a32eb`. It covers KWin/KRunner/Dolphin/Baloo settings, fish,
kitty, starship, neovim (lazy.nvim), btop, cava, fastfetch, neofetch, and
Panel Colorizer presets. Upstream's own README is kept at
`kde/UPSTREAM-README.md`; the screenshots directory was left out.

Two things worth knowing before you run this on a live desktop:

- These are somebody else's settings for their machine. `kwinrc` and
friends will replace your window-manager, shortcut, and panel
configuration. Preview with `-n` first, and expect to log out and back in
(or `kwin --replace`) before KDE picks the changes up.
- Upstream hardcodes its author's home directory in the fastfetch logo path.
The installer rewrites that to your `$XDG_CONFIG_HOME` after copying.
Loading