First off, I want to thank this community for all the help I have gotten both through explicitly asking questions and just through watching others questoins.

Main point:

I recently switched to EXWM because its awesome. I found some rough edges that I have been trying to smooth out and wanted to share a particularly simple one.

The EXWM wiki suggets merging framemove with windmove to move between workspaces on two different monitors. I found that framemove considers not just visible workspaces but also inactive (invisible) workspaces. Imagine the following setup

Monitor 1: assigned workspaces 0 and 1; currently showing workspace 1

Monitor 2: assigned workspaces 2; currently showing monitor 2. Focus is on workspace 2.

Trying to move across frames using framemove could actually cause focus to not just switch to monitor 1 but also monitor 1 to change from showing workspace 1 to workspace 0.

Turns out it was pretty simple to modify framemove to restrict to only considering currently active frames using the predicate function `exwm-workspace--active-p`.

In case anyone else runs into this issue take a look at my forked version of framemove: https://github.com/jsilve24/framemove.

Honestly, it seems rediculous that I forked this repo since my contribution is essentially nil. That said, I really wasn't sure a better way since the original library is on the emacswiki and also maintained by the emacsmirror github user.

That said, hope this helps someone else.

Cheers.

submitted by /u/JustinSilverman
[link] [comments]