From b4b929a55b95cf569296aa8f2b0342fd90aa1586 Mon Sep 17 00:00:00 2001 From: William Carroll Date: Sat, 3 Oct 2020 14:49:33 +0100 Subject: [PATCH] Define window-manager-swap-workspaces This is a wrapper around the existing `exwm-workspace-swap` except it's aware of my `window-manager-workspace` struct. --- emacs/.emacs.d/wpc/window-manager.el | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/emacs/.emacs.d/wpc/window-manager.el b/emacs/.emacs.d/wpc/window-manager.el index cda66a296..5a2ae0e18 100644 --- a/emacs/.emacs.d/wpc/window-manager.el +++ b/emacs/.emacs.d/wpc/window-manager.el @@ -375,6 +375,22 @@ predicate." cycle-current window-manager--named-workspace-label)) +(defun window-manager-swap-workspaces () + "Prompt the user to switch the current workspace with another." + (interactive) + (let* ((selection (->> window-manager--named-workspaces + (-map #'window-manager--named-workspace-label) + (-reject + (lambda (x) + (s-equals? x (window-manager-current-workspace)))) + (completing-read + (format "Swap current workspace (i.e. \"%s\") with: " + (window-manager-current-workspace))))) + (i (-find-index (lambda (x) + (s-equals? selection (window-manager--named-workspace-label x))) + window-manager--named-workspaces))) + (exwm-workspace-swap exwm-workspace--current (elt exwm-workspace--list i)))) + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Startup Applications in `window-manager--named-workspaces' ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;