feat(midiviz): a permanent lens — own app id, all desktops, CC numbers
PLN, after the first look at it: "the midi mon is beautiful! so lets
streamline, now it should always oppen, with always on top, all desktops
displayed when i switch from desk 1 to 2 3 4" -- and then "would help to
see the chan num: 33 or 53 etc so as i press i can wire".
Always-on-top needed no change: the WindowStaysOnTopHint at :293 is
unconditional and KWin honours it. The other three did.
IDENTITY. The Wayland app_id comes from desktopFileName, not
applicationName, so KWin saw resourceClass "python3" -- verified by
querying workspace.windowList(), not assumed. Two consequences: a window
rule keyed on the app id would have matched EVERY python GUI on the box,
and launchers.focus_window("midimon") could never match, so clicking the
Bridge/tray button on an already-running lens silently did nothing. Set
desktopFileName + ship a .desktop (which also silences the portal's "App
info not found" warning), and point the launcher's focus at "midiviz".
ALL DESKTOPS is a compositor property, not a Qt flag, so it lives in a
KWin rule (~/.config/kwinrulesrc, wmclass=midiviz, desktops= empty with
desktopsrule=2/Force). Declarative on purpose: it applies at map time,
every time, with no post-launch retry racing the window's existence.
Verified on the live window rather than inferred from the key names --
onAllDesktops=true keepAbove=true.
CC NUMBERS, two layers. Per-cell dim decimals are the map you consult
while wiring; they render in their own pass because f_micro is already
current there, and a per-cell setFont would add 96 font switches a frame
to a path this file keeps to a counted number of drawText calls. They
are skipped when a cell is too narrow to hold them beside the value. And
the header now prints the last-touched control as ^53=127 -- decimal,
with the corpus's caret, so it is the literal token to type into a
pattern instead of a hex value to convert mid-set.
Autostart as a systemd --user unit bound to graphical-session.target,
not default.target: it needs WAYLAND_DISPLAY/XDG_RUNTIME_DIR imported
into the user manager first. Registered "login" in rig_units.py.
Paint path exercised by the offscreen selftest: 116 paints, PASS.
Showing
tools/midiviz.desktop
0 → 100644
tools/midiviz.service
0 → 100644
Please
register
or
sign in
to comment