This repository is a comprehensive, modular dotfiles collection for a bspwm-based desktop environment on Arch Linux. It provides 18 distinct visual themes ('rices') that consistently apply color schemes, wallpapers, and style options across a wide range of applications including terminals (Alacritty, Kitty, Ghostty, ST), status bars (Polybar, Eww), launcher (Rofi), notifications (Dunst), compositor (Picom), browser (Firefox), editor (Neovim), media player (MPV), and many others. The core architecture is a modular theme application system: a central script (`Theme.sh`) sources per-theme color variables and then runs individual module scripts (e.g., `05-alacritty.sh`) that generate or overwrite application configuration files. An installer (`RiceInstaller`) sets up the entire environment, and a GUI editor (`RiceEditor`) allows runtime customization. The repository also includes numerous utility scripts for hardware detection, wallpaper selection, weather display, network management, and media control, many of which demonstrate good engineering practices like caching, parallel processing, and atomic file updates. While tightly coupled to Arch Linux and X11, the modular theming pattern and several standalone scripts are reusable in other contexts.
picom is an X11 compositor that provides desktop visual effects such as window shadows, fading, blur, rounded corners, and animations. It is a fork of Compton and serves as a lightweight compositing manager for X11 window managers. The system is built around a modular architecture with pluggable rendering backends (XRender and OpenGL), a damage-based incremental renderer, a window tree manager, and a custom animation scripting engine. Key entry points include the main session initialization in `src/picom.c`, the event loop driven by libev, and the backend initialization. Data flows begin with X11 events (e.g., window creation, property changes) processed by the event handler, which updates the window tree and triggers damage computation. The renderer then builds a list of backend commands from window layers, applies damage culling, and presents the final image via the selected backend. External dependencies include X11 libraries (xcb, xlib, xrender, xdamage, xcomposite, xpresent, xrandr), libconfig for configuration, libev for event handling, pixman for region operations, and optional OpenGL, dbus, and pcre2. The project is actively maintained with a comprehensive test suite and CI/CD pipelines.