CR: tmux-quantum OSS Refinement — Implementation
Implementation
Bug Fix: Wayland Clipboard in tmux
Root Cause: lib/core.conf line 31 included WAYLAND_DISPLAY in update-environment but omitted XDG_RUNTIME_DIR. Without XDG_RUNTIME_DIR (which points to /run/user/$UID/), wl-copy and wl-paste cannot locate the Wayland compositor socket. Additionally, DBUS_SESSION_BUS_ADDRESS was missing, which gopass needs for keyring/D-Bus access.
Fix: Added XDG_RUNTIME_DIR and DBUS_SESSION_BUS_ADDRESS to the update-environment directive in lib/core.conf. Added explanatory comment in lib/clipboard.conf documenting the dependency.
Live Workaround (no server restart): update-environment only takes effect for new sessions. Killing the tmux server was not an option — critical sessions were running. Instead, injected the missing variables into the running server:
tmux set-environment WAYLAND_DISPLAY "$WAYLAND_DISPLAY"
tmux set-environment XDG_RUNTIME_DIR "$XDG_RUNTIME_DIR"
tmux set-environment DBUS_SESSION_BUS_ADDRESS "$DBUS_SESSION_BUS_ADDRESS"
New panes created after this immediately inherited the variables. Existing panes retained their original (broken) environment — only new panes pick up set-environment changes. This is a reusable pattern for any update-environment fix applied to a live tmux server.
Verification: Confirmed all three variables present in new pane, then gopass show -c succeeded immediately.
Open-Source Readiness
| Change | Detail |
|---|---|
|
Created MIT license file (README already declared MIT but had no file) |
|
Distilled project rules into contributor guidelines: one domain per file, conflict checker, theme variables, doc sync, version guards |
|
Template for machine-specific bindings with generic project paths |
|
Created with actual |
|
Extracted 6 personal |
|
Updated install to |
|
Fixed F12 → F10 (Hyprland intercept), fixed binding count 150+ → 360+, updated install path |
|
Added |