exwm-modeline icon indicating copy to clipboard operation
exwm-modeline copied to clipboard

A modeline segment for EXWM

trafficstars

#+TITLE: exwm-modeline

[[https://melpa.org/#/exwm-modeline][file:https://melpa.org/packages/exwm-modeline-badge.svg]]

A modeline segment to display exwm workspaces.

Here's how it looks near the list of [[https://github.com/nex3/perspective-el][perspectives]] (the segment of the current package is to the left): [[./img/screenshot.png]]

  • workspaces 0 and 5 do not have any X windows
  • workspace 1 is the current workspace
  • workspace 2 has at least one X window.

Features:

  • Supports =exwm-randr= to display only workspaces related to the current monitor.
  • Numbers are clickable.
  • Installation The package is available on MELPA. Install it however you usually install packages, I use [[https://github.com/jwiegley/use-package][use-package]] and [[https://github.com/raxod502/straight.el][straight.el]]:

#+begin_src emacs-lisp (use-package exwm-modeline :straight t :after (exwm)) #+end_src

Then put a call to =exwm-modeline-mode= somewhere after the moment when EXWM has been initialized, for instance: #+begin_src emacs-lisp (add-hook 'exwm-init-hook #'exwm-modeline-mode) #+end_src

  • Customization Set =exwm-modeline-randr= to nil to turn off filtering of workspaces by monitor.

Set =exwm-modeline-short= to =t= display only the current workspace in the modeline.

Set =exwm-modeline-display-urgent= to nil to turn off displaying whether a workspace has an urgent window. This will significantly decrease the number of modeline updates, which may help with performance issues.

  • Credits [[https://github.com/nex3/perspective-el][perspective.el]] by [[https://github.com/nex3][@nex3]] was extremely instructive on how to make a modeline segment individual to a particular frame and avoid recalculating it too often.

[[https://github.com/elken/doom-modeline-exwm][doom-modeline-exwm]] by [[https://github.com/elken][@elken]] also was a source of inspiration.