| Age | Commit message (Collapse) | Author | Files | Lines |
|
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>
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|