dotfiles/.config/rice
Sarthak 0780a3abf5 readme at the root, and fix what would break on a fresh machine
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
2026-09-04 10:09:16 +05:30
..
particles Sakura Line: retheme the whole desktop from the wallpaper 2026-09-04 00:19:36 +05:30
st Sakura Line: retheme the whole desktop from the wallpaper 2026-09-04 00:19:36 +05:30
install.sh readme at the root, and fix what would break on a fresh machine 2026-09-04 10:09:16 +05:30
packages.txt readme at the root, and fix what would break on a fresh machine 2026-09-04 10:09:16 +05:30
README.md control panel: unscroll the device lists, add display, drop toggle bar 2026-09-04 09:17:58 +05:30

Sakura Line

bspwm rice. Palette sampled from ~/.config/bspwm/wallpaper/wallpaper.jpg.

Replicate on a fresh machine

bash <(curl -fsSL https://git.srtk.in/sarthak/dotfiles/raw/branch/main/.config/rice/install.sh)

Or, if the dotfiles are already cloned:

~/.config/rice/install.sh            # full run
~/.config/rice/install.sh --dry-run  # show what it would do, change nothing

Arch is the first-class target. Debian/Ubuntu and Fedora are best-effort — the desktop, build and theming steps work; the AUR extras are skipped.

The script is safe to re-run. Anything in $HOME that would be overwritten by the dotfiles checkout is moved to ~/.rice-backup-<timestamp>/ first.

What it sets up

WM bspwm + sxhkd
Bar polybar (translucent, rounded)
Compositor picom (rounded corners, vsync)
Launcher rofi, centred, with icons
Notifications dunst
Terminal st, built from st/config.h here (upstream gitignores it)
Wallpaper layer particles, built from particles/ here
Toolkits GTK2/3/4 via gtk.css overrides, Qt via qt6ct

Control centre

super + x, or the gear at the right of the bar, opens one centred GTK panel that drives everything. Press it again to close. It is a real window, so the sliders are live and stepping back between views never redraws the panel:

Network Wi-Fi on/off, rescan, pick a network (password prompt inline)
Bluetooth power on/off, scan, connect/disconnect paired devices
Audio live volume and microphone sliders; click the icon to mute
VPN WireGuard up/down via systemctl wg-quick@…
Notifications do-not-disturb toggle
Clipboard / Screenshot / Display greenclip, flameshot, resolution
Wallpaper / Particles shuffle, toggle the particle layer
Power lock, log out, suspend, reboot, shut down

Escape steps back from a subview; Escape on the main view closes it. The panel grabs the seat like rofi does, so it keeps focus wherever the pointer is.

Panel keys

Each control shows its key in the bottom-right corner.

n network b bluetooth v vpn d do-not-disturb
p particles w wallpaper a audio c clipboard
s screenshot e display m mute i mute mic
l lock o log out z suspend r reboot
q shut down ←/→ volume Esc back / close

Keybindings

super + Return terminal (st)
super + w app launcher (rofi drun)
super + x control centre
super + v clipboard history
super + b toggle the bar
super + alt + p screenshot (flameshot)
super + q close window
super + f fullscreen
super + space float/tile
super + Escape reload sxhkd

Palette

role hex from
bg #0f0d17 twilight shadow
fg #e9eefb cool white
accent #92b9ea sky
red #cf6a80 blossom
green #8fae74 grass
yellow #d8a87c train stripe
magenta #b483c0 plum blossom
cyan #8ab6c4 station house

Changing the wallpaper does not re-derive these — they are written into each app's config.

Layout

.config/rice/
├── install.sh        one-shot bootstrap
├── packages.txt      package list ("aur:" prefix = needs an AUR helper)
├── st/config.h       st build config
└── particles/        wallpaper-layer particle field (source + Makefile)