diff --git a/rewrite/CLAUDE.md b/rewrite/CLAUDE.md index 67d0325..ea4fe89 100644 --- a/rewrite/CLAUDE.md +++ b/rewrite/CLAUDE.md @@ -59,8 +59,8 @@ The rewrite is in early stages. The original C codebase in `../legacy/` should b The Rust rewrite should maintain the modular architecture of the original: **Core modules to implement:** -- Gamma adjustment backends (DRM, RANDR, VidMode, Quartz, Windows GDI) -- Location providers (manual, GeoClue2, CoreLocation) +- Gamma adjustment backends (DRM, RANDR, VidMode) +- Location providers (manual, GeoClue2) - Solar position calculations - Color temperature to RGB conversion - Configuration parsing @@ -105,20 +105,19 @@ Follow standard Rust conventions: ## Platform Support -The original supports: -- **Linux:** DRM (TTY), RANDR (X11 multi-output), VidMode (X11 legacy) -- **macOS:** Quartz -- **Windows:** GDI +This rewrite targets Linux only: +- **DRM:** Direct Rendering Manager (TTY/framebuffer) +- **RANDR:** X11 RandR extension (multi-output support, preferred) +- **VidMode:** X11 VidMode extension (legacy, single output) -Each platform requires different system APIs for gamma manipulation. Conditional compilation via `cfg` attributes will be needed. +Each method requires different system APIs for gamma manipulation. Conditional compilation via `cfg` attributes will be needed for feature detection. ## Configuration -The original uses INI-format config files at: -- Linux/macOS: `~/.config/redshift.conf` -- Windows: `%USERPROFILE%\AppData\Local\redshift.conf` +Configuration files should be in INI format at: +- `~/.config/redshift.conf` (XDG standard location) -Maintain this format for compatibility. +Maintain this format for compatibility with the original. ## Testing Strategy diff --git a/rewrite/README.md b/rewrite/README.md index 5d8ebda..eb86089 100644 --- a/rewrite/README.md +++ b/rewrite/README.md @@ -90,26 +90,23 @@ src/ **Gamma Methods** ([gamma.rs](src/gamma.rs)) - Trait-based design for multiple adjustment methods - Currently implements dummy method (prints temperature, no display changes) -- Ready for additional methods: DRM, RandR, VidMode, Quartz, WinGDI +- Ready for additional methods: DRM, RandR, VidMode **Location Providers** ([location.rs](src/location.rs)) - Trait-based design for multiple location sources - Currently implements manual provider (user-specified lat/lon) -- Ready for additional providers: GeoClue2, CoreLocation +- Ready for additional provider: GeoClue2 ## Next Steps To complete the rewrite, the following work remains: -1. **Real Gamma Methods** - Port platform-specific gamma adjustment methods: - - DRM (Linux TTY) - - RandR (X11, preferred) - - VidMode (X11, legacy) - - Quartz (macOS) - - WinGDI (Windows) -2. **Additional Location Providers** - Port automatic location detection: - - GeoClue2 (Linux) - - CoreLocation (macOS) +1. **Real Gamma Methods** - Port Linux gamma adjustment methods: + - DRM (Direct Rendering Manager for TTY/framebuffer) + - RandR (X11 RandR extension, preferred, multi-output) + - VidMode (X11 VidMode extension, legacy, single output) +2. **Additional Location Provider** - Port automatic location detection: + - GeoClue2 (Linux location service) 3. **Configuration File Support** - Parse and apply INI-style config files 4. **Signal Handling** - Respond to SIGUSR1 (toggle), SIGINT/SIGTERM (restore & exit) 5. **Hook Scripts** - Execute user scripts on period changes