The repo landing page showed .config, .themes and .gtkrc-2.0 and nothing else,
so there was no sign the bootstrap existed. It has always been at
.config/rice/install.sh - that is just where it lands on disk. Root README now
carries the curl one-liner, a map of what is tracked, and a note that this is a
bare repo over $HOME so nobody goes looking for a wrapper folder again.
Things that would not have survived a replication:
- polybar's click and scroll handlers called $HOME/bin/system-info.sh and
$HOME/bin/volume.sh. That directory does not exist; the scripts are in
.config/scripts. The exec lines already pointed there, so only the
interactive bits were dead.
- bspwmrc hardcoded DisplayPort-0, so no desktops on any other machine.
Takes the xrandr primary now, falling back to the first monitor bspc sees.
- install.sh picked conflicting files out of git's checkout error with a
regex that required a dot inside the name, so .bashrc and .xinitrc were
never matched and never backed up - and .bashrc always exists on a fresh
Arch install, which is precisely when the checkout aborts.
- bspwmrc sourced ~/.env and merged ~/.Xresources unconditionally; neither
exists. Guarded.
packages.txt was missing programs whose configs this repo already carries:
fish, neovim, yazi, kitty, plus xrdb/xsetroot/xsettingsd/wmname that bspwmrc
launches, gtk3 for the control panel, and wireplumber for the wpctl calls.
Newly tracked: .xinitrc (the thing that actually starts bspwm), .bashrc (which
holds the dotfiles alias), greenclip, flameshot, kitty, Thunar, mimeapps and
user-dirs. Dropped six editor backups that had been committed by accident.
Skipped QtProject.conf - it is file-dialog history, not configuration.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011beBgzmH72WFn8wiWqRZPf
|
||
|---|---|---|
| .config | ||
| .themes | ||
| .bashrc | ||
| .gtkrc-2.0 | ||
| .xinitrc | ||
| README.md | ||
dotfiles
Everything needed to rebuild my Arch + bspwm desktop on a bare machine: Sakura Line, a bspwm rice with a GTK control panel and a particle wallpaper layer.
Install
bash <(curl -fsSL https://git.srtk.in/sarthak/dotfiles/raw/branch/main/.config/rice/install.sh)
That one command installs the packages, clones this repo, checks it out over
$HOME, builds st and particles, and does the theming. It is safe to
re-run, and nothing in $HOME is overwritten without being backed up to
~/.rice-backup-<timestamp>/ first.
Add --dry-run to see every step without changing anything.
→ Full rice documentation: keybindings, control panel, palette
Why the repo looks like this
This is a bare repo tracking $HOME,
so paths are relative to your home directory and the top level only shows the
dotfiles themselves — there is no src/ or wrapper folder. The bootstrap lives
at .config/rice/install.sh because that is where it lands on disk.
Manage it with:
alias dotfiles='/usr/bin/git --git-dir=$HOME/.dotfiles/ --work-tree=$HOME'
dotfiles status
dotfiles add .config/polybar/config.ini
dotfiles commit -m "polybar: ..."
dotfiles push
That alias is in the tracked .bashrc.
What is in here
| path | what |
|---|---|
.config/rice/ |
the bootstrap — install.sh, packages.txt, st/config.h, particles/ |
.config/bspwm/ |
WM config, keybindings (sxhkdrc), picom, wallpaper |
.config/polybar/ |
the bar and its launcher |
.config/scripts/ |
control panel (GTK), volume, media, wallpaper, screenshots |
.config/rofi/ |
launcher, clipboard and emoji menus |
.config/dunst/ |
notifications |
.config/fish/ |
shell — prompt, functions, plugins |
.config/nvim/ |
LazyVim setup |
.config/yazi/ |
file manager, plugins and scripts |
.config/kitty/ |
fallback terminal (st is the primary) |
.config/gtk-*/, .themes/, .config/qt*ct/ |
GTK 2/3/4 and Qt theming |
.config/btop/, .config/cava/, .config/fastfetch/ |
the showcase toys |
.xinitrc |
starts bspwm |
Programs unrelated to the rice are deliberately not tracked.
Requirements
Arch is the first-class target — packages.txt is a pacman list, with
aur:-prefixed lines for the AUR extras. Debian/Ubuntu and Fedora are
best-effort: install.sh maps the package names it can and skips the AUR bits.
Licensed MIT where the vendored sources say so (st, particles, yazi plugins
keep their own upstream licenses).