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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# Migration record
Files edited outside this repository. Backups of every file listed here, taken
immediately before the edits, are in `/data/udt-backup/`.
## Phase 1 (rofi), 2026-09-11
### Call sites repointed
| File | Was | Now |
| --- | --- | --- |
| `~/bin/blackpearl-sshmenu.sh` | `launchers/type-2/style-1` | `udt/list.rasi` |
| `~/bin/github-repos.sh` | `launchers/type-2/style-1` | `udt/list.rasi` |
| `~/bin/hypr-windows.sh` | `launchers/type-2/style-1` | `udt/list.rasi` |
| `~/bin/blackpearl-emoji.sh` | `darknix/runner.rasi` | `udt/list.rasi` |
| `~/bin/rofi-qemu.sh` | `darknix/runner.rasi` | `udt/list.rasi` |
| `~/bin/rofipass` | `elegantVagrant/elegantvagrant-dark` | `udt/list.rasi` |
| `~/.config/hypr/sections/keybindings.lua` | `launchers/type-2/style-1` | `udt/list.rasi` |
| `~/bin/qar-scrotmenu.sh` | `darknix/scrotmenu.rasi` | `udt/menu.rasi` |
| `~/bin/blackpearl-notes.sh` | `darknix/notes.rasi` | `udt/menu.rasi` |
| `~/.config/rofi/powermenu/type-4/powermenu.sh` | `powermenu/type-4/style-5` | `udt/menu.rasi` |
| `~/bin/blackpearl-appsmenu.sh` | `darknix/appmenu.rasi` | `udt/launcher.rasi` |
| `~/.config/rofi/launchers/type-1/launcher.sh` | `launchers/type-1/style-5` | `udt/launcher.rasi` |
### Other edits
- `~/bin/wallp`: `finalize()` now calls `udt-accent` with
`~/.cache/wal/wpaper`, guarded so a failure cannot stop the wallpaper being
set.
- `~/bin/rofipass`: dropped a `-width 1000` flag. It is not a rofi 2.0.0
option (width moved into the theme), so it was silently doing nothing. The
`-theme-str` width override further down the same script is the modern form
and was left alone.
- `~/.config/rofi/powermenu/type-4/powermenu.sh`: this script uses `$dir` for
two different themes, its main menu and its confirmation dialog. Both now
point into `udt/`, the menu at `powermenu.rasi` and the dialog at
`confirm.rasi`.
The script's `yes` and `no` variables also changed. They held Private Use
Area codepoints that only the `feather` font carries, so they could not be
drawn in the theme's own Nerd Font. They are now the Material circled check
and close, U+F05E0 and U+F0159, which Inconsolata Nerd Font Mono contains.
### Not a call site
`~/bin/ddgr_search.py` was listed in the original plan but is not a call site.
It is a rofi script-mode plugin, invoked *by* rofi rather than invoking it, so
its appearance comes from whatever command runs it. No keybinding or waybar
button currently does.
### Removed
All five superseded theme directories were moved to
`/data/udt-backup/old-rofi-themes/`: `darknix/`, `elegantVagrant/`,
`launchers/`, `applets/`, `powermenu/`.
Two of them held scripts that are bound to keys, so those moved to `~/bin/`
first and were repointed at `udt/`:
| Was | Now | Bound to |
| --- | --- | --- |
| `rofi/powermenu/type-4/powermenu.sh` | `~/bin/udt-powermenu.sh` | Mod+x |
| `rofi/launchers/type-1/launcher.sh` | `~/bin/udt-launcher.sh` | ALT+F2 |
`~/.config/hypr/sections/keybindings.lua` now calls them by name.
`applets/` turned out not to be in use after all: its only reference is
`~/.config/waybar/modules/mpd.jsonc`, which is not in waybar's include list.
`~/.config/rofi/` now holds `udt/` plus `config.rasi`, `images/` and
`rofi-symbols/`. The `colors/` directory (the adi1090x palettes) has no
remaining references and could go too.
## Phase 2 (Qt), 2026-09-11
`~/.bashrc`, two edits. Backup in `/data/udt-backup/`.
The GPG PIN dialog was the one Qt6 app the theme never reached. It is drawn by
`pinentry-qt`, which despite the name links Qt6, so the theme should have
applied. It did not, because `QT_QPA_PLATFORMTHEME` never reaches it.
Hyprland sets that variable with `hl.env`, which only covers processes Hyprland
itself spawns. `gpg-agent` is not one: `.bashrc` spawns it, via the
`gpg-connect-agent updatestartuptty` call near the end of the file, and it then
outlives that shell reparented to init. Every `pinentry` inherits the agent's
environment, so the dialog fell back to Qt6's built-in Fusion style.
- `export QT_QPA_PLATFORMTHEME=qt6ct` added immediately **above** the
`gpg-connect-agent` call. The position matters: the agent captures its
environment when it is spawned, so an export below that line is too late.
The agent persists for the session, so only the first login shell decides.
- `SSH_ASKPASS` repointed from `pinentry-qt5` to `pinentry-qt`. The former is
genuinely Qt5 and was themed by nothing.
The change takes effect for an agent started after it. To apply it without
logging out: `gpgconf --kill gpg-agent`, then any shell command that touches
gpg. That drops the cached PIN, so the next signature prompts once.
Verify with:
tr '\0' '\n' < /proc/$(pgrep -x gpg-agent)/environ | grep QT_QPA
## Out of scope
`ronema` (rofi NetworkManager applet) was excluded: no longer used, pending
archival.
|