branch: externals/exwm commit 06e7d6af5afc655d7d9b142a266b0b850b6c5f1a Author: Daniel Mendler <m...@daniel-mendler.de> Commit: Daniel Mendler <m...@daniel-mendler.de>
exwm-core.el: Improve exwm-mode-menu - Use submenus - Enable "Switch to workspace" only if there is more than one workspace --- exwm-core.el | 82 ++++++++++++++++++++++++++---------------------------------- 1 file changed, 36 insertions(+), 46 deletions(-) diff --git a/exwm-core.el b/exwm-core.el index ba93014cd3..d80f096f90 100644 --- a/exwm-core.el +++ b/exwm-core.el @@ -322,30 +322,22 @@ One of `line-mode' or `char-mode'.") (easy-menu-define exwm-mode-menu exwm-mode-map "Menu for `exwm-mode'." `("EXWM" - "---" - "*General*" - "---" - ["Toggle floating" exwm-floating-toggle-floating] - ["Toggle fullscreen mode" exwm-layout-toggle-fullscreen] - ["Hide window" exwm-floating-hide exwm--floating-frame] - ["Close window" (kill-buffer (current-buffer))] - - "---" - "*Resizing*" - "---" - ["Toggle mode-line" exwm-layout-toggle-mode-line] - ["Enlarge window vertically" exwm-layout-enlarge-window] - ["Enlarge window horizontally" exwm-layout-enlarge-window-horizontally] - ["Shrink window vertically" exwm-layout-shrink-window] - ["Shrink window horizontally" exwm-layout-shrink-window-horizontally] - - "---" - "*Keyboard*" - "---" - ["Toggle keyboard mode" exwm-input-toggle-keyboard] - ["Send key" exwm-input-send-next-key (eq exwm--input-mode 'line-mode)] + ("General" + ["Toggle floating" exwm-floating-toggle-floating] + ["Toggle fullscreen mode" exwm-layout-toggle-fullscreen] + ["Hide window" exwm-floating-hide exwm--floating-frame] + ["Close window" (kill-buffer (current-buffer))]) + ("Resizing" + ["Toggle mode-line" exwm-layout-toggle-mode-line] + ["Enlarge window vertically" exwm-layout-enlarge-window] + ["Enlarge window horizontally" exwm-layout-enlarge-window-horizontally] + ["Shrink window vertically" exwm-layout-shrink-window] + ["Shrink window horizontally" exwm-layout-shrink-window-horizontally]) + ("Keyboard" + ["Toggle keyboard mode" exwm-input-toggle-keyboard] + ["Send key" exwm-input-send-next-key (eq exwm--input-mode 'line-mode)] ;; This is merely a reference. - ("Send simulation key" :filter + ("Send simulation key" :filter ,(lambda (&rest _args) (let (result) (maphash @@ -361,29 +353,27 @@ One of `line-mode' or `char-mode'.") exwm-input--simulation-keys) result))) - ["Define global binding" exwm-input-set-key] - - "---" - "*Workspace*" - "---" - ["Add workspace" exwm-workspace-add] - ["Delete current workspace" exwm-workspace-delete] - ["Move workspace to" exwm-workspace-move] - ["Swap workspaces" exwm-workspace-swap] - ["Move X window to" exwm-workspace-move-window] - ["Move X window from" exwm-workspace-switch-to-buffer] - ["Toggle minibuffer" exwm-workspace-toggle-minibuffer] - ["Switch workspace" exwm-workspace-switch] - ;; Place this entry at bottom to avoid selecting others by accident. - ("Switch to" :filter - ,(lambda (&rest _args) - (mapcar (lambda (i) - `[,(format "Workspace %d" i) - ,(lambda () - (interactive) - (exwm-workspace-switch i)) - (/= ,i exwm-workspace-current-index)]) - (number-sequence 0 (1- (length exwm-workspace--list)))))))) + ["Define global binding" exwm-input-set-key]) + + ("Workspace" + ["Add workspace" exwm-workspace-add] + ["Delete current workspace" exwm-workspace-delete] + ["Move workspace to" exwm-workspace-move] + ["Swap workspaces" exwm-workspace-swap] + ["Move X window to" exwm-workspace-move-window] + ["Move X window from" exwm-workspace-switch-to-buffer] + ["Toggle minibuffer" exwm-workspace-toggle-minibuffer] + ["Switch workspace" exwm-workspace-switch] + ;; Place this entry at bottom to avoid selecting others by accident. + ("Switch to" :active (cdr exwm-workspace--list) :filter + ,(lambda (&rest _args) + (mapcar (lambda (i) + `[,(format "Workspace %d" i) + ,(lambda () + (interactive) + (exwm-workspace-switch i)) + (/= ,i exwm-workspace-current-index)]) + (number-sequence 0 (1- (length exwm-workspace--list))))))))) (define-derived-mode exwm-mode nil "EXWM" "Major mode for managing X windows.