summaryrefslogtreecommitdiffstats
path: root/appearance/Hyprsunset.qml
AgeCommit message (Collapse)AuthorFilesLines
13 daysappearance moves into the settings windowDanilo M.1-326/+0
The appearance shell existed because a wallpaper picker needed more room than the 600px drawer, so it ran as its own process with a full-screen overlay. The settings window now gives it that room, and its five tabs become five settings pages in the desktop process: Wallpaper, Theme, Icons & cursor, Sunset and Idle. appearance/ is gone, and with it a process, a keepalive window and a layer blur rule. The files move to desktop/modules/appearance/ unchanged in what they do. Each tab gets a small *Module.qml; the window's refresh-on-open calls the singletons' refresh(), which the panel's show() used to. The two tabs that were inline Components in AppearancePanel become ThemeTab and WallpaperTab, owning the notices the panel printed. Sunset, Idle and Icons drop their own Flickable so the page scrolls them and search can reveal a row; the wallpaper list virtualises its rows and scrolls itself, so it takes the page's new viewHeight instead. Search finds a colour scheme and an icon or cursor theme by name. The appearance IPC target moves to desktop/shell.qml with the same verbs, so udt-steps and any keybind change only the path. Git now follows the appearance pages and autostart in the sidebar. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-16fix(appearance): wait for hyprsunset exit before restartDanilo M.1-1/+7
pkill only sends SIGTERM, and hyprsunset binds Hyprland's CTM manager exclusively, so the replacement started immediately after pkill raced the old process and exited with 'A CTM manager is already running'. Saving from the Sunset tab therefore killed the night-light daemon instead of restarting it. Bound the wait to 5s (50 x 0.1s) so a wedged process cannot hang the restart.
2026-09-16fix(appearance): final review fixes for the Sunset, Idle and Icons tabsDanilo M.1-1/+10
xcur2png wrote its config file into the qs CWD, which is the repo root, so hovering a legacy Xcursor theme left a stray left_ptr.conf in the tree. Point -c at the per-theme cache dir instead. Hyprsunset.save() could run before refresh()'s two cat processes landed and write a header-only hyprsunset.conf, blanking the location. Guard on the same confLoaded/appLoaded flags Hypridle already uses. The idle save had no acknowledgement, which the spec requires. Add a notice after the restart and show it in the tab, and switch Hypridle's save guard to a loaded flag so a config whose first block is a listener is not mistaken for an unloaded one. classify() used else if, so a directory carrying both index.theme and cursors/ (Adwaita) was listed as a cursor theme only and never reached the icon picker. Make the two tests independent; selftest gains the dual-purpose case.
2026-09-16fix(appearance): preserve the raw cache path on settings saveDanilo M.1-2/+4
appConfText() hardcoded path = ~/.config/hyprsunset-qt/sun.json, so any saveSettings() -- from save() or detect() -- silently reset a user-customized cache path while fetchSun() kept writing to the parsed location. Mirror sunset-qt's settings.py: hold the raw unexpanded string in cachePathRaw for serialization and derive the expanded cachePath for file access, so a no-op save is byte-identical and the two stay consistent.
2026-09-16feat(appearance): add the hyprsunset profile modelDanilo M.1-0/+309
Parses and serializes ~/.config/hypr/hyprsunset.conf in the exact format hyprsunset-qt writes, so both editors share the file. Location lives in hyprsunset-qt's own INI; fetching mirrors its curl calls and browser User-Agent. Selftest round-trips a fixture byte-for-byte.