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
This commit is contained in:
Sarthak 2026-09-04 10:09:16 +05:30
parent 10fca7d9e4
commit 0780a3abf5
22 changed files with 358 additions and 262 deletions

View file

@ -20,10 +20,13 @@ wmname LG3D
# Vars
export XDG_CURRENT_DESKTOP="bspwm"
sh -c 'function shenv() { export "$1=$2"; }; source ~/.env;'
[ -f "$HOME/.env" ] && . "$HOME/.env"
# Workspaces Configuration
bspc monitor DisplayPort-0 -d 1 2 3 4 5 6 7 8
# Whatever the primary output is called on this machine.
MONITOR="$(xrandr --query | awk '/ connected primary/{print $1; exit}')"
[ -z "$MONITOR" ] && MONITOR="$(bspc query -M --names | head -n1)"
bspc monitor "$MONITOR" -d 1 2 3 4 5 6 7 8
# Enable window focus follow mouse pointer
bspc config focus_follows_pointer true
@ -82,7 +85,7 @@ bspc rule -a 'legcord' desktop=10
# (xdg-desktop-portal-gtk, used by browser file pickers) fail with "cannot open display".
systemctl --user import-environment DISPLAY XAUTHORITY XDG_CURRENT_DESKTOP
dbus-update-activation-environment --systemd DISPLAY XAUTHORITY XDG_CURRENT_DESKTOP
xrdb merge $HOME/.Xresources
[ -f "$HOME/.Xresources" ] && xrdb merge "$HOME/.Xresources"
xsettingsd &
dunst &
flameshot &

View file

@ -1,144 +0,0 @@
# Animations
animations = true;
animation-stiffness-in-tag = 200;
animation-stiffness-tag-change = 120.0;
animation-window-mass = 0.5;
animation-dampening = 20;
animation-clamping = true;
animation-for-open-window = "slide-up";
animation-for-unmap-window = "slide-down";
animation-for-menu-window = "slide-up";
animation-for-transient-window = "slide-up";
animation-for-prev-tag = "slide-up";
enable-fading-prev-tag = true;
animation-for-next-tag = "slide-down";
enable-fading-next-tag = true;
# Shadow
shadow = false;
# Fading
fading = true;
fade-in-step = 0.02;
fade-out-step = 0.03;
fade-delta = 8;
no-fading-openclose = false;
# Transparency
inactive-opacity-override = true;
active-opacity-override = true;
focus-exclude = [
"class_g = 'Cairo-clock'",
];
opacity-rule = [
# Fullscreen is not transparent
"100:fullscreen",
"100:_NET_WM_STATE@[*]:32a = '_NET_WM_STATE_FULLSCREEN'",
# Rest of the apps
"75:class_g *?= 'firefox'",
"75:class_g *?= 'Signal'",
"75:class_g *?= 'Code'",
"75:class_g *?= 'nemo'",
"75:class_g *?= 'pavucontrol'",
"75:class_g *?= 'qt5ct'",
"75:class_g *?= 'qt6ct'",
"75:class_g *?= 'Ark'",
"75:class_g *?= 'Xarchiver'",
"75:class_g *?= 'obs'",
"75:class_g *?= 'kitty'",
"75:class_g *?= 'Spotify'",
"75:class_g *?= 'blueman-manager'",
"75:class_g *?= 'Steam'",
"75:class_g *?= 'steamwebhelper'",
"75:class_g *?= 'Discord'",
"75:class_g *?= 'Webcord'",
"75:class_g *?= 'legcord'",
"75:class_g *?= 'yad'",
"75:class_g *?= 'org.kde.polkit-kde-authentication-agent-1'",
"75:class_g *?= 'polkit-gnome-authentication-agent-1'",
"75:class_g *?= 'org.freedesktop.impl.portal.desktop.gtk'",
"75:class_g *?= 'Loupe'",
"75:class_g *?= 'gnome-calculator'",
"75:class_g *?= 'Evince'",
"75:class_g *?= 'Polybar'",
"75:class_g *?= 'Rofi'",
];
# Borders
border-color = "#8b9151";
corner-radius = 0;
unredir-if-possible = true;
no-ewmh-fullscreen = true;
rounded-corners-exclude = [
"name = 'Polybar tray window'",
"window_type = 'desktop'",
"window_type = 'dropdown_menu'",
"window_type = 'popup_menu'",
"window_type = 'utility'",
"window_type = 'tooltip'",
"window_type = 'splash'",
"class_g *?= 'dunst'",
"class_g *?= 'Rofi'",
"BSPWM_TILED@:c = 1",
"_NET_WM_STATE@[*]:32a = '_NET_WM_STATE_FULLSCREEN'",
];
# Blur
blur: {
method = "dual_kawase";
strength = 3;
background = true;
background-frame = false;
background-fixed = false;
}
blur-background-exclude = [
"class_g = 'Dunst'",
"window_type = 'desktop'",
"window_type *= 'menu'",
"window_type = 'utility'",
"window_type = 'tooltip'",
"window_type = 'splash'",
"class_g *?= 'polybar'",
"class_g *?= 'Rofi'",
"class_g *?= 'screenkey'",
"class_g *?= 'GLava'",
"class_g *?= 'kdeconnectd'",
"class_g *?= 'kdeconnect.daemon'",
"class_g *?= 'activate-linux'",
"_GTK_FRAME_EXTENTS@:c",
];
# General settings
backend = "glx"
dithered-present = false;
mark-wmwin-focused = true;
mark-ovredir-focused = true;
detect-rounded-corners = false;
detect-client-opacity = false;
use-ewmh-active-win = true;
unredir-if-possible = false;
detect-transient = true;
#glx-no-stencil = true;
use-damage = true;
xrender-sync-fence = true;
#window-shader-fg = "";
transparent-clipping = false;
log-level = "warn";
# Window types
wintypes:
{
tooltip = { fade = true; shadow = false; opacity = 0.85; focus = true; full-shadow = false; };
dock = { shadow = false; clip-shadow-above = true; }
dnd = { shadow = false; }
popup_menu = { opacity = 0.9; }
dropdown_menu = { opacity = 0.9; }
normal = { animation = "slide-down"; animation-unmap = "slide-up"; }
};