Phase 0: browser X11-overlay inventory + mpv reference cell + tooling installs

Source-level verdict: no browser in the matrix has a code path
to hand NV12 to the X server for plane scanout. Chromium ozone-x11
wires StubOverlayManager (ozone_platform_x11.cc:262); Brave 147 +
chromium-fourier 149 inherit unchanged. Firefox WindowSurfaceX11
is RGB-only. The campaign's load-bearing hypothesis is structurally
weakened — what the X11 cells will measure for browsers is
KWin's per-frame RGB-recomposite cost, not the original
"force-GL-composite of NV12" framing. mpv --vo=xv becomes the
matrix's only direct test of the operator-supplied mechanism.

Matrix updated: 12 cells -> 16 cells (+8 mpv VO sub-points).
revert.log entries 1-5 capture all package + per-user state
mutations from this turn (measurement tools, openbox, XFCE +
xfwm4-no-comp pre-seed, firefox + AUR xtrace, XFCE rotation
+ touchscreen mapping); single SSH-driveable revert chain
returns ohm to its pre-campaign 1169-package state.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-03 11:14:46 +00:00
parent 5d34a957ee
commit d2e11be430
30 changed files with 13176 additions and 35 deletions
@@ -0,0 +1,70 @@
dbus-glib
elementary-icon-theme
exo
garcon
gnome-themes-extra
gtk-layer-shell
gtksourceview4
libburn
libgtop
libisofs
libkeybinder3
libmpd
libwnck3
libxfce4ui
libxfce4util
libxfce4windowing
libxklavier
libxres
mousepad
parole
polkit-gnome
ristretto
thunar
thunar-archive-plugin
thunar-media-tags-plugin
thunar-volman
tumbler
xfburn
xfce4-appfinder
xfce4-battery-plugin
xfce4-clipman-plugin
xfce4-cpufreq-plugin
xfce4-cpugraph-plugin
xfce4-dict
xfce4-diskperf-plugin
xfce4-eyes-plugin
xfce4-fsguard-plugin
xfce4-genmon-plugin
xfce4-mailwatch-plugin
xfce4-mount-plugin
xfce4-mpc-plugin
xfce4-netload-plugin
xfce4-notes-plugin
xfce4-notifyd
xfce4-panel
xfce4-places-plugin
xfce4-power-manager
xfce4-pulseaudio-plugin
xfce4-screensaver
xfce4-screenshooter
xfce4-sensors-plugin
xfce4-session
xfce4-settings
xfce4-smartbookmark-plugin
xfce4-systemload-plugin
xfce4-taskmanager
xfce4-terminal
xfce4-time-out-plugin
xfce4-timer-plugin
xfce4-verve-plugin
xfce4-wavelan-plugin
xfce4-weather-plugin
xfce4-whiskermenu-plugin
xfce4-xkb-plugin
xfconf
xfdesktop
xfwm4
xorg-iceauth
xorg-xinit
xorg-xmodmap
@@ -0,0 +1,227 @@
:: There are 14 members in group xfce4:
:: Repository extra
1) exo 2) garcon 3) thunar 4) thunar-volman 5) tumbler 6) xfce4-appfinder 7) xfce4-panel 8) xfce4-power-manager 9) xfce4-session 10) xfce4-settings 11) xfce4-terminal 12) xfconf 13) xfdesktop 14) xfwm4
Enter a selection (default=all):
:: There are 36 members in group xfce4-goodies:
:: Repository extra
1) mousepad 2) parole 3) ristretto 4) thunar-archive-plugin 5) thunar-media-tags-plugin 6) xfburn 7) xfce4-battery-plugin 8) xfce4-clipman-plugin 9) xfce4-cpufreq-plugin 10) xfce4-cpugraph-plugin 11) xfce4-dict 12) xfce4-diskperf-plugin 13) xfce4-eyes-plugin 14) xfce4-fsguard-plugin 15) xfce4-genmon-plugin 16) xfce4-mailwatch-plugin 17) xfce4-mount-plugin 18) xfce4-mpc-plugin 19) xfce4-netload-plugin 20) xfce4-notes-plugin 21) xfce4-notifyd 22) xfce4-places-plugin 23) xfce4-pulseaudio-plugin 24) xfce4-screensaver 25) xfce4-screenshooter 26) xfce4-sensors-plugin 27) xfce4-smartbookmark-plugin 28) xfce4-systemload-plugin 29) xfce4-taskmanager 30) xfce4-time-out-plugin 31) xfce4-timer-plugin 32) xfce4-verve-plugin 33) xfce4-wavelan-plugin 34) xfce4-weather-plugin 35) xfce4-whiskermenu-plugin 36) xfce4-xkb-plugin
Enter a selection (default=all):
resolving dependencies...
looking for conflicting packages...
Packages (70) dbus-glib-0.114-1 elementary-icon-theme-8.2.0-1 gnome-themes-extra-1:3.28-1 gtk-layer-shell-0.10.1-1 gtksourceview4-4.8.4-2 libburn-1.5.8-1 libgtop-2.41.3-2 libisofs-1.5.8.1-1 libkeybinder3-0.3.2-5 libmpd-11.8.17-7 libwnck3-43.3-1 libxfce4ui-4.20.2-1 libxfce4util-4.20.1-1 libxfce4windowing-4.20.5-3 libxklavier-5.4-7 libxres-1.2.3-1 polkit-gnome-0.105-12 xorg-iceauth-1.0.11-1 xorg-xinit-1.4.4-1 xorg-xmodmap-1.0.11-2 exo-4.20.0-2 garcon-4.20.0-2 mousepad-0.7.0-1 parole-4.20.0-1 ristretto-0.14.0-1 thunar-4.20.8-3 thunar-archive-plugin-0.6.0-1 thunar-media-tags-plugin-0.6.0-1 thunar-volman-4.20.0-2 tumbler-4.20.1-1 xfburn-0.8.0-1 xfce4-appfinder-4.20.0-2 xfce4-battery-plugin-1.2.0-1 xfce4-clipman-plugin-1.7.0-1 xfce4-cpufreq-plugin-1.3.0-1 xfce4-cpugraph-plugin-1.3.0-1 xfce4-dict-0.8.9-1 xfce4-diskperf-plugin-2.8.0-2 xfce4-eyes-plugin-4.7.0-1 xfce4-fsguard-plugin-1.2.0-1 xfce4-genmon-plugin-4.3.0-1 xfce4-mailwatch-plugin-1.4.0-1 xfce4-mount-plugin-1.2.0-1 xfce4-mpc-plugin-0.6.0-1 xfce4-netload-plugin-1.5.0-1 xfce4-notes-plugin-1.12.0-1 xfce4-notifyd-0.9.7-2 xfce4-panel-4.20.7-1 xfce4-places-plugin-1.9.0-1 xfce4-power-manager-4.20.0-3 xfce4-pulseaudio-plugin-0.5.1-1 xfce4-screensaver-4.20.2-1 xfce4-screenshooter-1.11.3-3 xfce4-sensors-plugin-1.4.5-1 xfce4-session-4.20.4-1 xfce4-settings-4.20.4-1 xfce4-smartbookmark-plugin-0.6.0-2 xfce4-systemload-plugin-1.4.0-1 xfce4-taskmanager-1.6.0-1 xfce4-terminal-1.2.0-1 xfce4-time-out-plugin-1.2.0-1 xfce4-timer-plugin-1.8.0-1 xfce4-verve-plugin-2.1.0-1 xfce4-wavelan-plugin-0.7.0-2 xfce4-weather-plugin-0.12.0-2 xfce4-whiskermenu-plugin-2.10.1-2 xfce4-xkb-plugin-0.9.0-1 xfconf-4.20.0-2 xfdesktop-4.20.2-1 xfwm4-4.20.0-2
Total Download Size: 22.20 MiB
Total Installed Size: 136.65 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
elementary-icon-theme-8.2.0-1-any downloading...
gnome-themes-extra-1:3.28-1-any downloading...
xfce4-weather-plugin-0.12.0-2-aarch64 downloading...
thunar-4.20.8-3-aarch64 downloading...
xfdesktop-4.20.2-1-aarch64 downloading...
gtksourceview4-4.8.4-2-aarch64 downloading...
xfce4-settings-4.20.4-1-aarch64 downloading...
xfce4-panel-4.20.7-1-aarch64 downloading...
xfce4-power-manager-4.20.0-3-aarch64 downloading...
xfwm4-4.20.0-2-aarch64 downloading...
mousepad-0.7.0-1-aarch64 downloading...
xfburn-0.8.0-1-aarch64 downloading...
xfce4-terminal-1.2.0-1-aarch64 downloading...
libwnck3-43.3-1-aarch64 downloading...
libxfce4ui-4.20.2-1-aarch64 downloading...
xfce4-session-4.20.4-1-aarch64 downloading...
parole-4.20.0-1-aarch64 downloading...
exo-4.20.0-2-aarch64 downloading...
xfce4-xkb-plugin-0.9.0-1-aarch64 downloading...
libburn-1.5.8-1-aarch64 downloading...
libisofs-1.5.8.1-1-aarch64 downloading...
ristretto-0.14.0-1-aarch64 downloading...
xfce4-screensaver-4.20.2-1-aarch64 downloading...
xfce4-whiskermenu-plugin-2.10.1-2-aarch64 downloading...
xfce4-notifyd-0.9.7-2-aarch64 downloading...
libgtop-2.41.3-2-aarch64 downloading...
xfce4-sensors-plugin-1.4.5-1-aarch64 downloading...
xfconf-4.20.0-2-aarch64 downloading...
xfce4-clipman-plugin-1.7.0-1-aarch64 downloading...
xfce4-dict-0.8.9-1-aarch64 downloading...
tumbler-4.20.1-1-aarch64 downloading...
xfce4-appfinder-4.20.0-2-aarch64 downloading...
libxfce4windowing-4.20.5-3-aarch64 downloading...
garcon-4.20.0-2-aarch64 downloading...
xfce4-mailwatch-plugin-1.4.0-1-aarch64 downloading...
xfce4-screenshooter-1.11.3-3-aarch64 downloading...
xfce4-notes-plugin-1.12.0-1-aarch64 downloading...
libxfce4util-4.20.1-1-aarch64 downloading...
dbus-glib-0.114-1-aarch64 downloading...
thunar-volman-4.20.0-2-aarch64 downloading...
xfce4-taskmanager-1.6.0-1-aarch64 downloading...
xfce4-cpugraph-plugin-1.3.0-1-aarch64 downloading...
xfce4-pulseaudio-plugin-0.5.1-1-aarch64 downloading...
xfce4-cpufreq-plugin-1.3.0-1-aarch64 downloading...
xfce4-battery-plugin-1.2.0-1-aarch64 downloading...
xfce4-mount-plugin-1.2.0-1-aarch64 downloading...
libxklavier-5.4-7-aarch64 downloading...
xfce4-fsguard-plugin-1.2.0-1-aarch64 downloading...
xfce4-places-plugin-1.9.0-1-aarch64 downloading...
gtk-layer-shell-0.10.1-1-aarch64 downloading...
xfce4-genmon-plugin-4.3.0-1-aarch64 downloading...
thunar-media-tags-plugin-0.6.0-1-aarch64 downloading...
polkit-gnome-0.105-12-aarch64 downloading...
xfce4-timer-plugin-1.8.0-1-aarch64 downloading...
xfce4-time-out-plugin-1.2.0-1-aarch64 downloading...
xfce4-diskperf-plugin-2.8.0-2-aarch64 downloading...
xfce4-systemload-plugin-1.4.0-1-aarch64 downloading...
xfce4-netload-plugin-1.5.0-1-aarch64 downloading...
libmpd-11.8.17-7-aarch64 downloading...
xfce4-eyes-plugin-4.7.0-1-aarch64 downloading...
xfce4-verve-plugin-2.1.0-1-aarch64 downloading...
xfce4-mpc-plugin-0.6.0-1-aarch64 downloading...
thunar-archive-plugin-0.6.0-1-aarch64 downloading...
xfce4-wavelan-plugin-0.7.0-2-aarch64 downloading...
xfce4-smartbookmark-plugin-0.6.0-2-aarch64 downloading...
xorg-xmodmap-1.0.11-2-aarch64 downloading...
libkeybinder3-0.3.2-5-aarch64 downloading...
xorg-xinit-1.4.4-1-aarch64 downloading...
xorg-iceauth-1.0.11-1-aarch64 downloading...
libxres-1.2.3-1-aarch64 downloading...
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing libxfce4util...
installing xfconf...
installing libgtop...
installing libxfce4ui...
installing exo...
installing garcon...
installing thunar...
Optional dependencies for thunar
catfish: file searching
gvfs: trash support, mounting with udisk and remote filesystems
tumbler: thumbnail previews [pending]
thunar-volman: removable device management [pending]
thunar-archive-plugin: archive creation and extraction [pending]
thunar-media-tags-plugin: view/edit ID3/OGG tags [pending]
installing thunar-volman...
installing tumbler...
Optional dependencies for tumbler
ffmpegthumbnailer: video thumbnails
poppler-glib: PDF thumbnails
libgsf: ODF thumbnails
libgepub: EPUB thumbnails
libopenraw: RAW thumbnails
freetype2: font thumbnails [installed]
installing xfce4-appfinder...
installing gtk-layer-shell...
installing libxres...
installing libwnck3...
installing libxfce4windowing...
installing xfce4-panel...
installing xfce4-notifyd...
installing xfce4-power-manager...
installing xorg-iceauth...
installing xorg-xmodmap...
installing xorg-xinit...
Optional dependencies for xorg-xinit
xorg-twm
xterm
installing polkit-gnome...
installing xfce4-session...
Optional dependencies for xfce4-session
gnome-keyring: for keyring support when GNOME compatibility is enabled
xfce4-screensaver: for locking screen with xflock4 [pending]
xscreensaver: for locking screen with xflock4
light-locker: for locking screen with xflock4
labwc: recommended compositor for the experimental Wayland session
installing libxklavier...
installing elementary-icon-theme...
installing gnome-themes-extra...
installing xfce4-settings...
Optional dependencies for xfce4-settings
python: xfce4-compose-mail -- "mailto:" URI handling [installed]
xiccd: for displays support in xfce4-color-settings
cups: for printers support in xfce4-color-settings [installed]
sane: for scanners support in xfce4-color-settings
installing xfce4-terminal...
installing xfdesktop...
installing xfwm4...
installing gtksourceview4...
installing mousepad...
Optional dependencies for mousepad
gspell: spell checking plugin
libxfce4ui: shortcuts editor plugin [installed]
installing dbus-glib...
installing parole...
Optional dependencies for parole
gst-libav: Extra media codecs
gst-plugins-bad: Extra media codecs [installed]
gst-plugins-ugly: Extra media codecs
installing ristretto...
installing thunar-archive-plugin...
Optional dependencies for thunar-archive-plugin
file-roller
engrampa
ark [installed]
xarchiver
installing thunar-media-tags-plugin...
installing libburn...
installing libisofs...
installing xfburn...
installing xfce4-battery-plugin...
installing xfce4-clipman-plugin...
installing xfce4-cpufreq-plugin...
installing xfce4-cpugraph-plugin...
installing xfce4-dict...
installing xfce4-diskperf-plugin...
installing xfce4-eyes-plugin...
installing xfce4-fsguard-plugin...
installing xfce4-genmon-plugin...
installing xfce4-mailwatch-plugin...
installing xfce4-mount-plugin...
installing libmpd...
installing xfce4-mpc-plugin...
installing xfce4-netload-plugin...
installing xfce4-notes-plugin...
installing xfce4-places-plugin...
installing libkeybinder3...
Optional dependencies for libkeybinder3
lua-lgi: lua bindings
installing xfce4-pulseaudio-plugin...
Optional dependencies for xfce4-pulseaudio-plugin
pavucontrol: default pulseaudio mixer
installing xfce4-screensaver...
Optional dependencies for xfce4-screensaver
onboard: on screen keyboard for unlocking
xscreensaver: additional themes
installing xfce4-screenshooter...
installing xfce4-sensors-plugin...
Optional dependencies for xfce4-sensors-plugin
hddtemp: for monitoring the temperature of hard drives
installing xfce4-smartbookmark-plugin...
installing xfce4-systemload-plugin...
installing xfce4-taskmanager...
installing xfce4-time-out-plugin...
installing xfce4-timer-plugin...
installing xfce4-verve-plugin...
installing xfce4-wavelan-plugin...
installing xfce4-weather-plugin...
installing xfce4-whiskermenu-plugin...
Optional dependencies for xfce4-whiskermenu-plugin
mugshot: Update user details
installing xfce4-xkb-plugin...
Optional dependencies for xfce4-xkb-plugin
xfce4-notifyd: show notifications on layout change [installed]
:: Running post-transaction hooks...
(1/8) Reloading user manager configuration...
(2/8) Arming ConditionNeedsUpdate...
(3/8) Refreshing PackageKit...
(4/8) Updating GIO module cache...
(5/8) Compiling GSettings XML schema files...
(6/8) Updating icon theme caches...
(7/8) Updating the info directory file...
(8/8) Updating the desktop file MIME type cache...
@@ -0,0 +1,30 @@
resolving dependencies...
looking for conflicting packages...
Packages (2) mailcap-2.1.54-2 firefox-150.0.1-1
Total Download Size: 63.40 MiB
Total Installed Size: 256.95 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
firefox-150.0.1-1-aarch64 downloading...
mailcap-2.1.54-2-any downloading...
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing mailcap...
installing firefox...
Optional dependencies for firefox
hunspell-en_US: Spell checking, American English
libnotify: Notification integration [installed]
networkmanager: Location detection via available WiFi networks [installed]
speech-dispatcher: Text-to-Speech
xdg-desktop-portal: Screensharing with Wayland [installed]
:: Running post-transaction hooks...
(1/4) Arming ConditionNeedsUpdate...
(2/4) Refreshing PackageKit...
(3/4) Updating icon theme caches...
(4/4) Updating the desktop file MIME type cache...
@@ -0,0 +1,20 @@
loading packages...
resolving dependencies...
looking for conflicting packages...
Packages (1) xtrace-1.4.0-2
Total Installed Size: 0.31 MiB
:: Proceed with installation? [Y/n]
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing xtrace...
Optional dependencies for xtrace
xorg-xauth [installed]
:: Running post-transaction hooks...
(1/2) Arming ConditionNeedsUpdate...
(2/2) Refreshing PackageKit...
@@ -0,0 +1,47 @@
resolving dependencies...
looking for conflicting packages...
Packages (11) libadwaita-1:1.9.0-1 libdex-1.1.0-1 libpanel-1.10.4-1 startup-notification-0.12-9 openbox-3.6.1-14 sysprof-50.0-2 xorg-xev-1.2.6-2 xorg-xinput-1.6.4-2 xorg-xkill-1.0.7-1 xorg-xrandr-1.5.4-1 xorg-xwininfo-1.1.6-2
Total Download Size: 2.31 MiB
Total Installed Size: 16.01 MiB
:: Proceed with installation? [Y/n]
:: Retrieving packages...
sysprof-50.0-2-aarch64 downloading...
libadwaita-1:1.9.0-1-aarch64 downloading...
openbox-3.6.1-14-aarch64 downloading...
libpanel-1.10.4-1-aarch64 downloading...
libdex-1.1.0-1-aarch64 downloading...
xorg-xrandr-1.5.4-1-aarch64 downloading...
xorg-xinput-1.6.4-2-aarch64 downloading...
xorg-xwininfo-1.1.6-2-aarch64 downloading...
startup-notification-0.12-9-aarch64 downloading...
xorg-xev-1.2.6-2-aarch64 downloading...
xorg-xkill-1.0.7-1-aarch64 downloading...
checking keyring...
checking package integrity...
loading package files...
checking for file conflicts...
:: Processing package changes...
installing xorg-xrandr...
installing xorg-xev...
installing xorg-xinput...
installing xorg-xwininfo...
installing xorg-xkill...
installing libadwaita...
installing libdex...
installing libpanel...
installing sysprof...
installing startup-notification...
installing openbox...
Optional dependencies for openbox
python-pyxdg: for the openbox-xdg-autostart script
:: Running post-transaction hooks...
(1/7) Reloading system manager configuration...
(2/7) Updating the MIME type database...
(3/7) Arming ConditionNeedsUpdate...
(4/7) Refreshing PackageKit...
(5/7) Reloading system bus configuration...
(6/7) Updating icon theme caches...
(7/7) Updating the desktop file MIME type cache...
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
@@ -0,0 +1,483 @@
# revert.log — campaign-installed state on ohm
This file lists every change this campaign made to ohm's *system
state* during Phase 0 inventory work that was done **purely for
testing and analysis**. To return ohm to the state it was in
before this campaign opened, run the "Revert" commands at the
bottom of this file in order.
This file is updated whenever the campaign installs a package or
mutates a sysctl/service/config. Closing the campaign without
reverting is a deliberate operator decision; if reverted, this
file is the authoritative record of what to undo.
Inherited state from the predecessor (`kwin_overlay_subsurface`)
is **not** in scope here — those carry-overs are documented in
`README.md` § "Carry-overs from predecessor (system state, not
data)" and would be reverted via that campaign's
`phase1_evidence/ohm_tooling_revert_log.md` instead.
---
## Entry 1 — 2026-05-03 ~09:20 CEST
**Trigger:** Phase 0 deliverables 2 + 4 (`x11_inventory_2026-05-03/inventory.md`)
identified missing measurement tools and the absence of a
non-compositing WM. Operator instructed: "fire the installs."
**Driven from:** `mfritsche@noether` over SSH to `ohm.fritz.box`,
passwordless `sudo` (verified before firing).
**Pre-install snapshot:** `pkglist.pre.txt` (1169 packages,
sha256 `fd72bcf6a7289d2f2dd6ce02706240006b534731540bf63f56ee9b666e7be68f`).
**Post-install snapshot:** `pkglist.post.txt` (1180 packages).
**Full pacman transaction log:** `pacman.install.log`.
### What was installed
Single transaction: `sudo pacman -Sy && sudo pacman -S --needed
xorg-xrandr xorg-xev xorg-xinput xorg-xwininfo xorg-xkill sysprof openbox`
| Package | Version | Reason |
|---|---|---|
| xorg-xrandr | 1.5.4-1 | explicit — RandR CLI for output/vblank probing |
| xorg-xev | 1.2.6-2 | explicit — per-window event capture |
| xorg-xinput | 1.6.4-2 | explicit — input-device probe (touchscreen confound) |
| xorg-xwininfo | 1.1.6-2 | explicit — get browser window geometry/wid |
| xorg-xkill | 1.0.7-1 | explicit — clean kill of stuck X clients between reps |
| sysprof | 50.0-2 | explicit — kernel perf alternative w/ flamegraph default |
| openbox | 3.6.1-14 | explicit — non-compositing WM for the without-KWin matrix cell |
| libadwaita | 1:1.9.0-1 | dep of sysprof |
| libdex | 1.1.0-1 | dep of sysprof |
| libpanel | 1.10.4-1 | dep of sysprof |
| startup-notification | 0.12-9 | dep of openbox |
11 added, 0 removed. Cross-checked via `comm -13
pkglist.pre.txt pkglist.post.txt` — exact same 11.
### What was changed (config, not packages)
- **`/etc/sysctl.d/90-x11-research-perf.conf` was created with
`kernel.perf_event_paranoid = 1`, then reverted same session.**
- Created: applied via `sudo sysctl --system`; effective
value went 2 → 1.
- Verification probe revealed the tweak was **not delivering
the promised behavior**: even with `task-clock` (a software
event that should be allowed at paranoid=1), `perf record
-p <Xorg_pid>` on this aarch64 kernel still failed with
"Failure to open any events for recording". Predecessor
pattern confirmed in
`kwin_overlay_subsurface/phase3_protocol.md:121,158,216`:
they used **`sudo perf record`** per-rep, not a sysctl
tweak. Passwordless sudo over SSH already works on ohm so
this is unattended-friendly.
- Reverted: `sudo rm /etc/sysctl.d/90-x11-research-perf.conf`
and `sudo sysctl kernel.perf_event_paranoid=2` (the
`--system` reapply does not reset removed-file values; an
explicit set was required).
- Net state change: **none** (paranoid back at kernel
default 2; `/etc/sysctl.d/` empty again).
- Lesson: the inventory's "set paranoid=1" recommendation
was wrong. Updated `inventory.md` will reflect that the
actual pattern is `sudo perf record -p <pid>` per-rep.
### What was created as a side effect (no operator action)
- `/usr/share/xsessions/openbox.desktop` (shipped by the
`openbox` package). SDDM will list "Openbox" as a session
choice on next greet. Removing the openbox package removes
the .desktop file.
### What was *not* installed (deliberate, operator-decision-pending)
- **firefox** — 2 of the 6 matrix cells reference Firefox
(`C-W-ff-*`, `C-X-ff-*`). Operator decides whether to install
or to mark those cells N/A. If installed later, append a new
entry below.
- **xtrace (X protocol tracer, AUR)** — explicitly marked
optional in `inventory.md`. The matrix's primary metrics
(effective_fps / drops / latency / CPU%) don't require it.
If installed later, append a new entry below.
---
## Entry 2 — 2026-05-03 ~09:30 CEST
**Trigger:** Operator preference for a desktop-environment-flavored
without-KWin testbed alongside the bare openbox cell ("I like
desktop environments. With respect to the test - should xfce or
cinnamon be our test bed?" → "yes add xfce with goodies").
Cinnamon was excluded because Muffin is a mandatory compositor;
XFCE qualifies if `xfwm4`'s built-in compositor is left disabled.
**Driven from:** `mfritsche@noether` over SSH to `ohm.fritz.box`,
passwordless `sudo`.
**Pre-install snapshot:** `pkglist.entry2.pre.txt` (1180 packages,
sha256 `1f72c7ed2f9d476d24d0dfb53fcb387ea39f882c89375d68fc21298313252d78`).
**Post-install snapshot:** `pkglist.entry2.post.txt` (1250 packages).
**Full pacman transaction log:** `pacman.entry2.log`.
### What was installed
Single transaction: `sudo pacman -S --needed xfce4 xfce4-goodies`
(both are package groups; pacman expanded them).
- **50 explicit packages** (the union of the `xfce4` group's 14
members and the `xfce4-goodies` group's 36 members):
exo, garcon, mousepad, parole, ristretto, thunar, thunar-archive-plugin,
thunar-media-tags-plugin, thunar-volman, tumbler, xfburn,
xfce4-appfinder, xfce4-battery-plugin, xfce4-clipman-plugin,
xfce4-cpufreq-plugin, xfce4-cpugraph-plugin, xfce4-dict,
xfce4-diskperf-plugin, xfce4-eyes-plugin, xfce4-fsguard-plugin,
xfce4-genmon-plugin, xfce4-mailwatch-plugin, xfce4-mount-plugin,
xfce4-mpc-plugin, xfce4-netload-plugin, xfce4-notes-plugin,
xfce4-notifyd, xfce4-panel, xfce4-places-plugin,
xfce4-power-manager, xfce4-pulseaudio-plugin, xfce4-screensaver,
xfce4-screenshooter, xfce4-sensors-plugin, xfce4-session,
xfce4-settings, xfce4-smartbookmark-plugin, xfce4-systemload-plugin,
xfce4-taskmanager, xfce4-terminal, xfce4-time-out-plugin,
xfce4-timer-plugin, xfce4-verve-plugin, xfce4-wavelan-plugin,
xfce4-weather-plugin, xfce4-whiskermenu-plugin, xfce4-xkb-plugin,
xfconf, xfdesktop, xfwm4
- **20 transitive deps**:
dbus-glib, elementary-icon-theme, gnome-themes-extra,
gtk-layer-shell, gtksourceview4, libburn, libgtop, libisofs,
libkeybinder3, libmpd, libwnck3, libxfce4ui, libxfce4util,
libxfce4windowing, libxklavier, libxres, polkit-gnome,
xorg-iceauth, xorg-xinit, xorg-xmodmap
70 added, 0 removed. Cross-checked via
`comm -13 pkglist.entry2.pre.txt pkglist.entry2.post.txt` — full
list in `entry2.added.list` (sourced from same diff).
### What was changed (config)
- **`~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml` created**
(208 bytes), pre-seeding `general/use_compositing = false`. This
ensures the **first XFCE login lands with xfwm4's built-in GL
compositor disabled**, matching the matrix's "without-KWin =
no compositor in the display path" definition. Without this
pre-seed, `xfwm4` would default to `use_compositing=true` and
the operator would have to remember to toggle it via *Settings
→ Window Manager Tweaks → Compositor* before every measurement
rep — a confound waiting to happen.
The directory tree `~/.config/xfce4/` did not exist before this
write; the entire tree is removable.
### What was created as a side effect (no operator action)
- `/usr/share/xsessions/xfce.desktop` (shipped by `xfce4-session`).
SDDM now lists three X11 sessions: openbox.desktop (entry 1),
plasmax11.desktop (pre-existing), xfce.desktop (this entry).
### After-revert verification
The first-login compositor pre-seed is per-user state in
`~/.config/xfce4/`. The revert procedure deletes the entire
xfce4 user-config tree if (and only if) it contains nothing but
the pre-seeded xfwm4.xml. If the operator logs into XFCE before
revert, xfconfd will populate that tree with other settings
files; the revert then becomes a manual decision.
---
## Entry 3 — 2026-05-03 ~09:45 CEST
**Trigger:** Operator instructed "install both" — closing the two
operator-decision items left open in entry 1's "What was *not*
installed" section: firefox (matrix completeness — 2 of 6 cells
need it) and the X-protocol tracer xtrace.
**Driven from:** `mfritsche@noether` over SSH to `ohm.fritz.box`,
passwordless `sudo` for pacman, regular user for `yay` /
`makepkg`.
**Pre-install snapshot:** `pkglist.entry3.pre.txt` (1250 packages,
sha256 `e73ffdd41b683aaba2ad18efa5ce3e7252577c13b4f0bb14e9de7bdfbfd5e26e`).
**Post-install snapshot:** `pkglist.entry3.post.txt` (1253 packages).
**Transaction logs:** `pacman.entry3a.firefox.log`,
`pacman.entry3b.xtrace.log`.
### What was installed
Two transactions in one entry:
| Package | Version | Source | Reason |
|---|---|---|---|
| firefox | 150.0.1-1 | extra | explicit — matrix's `C-W-ff-*` and `C-X-ff-*` cells |
| mailcap | 2.1.54-2 | extra | dep of firefox |
| xtrace | 1.4.0-2 | AUR | explicit — X protocol tracer (parallel to `WAYLAND_DEBUG=1`) |
3 added, 0 removed.
Firefox was a clean `pacman -S firefox`. xtrace went via
`yay -G xtrace; cd ~/.cache/yay/xtrace; makepkg -s --noconfirm
--ignorearch; sudo pacman -U --noconfirm xtrace-1.4.0-2-aarch64.pkg.tar.zst`.
The `--ignorearch` was needed because the AUR PKGBUILD declares
`arch=('i686' 'x86_64')` only — the package builds cleanly on
aarch64, the maintainer just hasn't updated the array.
### File-conflict probe (no actual conflict)
A pre-install probe suggested AUR `xtrace` would conflict with
glibc's `/usr/bin/xtrace` (glibc ships a syscall-tracer shell
script under that path). Investigation showed the **Arch AUR
PKGBUILD renames the binary to `/usr/bin/x11trace`** specifically
to avoid this collision. Both binaries now coexist:
- `/usr/bin/xtrace` — glibc's syscall/function tracer (5 KB
bash script). Unchanged.
- `/usr/bin/x11trace` — the X protocol tracer (133 KB aarch64
ELF, AUR `xtrace` 1.4.0). New.
The early `pacman -U --overwrite '/usr/bin/xtrace'` flag turned
out to be unnecessary; pacman would have allowed the install
without it because nothing actually overlapped on disk. No
state was overwritten.
### Verification
- `firefox --version` → `Mozilla Firefox 150.0.1`
- `x11trace --version` → `xtrace version 1.4.0`
- `x11trace --help` confirms X-protocol semantics
("Dump all X protocol data being tunneled from a fake X
display to a real one")
- `head -3 /usr/bin/xtrace` still shows the GNU libc copyright
banner — glibc's xtrace untouched.
### What is now fully resolved from earlier "operator-decision-pending"
- ✅ firefox installed → all 6 matrix cells now have a binary
available.
- ✅ xtrace (X protocol tracer) installed at `/usr/bin/x11trace`
→ if any Phase 1 cell wants protocol-level evidence parallel
to the predecessor's `WAYLAND_DEBUG=1`, the instrument is
ready.
---
## Entry 4 — 2026-05-03 ~10:25 CEST
**Trigger:** Operator was in the freshly-switched XFCE session
("Can you rotate the xfce session for me? Right now, left is up
and right is down"). The PineTab2 panel is mounted portrait
(native mode 800×1280@59.98) and XFCE's default rotation
("normal") shows it that way; Plasma X11 / Plasma Wayland have
historically used `right` rotation to present landscape
1280×800. This entry brings XFCE in line.
**Driven from:** `mfritsche@noether` over SSH to `ohm.fritz.box`,
regular user (no sudo needed; per-user state only).
### What was changed
1. **Live rotation applied** to the active XFCE session (session
id 395, Xorg pid 32073, DISPLAY=:0,
XAUTHORITY=/run/user/1001/xauth_QctOSR):
```
xrandr --output DSI-1 --rotate right
```
Result: `Screen 0 ... current 1280 x 800` and `DSI-1
connected 1280x800+0+0 right`. Matches the Plasma X11
orientation.
2. **Persistence: `~/.config/autostart/99-rotate-dsi1.desktop`
created** so every future XFCE login runs the rotation
immediately. File contents:
```
[Desktop Entry]
Type=Application
Name=Rotate DSI-1 to landscape (right)
Comment=Created 2026-05-03 by x11-session-research campaign —
see phase0_evidence/x11_inventory_2026-05-03/revert.log entry 4
Exec=sh -c "xrandr --output DSI-1 --rotate right"
OnlyShowIn=XFCE;
Terminal=false
```
`OnlyShowIn=XFCE` keeps it from running under Plasma X11 /
openbox — those handle their own rotation state.
### Why not via xfconf
XFCE's `displays` xfconf channel was empty
(`xfconf-query -c displays -lv` showed only `/ActiveProfile`
= `Default` with no per-monitor data). xfce4-display-settings
populates that profile on first GUI use; without that population,
writing rotation codes by hand into xfconf is brittle (the
encoding of "right" depends on xfce4-settings version). An
autostart .desktop file is version-independent and easy to
inspect.
If the operator subsequently runs *Settings → Display* in the
XFCE GUI and clicks Save / Apply, xfconf will write a real
profile and the autostart file becomes redundant — at that
point either can stay (no conflict) or the autostart can be
removed.
### What is NOT changed
- No system-wide config touched.
- No package install.
- Plasma X11 and openbox sessions unaffected — `OnlyShowIn=XFCE`
scopes the autostart to XFCE only.
- Touchscreen orientation: **NOT** auto-corrected by this entry.
After rotation, the Goodix Capacitive TouchScreen will likely
report touches in the panel's native (portrait) coordinate
space, so taps land on the wrong screen position. Fix when
it becomes a concern:
```
xinput map-to-output "Goodix Capacitive TouchScreen" DSI-1
```
This is **not auto-applied** in this entry because the matrix
cells use mouse + keyboard for navigation, not touch — and
also because mapping the touchscreen would itself need
another autostart entry. If touch becomes relevant later,
add it as entry 5.
---
## Entry 5 — 2026-05-03 ~10:29 CEST
**Trigger:** Operator confirmed XFCE session alive after entry 4
("xfce-session alive"), then accepted the touchscreen-mapping
follow-up offered in entry 4's "What is NOT changed" note.
**Driven from:** `mfritsche@noether` over SSH to `ohm.fritz.box`,
regular user.
### What was changed
1. **Live mapping applied:**
```
xinput map-to-output "pointer:Goodix Capacitive TouchScreen" DSI-1
```
The `pointer:` prefix is required because the Goodix exposes
both a pointer device (id 13) and a keyboard subdevice
(id 15) — `xinput` needs the disambiguation. Verified by
`xinput list-props`: Coordinate Transformation Matrix
updated to `[0 1 0 / -1 0 1 / 0 0 1]` — the homogeneous
90°-clockwise rotation matrix matching the screen.
2. **Persistence:
`~/.config/autostart/99-rotate-touchscreen.desktop` created**.
Same `OnlyShowIn=XFCE` scoping. The Exec uses `sh -c "sleep 2;
xinput ..."` because XFCE may launch this autostart before
entry 4's xrandr rotation has finished applying — without
the sleep, the xinput remap can race against an unrotated
screen state.
### What is NOT changed
- Other input devices (touchpad, USB mouse, USB keyboard)
unchanged — they don't report panel-relative coordinates so
rotation doesn't affect them.
- Plasma X11 / openbox sessions unaffected
(`OnlyShowIn=XFCE`).
- Wayland sessions unaffected (xinput is X11-only). When KDE
Plasma Wayland next runs, it uses its own
`kwriteconfig5 --file kwinrc` mapping — that's predecessor
state, not touched here.
---
## How to revert this campaign's installs
Entries reverted in **reverse order** (entry 5 → 4 → 3 → 2 → 1):
```sh
ssh ohm.fritz.box '
set -e
# ----- Entry 5 revert: touchscreen mapping -----
rm -f ~/.config/autostart/99-rotate-touchscreen.desktop
# Live revert: reset Coordinate Transformation Matrix to identity.
# Only meaningful in an X11 session; harmless if no XFCE running.
if pgrep -x xfwm4 >/dev/null; then
DISPLAY=:0 XAUTHORITY=$(ls /run/user/$(id -u)/xauth_* 2>/dev/null | head -1) \
xinput set-prop "pointer:Goodix Capacitive TouchScreen" \
"Coordinate Transformation Matrix" \
1 0 0 0 1 0 0 0 1 || true
fi
# ----- Entry 4 revert: XFCE rotation -----
rm -f ~/.config/autostart/99-rotate-dsi1.desktop
# Live rotation revert (only if currently in XFCE):
if pgrep -x xfwm4 >/dev/null; then
DISPLAY=:0 XAUTHORITY=$(ls /run/user/$(id -u)/xauth_* 2>/dev/null | head -1) \
xrandr --output DSI-1 --rotate normal || true
fi
# ----- Entry 3 revert: firefox + xtrace -----
sudo pacman -Rsn --noconfirm firefox xtrace
# mailcap was pulled as a firefox dep; -Rs cleans it up if no other
# dependent remains.
# ----- Entry 2 revert: XFCE -----
sudo pacman -Rsn --noconfirm \
exo garcon mousepad parole ristretto thunar \
thunar-archive-plugin thunar-media-tags-plugin thunar-volman tumbler \
xfburn xfce4-appfinder xfce4-battery-plugin xfce4-clipman-plugin \
xfce4-cpufreq-plugin xfce4-cpugraph-plugin xfce4-dict \
xfce4-diskperf-plugin xfce4-eyes-plugin xfce4-fsguard-plugin \
xfce4-genmon-plugin xfce4-mailwatch-plugin xfce4-mount-plugin \
xfce4-mpc-plugin xfce4-netload-plugin xfce4-notes-plugin \
xfce4-notifyd xfce4-panel xfce4-places-plugin xfce4-power-manager \
xfce4-pulseaudio-plugin xfce4-screensaver xfce4-screenshooter \
xfce4-sensors-plugin xfce4-session xfce4-settings \
xfce4-smartbookmark-plugin xfce4-systemload-plugin xfce4-taskmanager \
xfce4-terminal xfce4-time-out-plugin xfce4-timer-plugin \
xfce4-verve-plugin xfce4-wavelan-plugin xfce4-weather-plugin \
xfce4-whiskermenu-plugin xfce4-xkb-plugin xfconf xfdesktop xfwm4
# Per-user xfconf tree: only safe to remove if the operator never
# logged into XFCE (otherwise xfconfd may have written other settings
# the operator would lose). Manual check:
if [ "$(find ~/.config/xfce4 -type f | sort)" = "$HOME/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml" ]; then
rm -rf ~/.config/xfce4
echo " ~/.config/xfce4 removed (only the pre-seeded xfwm4.xml was there)"
else
echo " ~/.config/xfce4 contains operator-added files; manual review required"
find ~/.config/xfce4 -type f
fi
# ----- Entry 1 revert: measurement tools + openbox -----
sudo pacman -Rsn --noconfirm \
openbox sysprof \
xorg-xrandr xorg-xev xorg-xinput xorg-xwininfo xorg-xkill
# Sysctl: nothing to undo (entry 1's paranoid=1 was already reverted
# in-session — see entry 1 § "What was changed").
# ----- Verification -----
echo "expected pkg count after revert: 1169"
pacman -Qq | wc -l
echo "expected sysctl: kernel.perf_event_paranoid = 2"
sysctl kernel.perf_event_paranoid
echo "expected sessions: only plasmax11.desktop"
ls /usr/share/xsessions/
echo "expected /etc/sysctl.d/: empty"
ls /etc/sysctl.d/
'
```
Sanity-check: `pacman -Qq | wc -l` should report **1169**, matching
`pkglist.pre.txt`. If it reports anything else, the operator
added/removed a package between an entry and the revert;
investigate before declaring revert complete.
---
## Adding a new entry
When a future Phase install/mutation happens, append a new
`## Entry N — YYYY-MM-DD` section above the "How to revert"
section. Re-snapshot `pacman -Qq` into a new
`pkglist.entryN.{pre,post}.txt` so each entry is independently
revertible. Prepend the new entry's revert step to the
"How to revert" block (entries revert in reverse install
order — newest first).