garmin-dump, weather-dump and library-dump differed only in project, database and rotation; one
db-dump PROJECT DATABASE week|day replaces them. The units keep their names and only change ExecStart.
NOAA's decoded METAR has no sky conditions line for CAVOK or NSC, so the
weather showed a generic cloud icon and "Unknown"; read them from the raw
observation as clear.
Signal 8.x sets its WM_CLASS to lowercase "signal", so the case-sensitive "Signal" rule no longer matched. Merge it with the discord rule into a case-insensitive classIn.
Time of today's next appointment, or an icon for a whole-day event today or an appointment tomorrow; click lists both days, right-click opens the calcurse scratchpad. Uptime dropped and the date shortened to make room.
On expiry calcurse-sync starts calcurse-relogin, a notification that opens the consent page when clicked and catches the OAuth code on 127.0.0.1:8749. dunst's left-click now runs a notification's action before closing it.
Hourly timer started from xmonad, plus UI hooks that sync before load and after exit. calcurse-sync notifies once when the OAuth login expires and restarts the daemon after imports, since it never re-reads its files.
The calcurse daemon only alerts timed appointments, so birthdays went unnoticed. A daily 09:00 timer, started from xmonad and persistent across suspend, sends today's events through notify-send.
Use <pipe-message> for urlscan (pipe-entry doesn't exist in the pager) and bind it in the index too. Open HTML attachments in Zen instead of Vivaldi, from ~/.cache/mutt/html, which the firejail profiles share. Prune cached messages deleted on the server.
weather-dump.timer runs weather-dump weekly, keeping the two newest ISO weeks in
~/.local/share/ens-forecast/dumps, which simple_backup then copies; the login comes
from ~/.config/ens-forecast/dump.cnf (not tracked).
garmin-dump.timer runs garmin-dump weekly, keeping the two newest ISO weeks in
~/.local/share/negsplit/dumps, which simple_backup then copies; the login comes
from ~/.config/negsplit/dump.cnf (not tracked).
Workspaces show only their icon, layouts show an icon instead of their name, and window titles share a 60-character budget (8–30 each), so more windows get shorter titles instead of overflowing the bar.
All keys get descriptions (NamedActions) and M-F1 lists them in dmenu. Proton
and Wine games go to ws 3 by class prefix/suffix instead of one rule per game;
GIMP and Audacity go to ws 5; small tools float; new icons for ws 2-7.
screen-lock holds notifications until unlock, and M-S-l now goes through
loginctl lock-session so it uses the same locker. M-S-n pops dunst history,
M-C-n closes all notifications.
Use high-quality instead of the deprecated gpu-hq, drop the expensive ewa_lanczossharp chroma scaling, switch to hwdec=auto-safe and remove the stock example comments.
mpris-proxy registers every MPRIS player with BlueZ, which then sends AVRCP
commands to one of them (mpd). With it disabled, BlueZ sends the buttons as
media keys, which xmonad passes to playerctl.
Run playerctld as a dbus unit with Restart=on-failure, start it through that
unit on D-Bus activation, tie mpris-proxy to it, and bind the XF86 media keys
to playerctl in xmonad.
library-dump.timer writes Library-<weekday>.sql.gz to
~/.local/share/library_manager/dumps, which simple_backup then copies;
the login comes from ~/.config/library_manager/dump.cnf (not tracked).
After a successful sync, aurb runs git clean -fx in each clone under the aurutils sync folder, removing downloaded sources and build logs while keeping tracked files and VCS source folders.
vidthumb names thumbnails by a hash of path, size and mtime instead of a jq index that broke on quotes in filenames; systemd-tmpfiles removes ones unused for 30 days. discover-overlay-wait now runs from a systemd user unit started by xmonad and logs to the journal.
Wine games lose the mouse when their window moves between screens. safeView replaces greedyView for mod-N, xmobar clicks and mpv so workspace 3 always opens on screen 0 and is never swapped away; safeRescreen keeps a hidden workspace 3 off the laptop screen when screens change.
.fehbg now saves its random picks to ~/.cache/wallpapers and redraws them with
--keep; screen-layout passes this through with --keep-wallpaper, used by movie.
Add kitty themes and mutt includes loaded by tracked configs, xmonad's stack
build files, new systemd units and overrides, plus picom, pipewire, portal,
modprobed-db, btop, vifm, qt5ct/qt6ct, calcurse, mpDris2 and thefuck configs.
aurb now builds with clang + lld + ThinLTO and bind-mounts a ThinLTO cache and its clang.cfg into the chroot; --gcc keeps the old gcc build. update-kernel still uses gcc.
killAllStatusBars only kills the PIDs xmonad has stored, and bars that dropped off that list
kept running after M-q and movie, leaving a laptop-config bar on HDMI. pkill -x xmobar
catches them all.
Clicking a workspace switches to it; one visible on the other screen is
swapped onto the focused screen. xmobar uses UnsafeXMonadLog so the
click actions are kept.
discover-overlay's windows are override-redirect, so XMonad doesn't
manage them and raising a floating window (e.g. a game) covers them.
Raise them again from the log hook after every change.
- Raise volume with wpctl, capped at 100%
- Define workspace names once instead of repeating the strings
- Remove unused imports and the never-matching transmission-gtk rule
- Add missing type signatures
- Document why the isFullscreen rule is needed alongside ewmhFullscreen
- Match scratchpads by WM_CLASS instead of title, so they no longer
get shifted to workspace 1 or lose track of their window
- Spawn one xmobar per connected screen (dynamicEasySBs)
- Pick the xrandr layout and tray monitor based on whether HDMI is
connected, and re-run it on monitor hotplug
- Don't let one failed startup step block the rest
- Make the startup command safe to re-run (no duplicate trayer/picom)