Commit graph

22 commits

Author SHA1 Message Date
Sarthak
d521bdc0ba add a screenshot to both readmes
Desktop shot at .config/rice/screenshot.webp, shown at the top of the root
README and the rice one.

Converted from the source PNG: it was 2.36 MB, and PNG recompression only got
it to 2.30 MB because the sakura wallpaper is a photo. WebP at q90 is 0.38 MB
with the terminal text still sharp at 1:1, which is worth it in a repo the
installer clones in full.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_011beBgzmH72WFn8wiWqRZPf
2026-09-04 10:15:42 +05:30
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
Sarthak
10fca7d9e4 control panel: unscroll the device lists, add display, drop toggle bar
Bluetooth and Network were still a ScrolledWindow around a ListBox, so short
lists were pinned to a fixed height and scrolled for no reason. They are plain
cards now, sized to content, matching the audio page.

Display is back as its own view: modes from xrandr with the active one ticked,
showing the rate actually in use rather than the highest the mode supports.
Toggle bar is gone from the action row - super+b still does it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 09:17:58 +05:30
Sarthak
8cf900b58b control panel: lay the audio page out like the home page
Wrapping the whole page in a ScrolledWindow meant the sliders themselves could
scroll out of view, which was the wrong shape entirely. The page is plain
stacked cards now, spaced like the home view, and nothing scrolls unless more
than four applications are playing - only that list gets a scroller.

The 'unplugged' marker was appended to the device name and ellipsis ate it on
long names; it is a right-aligned tag now.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 09:08:51 +05:30
Sarthak
3f9383e3d1 control panel: scope the enlarged icons to the slider buttons
.rowbtn is shared by the audio device rows and the back button, so raising its
font size enlarged the whole audio list. The speaker/mic buttons beside a
slider now use their own .volbtn class; .rowbtn is back to 14px.

The window also now shrinks to each view's natural size instead of keeping the
tallest view's height.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 09:00:07 +05:30
Sarthak
5f8f38840b control panel: switch audio devices through wpctl, flag unplugged ones
pactl set-default-sink/source is a no-op under PipeWire - WirePlumber owns
the default and only honours wpctl, which takes node ids from a different
namespace than pactl's indices. The panel now resolves ids from wpctl status
and verifies the default actually moved instead of reporting success blindly.

A device whose ports are all 'not available' cannot become the default at all;
those are greyed and labelled (unplugged) rather than silently failing.

Speaker and mic glyphs on the home sliders 14px -> 19px.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 08:57:23 +05:30
Sarthak
d6129334b1 control panel: compact audio rows, per-view sizing, bigger action icons
- the audio page's master rows now match the home page: an icon, a bar and a
  percentage, no 'Output'/'Microphone' captions
- GtkStack was vhomogeneous, so every view was padded to the tallest one and
  the scrolled list clipped while empty space sat below it. Views size
  themselves now, and the scrollers propagate natural height up to a cap.
- power and action row glyphs 15px -> 20px

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 08:52:41 +05:30
Sarthak
ddf9321901 control panel: real padding, seat grab, key hints
- GtkBox set_border_width shrinks the widget's own background, so the card was
  inset 30px while its contents sat flush against the card edge. Padding is css
  now: 12px transparent gutter outside, 20px inside. Measured on a virtual
  display rather than guessed.
- the panel grabs the seat on map, like rofi, so it keeps keyboard and pointer
  focus wherever the cursor is; the grab is released on close
- every control shows its key in the bottom-right: n b v d p w for the tiles,
  a c s t for the row beneath, l o z r q for power, m/i to mute, arrows for
  volume

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 08:46:40 +05:30
Sarthak
9853553782 control panel: fix css priority, drop blur, soften active tiles
The panel styled itself at PRIORITY_APPLICATION (600) while
~/.config/gtk-3.0/gtk.css loads at PRIORITY_USER (800) and styles plain
'button'. The user sheet won, so tile backgrounds never applied - but the
more specific '.tile.active .tile-icon { color: #0f0d17 }' did, which is why
icons rendered black on dark tiles. The panel now loads at USER + 1.

- global blur made every translucent window fuzzy, not just the panel: removed
- picom no longer re-rounds the panel; it clipped at 12px over an 18px css
  radius and chewed the corners
- active tiles are a tint plus an accent border rather than a solid accent fill
- 10px transparent gutter outside the card, 20px padding inside
- the particles tile was using a television glyph; now an atom

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 08:40:16 +05:30
Sarthak
12e94ecf9f drop __pycache__ from the repo
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 08:34:11 +05:30
Sarthak
ddf4b5b8d9 control panel: audio devices, icon font, padding, blur
- audio view: output/input device switching, master volume + mic, and
  per-application streams with their own sliders (pactl sink-inputs)
- icons rendered black because GTK used the desktop font (Noto Sans), which
  has no Nerd Font glyphs; Pango's per-glyph fallback then ignored the css
  colour. Icon classes now name the font explicitly.
- bspwm drew a focus border around the panel that fought the css rounded
  corners: border=off on the rule
- picom now blurs translucent surfaces, so the panel reads as glass rather
  than showing the text behind it
- padding and spacing throughout: frame 20px, section margins, card padding

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 08:33:51 +05:30
Sarthak
b4c6c7dbd5 replace the rofi control centre with a real GTK panel
rofi spawns a process per menu, so every volume nudge and every step back
destroyed and recreated the window. That is the flicker, and no tuning fixes
it. The panel is now one GTK window: a GtkStack for views, real GtkScale
sliders wired to wpctl, status on a timer, and a pidfile so super+x toggles
it shut. Escape steps back inside the same window.

Also: picom no longer fades or animates rofi, ::selection is not valid GTK
css, and the network/bluetooth lists no longer print their payload column.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 01:12:49 +05:30
Sarthak
2e6d7a2116 control centre: escape steps back to the main panel
Submenus returned into a case that then fell out of the script, so escape
closed everything. The panel now loops, and only escape on the main list (or
an action that hands the screen to something else) closes it.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:58:04 +05:30
Sarthak
7b4f562d50 dunst: translucent notifications, matching polybar at 75%
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:55:25 +05:30
Sarthak
ef4a230e4f drop editor backup from the repo
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:48:43 +05:30
Sarthak
b5a252c480 control centre, notification overhaul, and cleanup
One centred rofi panel (super+x, or the gear in the bar) now drives network,
bluetooth, audio, WireGuard, display, notifications, clipboard, emoji,
screenshots, wallpaper, the particle layer, the bar and power. The separate
per-function menus are gone.

dunst: icons and images were disabled outright (icon_position=off,
max_icon_size=0). Now icons resolve through Papirus, images render, progress
bars are styled, notifications gap and stack, and fullscreen windows are not
covered unless the message is critical. Volume up/down never notified at all;
they now show a stacking OSD with a progress bar.

Removed things that were broken or belonged to whoever this rice came from:
- vpn-launcher.sh (mullvad/openvpn) and dc-multivpn
- audio/bluetooth/network/power rofi menus, folded into the control centre
- untar-all, unzip-all, resetxdgportal (unreferenced)
- a sxhkd binding hardcoded to /home/sarthak/projects/scribe
- clipboard-manager.sh keyed off XDG_SESSION_TYPE, which is 'tty' here, so it
  only ever printed a Russian error; rewritten on greenclip
- toggle-bar.sh was bound to super+b but did not exist; written

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:48:26 +05:30
Sarthak
6f41e344ac btop: keep the config btop regenerated on first run
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:36:21 +05:30
Sarthak
02cb317f4e icons: Papirus-Dark across gtk/qt/rofi; make qt6ct path absolute
qt6ct does not expand ~ in color_scheme_path, so the custom palette was
silently ignored. Papirus ships blue folders by default, which matches the
sky accent without papirus-folders.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:36:04 +05:30
Sarthak
e2dfb1a67c gtk: force the dark variant, autostart particles
GTK4 ignores gtk-application-prefer-dark-theme, and did not follow the
portal's prefer-dark either, so Adwaita stayed light while the custom css
darkened only some surfaces - that is why pavucontrol had dark-grey labels
on dark backgrounds and a white content pane. GTK_THEME=Adwaita:dark fixes
GTK3 and GTK4 together.

Also recolour the stale ~/.themes Terminal-Dark leftovers, point gtk-4.0 at
a theme and icon set that exist, and start the particle layer from bspwmrc.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:33:39 +05:30
Sarthak
fcb65561d0 rofi: translucent surface, taller search field, icons centred with labels
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:21:50 +05:30
Sarthak
f341989335 Sakura Line: retheme the whole desktop from the wallpaper
Palette sampled from bspwm/wallpaper/wallpaper.jpg and applied per-role
(not per-hex, so terminal green stays green and nvim's LineNr/Comment
stay recessive) across st, kitty, polybar, rofi, dunst, nvim, qt5ct/qt6ct
and GTK 2/3/4.

Also:
- rofi drun centred, icons enabled
- polybar translucent (true ARGB) and rounded; picom corner-radius, with
  the desktop layer and fullscreen windows excluded
- fix qt5ct color_scheme_path pointing at a nonexistent /home/carrie
- export QT_QPA_PLATFORMTHEME so qt6ct is actually consulted
- point GTK at an icon theme that exists on this system
- add .config/rice: one-shot install.sh (--dry-run supported), package
  list, vendored st config.h (gitignored upstream) and the particles
  wallpaper-layer source, so a clone reproduces the rice

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Cn3dHfbgNYdbZvzb1b3GQt
2026-09-04 00:19:36 +05:30
srtk
45e5fe53d2 initial dotfiles 2026-04-25 16:39:11 +05:30