How bahayavas/rice-studio works
Rice Studio is a macOS window-manager and menu-bar switcher, exposed through a SwiftUI app and a rice CLI. Users inspect module status, choose one WM and one bar (or turn them off), and the engine stops competing modules, starts the selection, persists state, and manages the macOS menu bar. Module adapters represent the supported tools; shared process and shell layers implement their lifecycle operations. The README describes configuration editing, backups, and profiles, but several customization and profile capabilities are explicitly planned rather than present in this stage. Arrows reflect excerpts and explicit README statements; unsampled implementations are not assumed.
Main entry points: Registry.swift Module registry · Engine.swift Transition engine · Shell.swift Process and shell tools · Model.swift App model
Components 21
App and CLI
- macOS app
Sources/RiceStudio/App/main.swift - Switcher view
Sources/RiceStudio/App/StageOneView.swift - App model
Sources/RiceStudio/App/Model.swift - rice CLI
Sources/RiceStudio/CLI/CLI.swift
Switching core
- Transition engine
Sources/RiceStudio/Core/Engine.swift - Module registry
Sources/RiceStudio/Modules/Registry.swift - Module lifecycle and config
Sources/RiceStudio/Core/Module.swift
WM and bar modules
- Window managers
Sources/RiceStudio/Modules/Registry.swift - AeroSpace adapter
Sources/RiceStudio/Modules/AeroSpace.swift - Amethyst adapter
Sources/RiceStudio/Modules/Amethyst.swift - Hyprmac adapter
Sources/RiceStudio/Modules/Hyprmac.swift - Bar modules
Sources/RiceStudio/Modules/Registry.swift - SketchyBar adapter
Sources/RiceStudio/Modules/SketchyBar.swift - Barik adapter
Sources/RiceStudio/Modules/Barik.swift - Übersicht and simple-bar
Sources/RiceStudio/Modules/Ubersicht.swift - Zebar adapter
Sources/RiceStudio/Modules/Zebar.swift - JankyBorders extra
Sources/RiceStudio/Modules/Borders.swift
Runtime services
- Settings and saved state
Sources/RiceStudio/Core/Settings.swift - Process and shell tools
Sources/RiceStudio/Core/Shell.swift
Other components
- User
- macOS processes and preferences
Connections 34
- User → macOS app: opens
Sources/RiceStudio/App/main.swift - User → rice CLI: runs commands
Sources/RiceStudio/CLI/CLI.swift - macOS app → Switcher view: shows
Sources/RiceStudio/App/main.swift - macOS app → App model: provides state
Sources/RiceStudio/App/main.swift - Switcher view → App model: reads and invokes
Sources/RiceStudio/App/StageOneView.swift - App model → Transition engine: requests transitions
Sources/RiceStudio/App/Model.swift - App model → Module registry: reads modules
Sources/RiceStudio/App/Model.swift - rice CLI → Transition engine: dispatches commands
Sources/RiceStudio/CLI/CLI.swift - rice CLI → Module registry: queries modules
Sources/RiceStudio/CLI/CLI.swift - Transition engine → Module registry: selects modules
Sources/RiceStudio/Core/Engine.swift - Transition engine → Settings and saved state: reads and saves
Sources/RiceStudio/Core/Engine.swift - Transition engine → macOS processes and preferences: manages menu bar
Sources/RiceStudio/Core/Engine.swift - Module registry → AeroSpace adapter: registers
Sources/RiceStudio/Modules/Registry.swift - Module registry → Amethyst adapter: registers
Sources/RiceStudio/Modules/Registry.swift - Module registry → Hyprmac adapter: registers
Sources/RiceStudio/Modules/Registry.swift - Module registry → SketchyBar adapter: registers
Sources/RiceStudio/Modules/Registry.swift - Module registry → Barik adapter: registers
Sources/RiceStudio/Modules/Registry.swift - Module registry → Übersicht and simple-bar: registers
Sources/RiceStudio/Modules/Registry.swift - Module registry → Zebar adapter: registers
Sources/RiceStudio/Modules/Registry.swift - Module registry → JankyBorders extra: registers
Sources/RiceStudio/Modules/Registry.swift - Transition engine → Module lifecycle and config: calls lifecycle
Sources/RiceStudio/Core/Engine.swift - Module lifecycle and config → Process and shell tools: uses process tools
Sources/RiceStudio/Core/Module.swift - AeroSpace adapter → Process and shell tools: reloads via
Sources/RiceStudio/Modules/AeroSpace.swift - SketchyBar adapter → Process and shell tools: uses commands
Sources/RiceStudio/Modules/SketchyBar.swift - Übersicht and simple-bar → Process and shell tools: runs widget scripts
Sources/RiceStudio/Modules/Ubersicht.swift - JankyBorders extra → Process and shell tools: controls processes
Sources/RiceStudio/Modules/Borders.swift - Module lifecycle and config → macOS processes and preferences: manages applications
Sources/RiceStudio/Core/Module.swift - Window managers → AeroSpace adapter: includes adapter
Sources/RiceStudio/Modules/Registry.swift - Window managers → Amethyst adapter: includes adapter
Sources/RiceStudio/Modules/Registry.swift - Window managers → Hyprmac adapter: includes adapter
Sources/RiceStudio/Modules/Registry.swift - Bar modules → SketchyBar adapter: includes adapter
Sources/RiceStudio/Modules/Registry.swift - Bar modules → Barik adapter: includes adapter
Sources/RiceStudio/Modules/Registry.swift - Bar modules → Übersicht and simple-bar: includes adapter
Sources/RiceStudio/Modules/Registry.swift - Bar modules → Zebar adapter: includes adapter
Sources/RiceStudio/Modules/Registry.swift