exwm

stop freezes: disable global undo-tree

global-undo-tree-mode Dramatic freezes on routine “undo” I was experiencing freezes of sometimes up to 30 seconds about 3/4 of the the time when I used my muscle memory to hit undo (C-/), which I do as part of my regular “kill-line undo” combo (C-k C-/). Something must have changed recently because I started to have show-stopping freezes of my emacs thread when I tried a routine “undo.” I finally managed to squeeze a toggle-debug-on-quit and, with a bit of patience, got a C-g in during the freeze.

Getting docked triple-monitor setups on exwm at start of work

The problem: docking in to multiple monitors without restart doesn’t use them In both my offices I have a triple-screen setup (my laptop + two externals). However, I change setups regularly; on the commute, it is only my laptop. Then, on either end of that commute, it’s triple two more external monitors (but they are a different dimension of externals in either location). The problem is that the monitors are usually not recognized at plug-in time after a daily change of locations, though my other docked accessories (mostly my keyboard) are recognized.

exwm triple monitor winum mode-line window numbers need to update better

The problem An posted on reddit.1 I have my window numbers in my modelines of every window so that I can easily navigate to them with my exwm three-monitor setup. About 90% of the time they are accurate, but they get out of sync sometimes when big window operations (or closing a window) occur. As soon as I do something to invoke a mini-buffer (any C-x command), they get updated correctly, but sometimes when I try to work quickly I find they don’t match up.

Would you recommend EXWM as daily driver

EXWM is a Glass Cannon Would I recommend EXWM as a daily driver?1 Not really. I say that as someone who has chosen to use exwm exclusively for years2 and tens of thousands of hours. I tried I3 for a while, and have used EXWM under OpenSuse several years and now under Guix, almost always with 3 monitors. I find that exwm is a glass cannon. Like Linux and emacs, it has a learning curve and appeals to those who tolerate or enjoy that.

how to disable screen timeouts in guix

Problem: screen timeout in 15 minutes This question was originally posted on the guix subreddit1 My problem is that my screens timeout in 15 minutes if I’m watching something, which is problematic. It seems like the answer is my xorg settings, and I am trying to apply this: https://wiki.archlinux.org/title/Display_Power_Management_Signaling which calls for editing of my .xorg.conf.d file. It seems like it should be according to these directions: https://guix.gnu.org/manual/en/html_node/X-Window.html However, I want to make sure my syntax is correct.

Change Firefox default zoom level

Intro I use several three-monitor setups and one of the setups has a large TV-size screen as the monitor. I typically put my browser instances over there and need to shrink them to a more zoomed-out level to make websites usable at that size. The answer was to change the layout.css.devPixelsPerPx in the about:config1. I changed mine to 0.8, which was equal to about the 80% zoom level which works for me.

Cloister bell alert notification from Dunst in Guix

Intro In Guix with EXWM I use Dunst for a system alert system. I got my Dunst to have a default audio alert so that when alerts fire, regardless of which of my three monitors I am looking at, I can hear a modest alert noise. I chose the Tardis cloister bell1, a favorite audio of mine. 1. Acquire the sound I located the sound I want on Soundcloud1 and then used one of the several online SoundCloud downloaders2 to grab the file, which came down as an mp3.

volume control from guix cli with pactl instead of amixer

Intro I used to have an exwm emacs shortcut to change my volume: (exwm-input-set-key (kbd "<XF86AudioLowerVolume>") (lambda () (interactive) (shell-command "amixer set Master 2%-"))) and a similar function for the volume-up key. When I press the audio buttons, it uses amixer to change the volume. The trouble is, guix doesn’t seem to offer amixer anywhere. I don’t see it in nongnu packages, so I was able to find pactl instead. Here’s how I got it (improvement suggestions welcome):

A tip to recover blank screens with EXWM

Intro Sometimes in EXWM when I switch machines to and plug in my dock to an already running system, one or two of my external monitors stay black1. Sometimes this also occurs when my smart-dock2 changes power levels to the dock. It has enough throughput to utilize my whole 100w power inlet, but its “smarts” mean that when I connect my USBC phone, for instance, the amount of power going out changes dramatically and the shift can “lose” my two HDMI monitors until I do the trick below.

Fail-fast Transients like Hydra

Problem: exwm choking on Transients with Unbound suffix I have been gradually experimenting with replacing my hydras with Transients1, partly as a proof of concept. I have a show-stopping issue2 when I sometimes end up invoking the Transients from an EXWM window, however. The Transient pops up, but no key I press is then sent to the Transient and I end up trapped in a loop: Transient is expecting a key, which needs to be passed by EXWM, but EXWM can’t pass the right keys because Transient is intercepting them3.