I don't use this but here it is for the internet to learn about.
#+ARROYO_EMACS_MODULE: consult-exwm-buffer #+ARROYO_MODULE_WANTS: cce/exwm.org #+ARROYO_MODULE_WANTS: cce/selectrum_etc.org
This lets me select windows in EXWM using Consult ; hitting, uhmm, C-x b e <SPC> will show me all the EXWM windows and C-x b E <SPC> will show me windows in the current workspace.
emacs-lisp source: :tangle ~/org/cce/consult-exwm-buffer.el(defun consult-exwm--state () (lexical-let ((preview (consult--buffer-preview))) (lambda (action cand) (when cand (funcall preview action (get-buffer cand)) (when (and cand (eq action 'return)) (consult--buffer-action (get-buffer cand))))))) (defvar exwm-buffer-source-this-workspace `(:name "EXWM Windows (in this workspace)" :hidden nil :narrow ?E :category exwm-window :annotate ,(lambda (cand) (with-current-buffer cand exwm-class-name)) :state ,#'consult-exwm--state :items ,(lambda () (consult--buffer-query :sort 'visibility :filter t :as #'buffer-name :predicate (lambda (buf) (with-current-buffer buf (and (eq major-mode 'exwm-mode) (eq exwm-workspace--current exwm--frame)))))))) (defvar exwm-buffer-source `(:name "EXWM Windows" :hidden nil :narrow ?e :category exwm-window :annotate ,(lambda (cand) (with-current-buffer cand exwm-class-name)) :state ,#'consult-exwm--state :items ,(lambda () (consult--buffer-query :sort 'visibility :filter t :as #'buffer-name :predicate (lambda (buf) (with-current-buffer buf (eq major-mode 'exwm-mode))))))) (with-eval-after-load 'consult (add-to-list 'consult-buffer-sources 'exwm-buffer-source t) (add-to-list 'consult-buffer-sources 'exwm-buffer-source-this-workspace t))