aboutsummaryrefslogtreecommitdiffstats
path: root/appearance/IconsTab.qml
AgeCommit message (Collapse)AuthorFilesLines
2026-09-18fix(appearance): drop the live cursor hover previewDanilo M.1-33/+5
Hovering a cursor card called `hyprctl setcursor` to switch the real pointer, and reverted it on unhover. That looked read-only and was not: Hyprland's setcursor handler also writes the theme to org.gnome.desktop.interface cursor-theme, so every hover persisted a setting the user had not confirmed. Closing the panel with the pointer over a card left that theme set, surviving both the shell and the session. A `dconf watch /org/gnome/desktop/interface/` during a hover across three cards showed the key alternating between each hovered theme and the current one, one write per hover and one per revert. `strings` on the Hyprland binary carries both `org.gnome.desktop.interface` and `cursor-theme`; `hyprctl` carries neither, so the write is the compositor's, not the caller's. The revert could not be made reliable either. It ran through `execDetached`, which gives no ordering, so a fast card-to-card move could land the revert after the new set. Guarding it by lifecycle did not help: `Component.onDestruction` fires too late to be certain, and the same spawn race applied to Apply, which cleared the hover before `applyCursor` and so raced the old theme against the new one. None of that is fixable while the preview exists, because the side effect belongs to the compositor. The four rendered shapes on each card were always the real preview; the live switch was a bonus that could not be had without writing the setting. Remove it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16fix(appearance): stage a cursor theme, apply on confirmDanilo M.1-5/+41
Clicking a cursor card called applyCursor straight away, so the pointer, gsettings, environment.lua and both GTK settings files all changed on a single click with nothing to confirm. The wallpaper tab already stages a pick and commits it from an Apply button; the cursor grid now does the same, with a Reset beside it. The hover preview is unchanged: it still switches the real cursor and reverts on unhover, which is what makes staging readable, you see the theme before committing to it. That preview is also why Apply clears liveCursorCursor before calling applyCursor. Moving the mouse off the card to reach the button fires the unhover revert, which would otherwise set the old theme back over the one just applied. A staged card takes the solid accent border and the current one drops to a half-alpha border, so both stay visible at once. Icon themes and cursor size still apply on click. Neither has a hover preview to confirm against. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-16feat(appearance): polish the Icons tab previews and applyDanilo M.1-72/+105
Cursor previews were extracted only on hover, so the row stayed blank until each card was visited. They are now batched on open: one python pass extracts four shapes per theme (arrow, hand, text, horizontal resize) through the theme's aliases and every storage form it may use (hyprcursor .hlc, a shape directory SVG, or a legacy Xcursor binary via xcur2png). The card rows are Flows so they wrap instead of running off the right edge, and the tab scrolls. Cards widened and names wrap to two lines. A size selector (16-64) applies the pointer size live, to gsettings, the GTK settings.ini files and environment.lua. gsettings alone does not reliably switch icon/cursor here: both gtk-3.0 and gtk-4.0 settings.ini carry the names, so apply now rewrites gtk-icon-theme-name / gtk-cursor-theme-name / gtk-cursor-theme-size there too. The symlinked `default` cursor alias is skipped in the scan and the current value resolved through it, so the real theme carries the current marker. The tab row is centred against the panel so it reads as drawer chrome rather than the first line of a tab's content.
2026-09-16feat(appearance): add the Icons tabDanilo M.1-0/+184
Icon themes preview four glyphs each from the GTK lookup; cursor themes preview an extracted left_ptr and change the real cursor on hover, reverted on leave and on close. Selection applies both.