windows

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.

Love lost: when exwm falls short

I find myself going back to regular WMs (my favorite from the past being KDE) because certain tasks are just deeply punishing in EXWM. When I’m doing my regular daily work I can usually make EXWM work for me. But here are the facts I experience with/without emacs as my window manager. Life is worse without EXWM Winum. Looking at a screen and hitting the num to focus there; I miss it dearly and cringe when I need to reach for the mouse.

Saving Window configs in Emacs (in-session)

Sometimes I end up with complex window configs while working in emacs, as you see in the title image. Using Winner mode you can easily track linearly backward through your screens, “undo” style; but sometimes I have a set up–as when developing a system–that I want to return to frequently. It turns out you have Window Registers for this purpose, and they work well. window-configuration-to-register: C-x r w <key> This saves it for easy reloading with C-x r j <key> and you’re back where you want to be!

Balance and Equalize Windows in Emacs

The ability to split emacs windows is highly useful, whether you are using it to view related information in the same window or others. However, after the initial 50-50 split, splitting again will result in 50-25-25, 50-12.5-12.5-12.5-12.5, etc; this becomes unsightly quickly. The solution is the `balance-windows` command, bound by default to C-x++. This equalizes the sizes of all windows, without you needing to reach for the mouse to drag window boundaries.