aboutsummaryrefslogtreecommitdiffstats
path: root/TODO-icons.md
blob: 30722bd221add3282eb4a797b48aeebbfbf20ff1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# Unhardcode the icon and cursor themes

The appearance drawer's Icons tab (`quickshell/appearance/Icons.qml`) owns the
active icon and cursor theme and the cursor size. It sets them through
gsettings (`org.gnome.desktop.interface` icon-theme / cursor-theme /
cursor-size), the Qt configs (`qt5ct.conf`, `qt6ct.conf`: `icon_theme=`),
`gtk-3.0/settings.ini` and `gtk-4.0/settings.ini` (`gtk-icon-theme-name`,
`gtk-cursor-theme-name`, `gtk-cursor-theme-size`) and `environment.lua`
(`{X,HYPR}CURSOR_THEME`, `{X,HYPR}CURSOR_SIZE`). Every write is an in-place
rewrite of an existing line; no file is written whole.

## Done

`templates/gtk/index.theme.in` was the one real conflict: it is generated and
installed whole-file into `~/.themes/udt/index.theme`, which the drawer never
touches, so its `IconTheme=` and `CursorTheme=` went stale on a drawer switch.
Both keys are dropped. gsettings wins over a metatheme hint on Wayland, so the
drawer's value now simply stands.

## Not a conflict

`templates/qt-gtk/{gtk3-settings.ini,qt5ct.conf,qt6ct.conf}` are merged key
by key into the live files by `install.sh`'s `ini_merge`, and carry no icon or
cursor key, so the drawer's values are never overwritten. Each file says so at
the top.

## Consumers: now wired to gsettings

These *consumed* an icon theme to resolve icon paths rather than setting the
system theme, so a drawer switch left them pointing at the old theme's icons
until edited by hand. All three now follow the drawer:

- waybar-theme-udt: `bin/wb-icon` reads the gsettings key and resolves names
  through GTK icon lookup; `install.sh` bakes the results into the generated
  `modules.css` and `taskbar.jsonc`. Re-run its `install.sh` and restart waybar
  after a switch. See that repo's `TODO-icons.md`.
- `~/.config/rofi/config.rasi`: `icon-theme:` commented out, so rofi uses the
  desktop theme.
- `~/.local/share/applications/firefox-clean.desktop`: absolute `Icon=` path
  replaced with the bare name, which the desktop-entry spec resolves through
  the active theme.

`~/.config/hypr/hyprqt6engine.conf`'s `icon_theme` is commented out.