From e2edf81271e1a7dd148aa7386b730ae2838c2860 Mon Sep 17 00:00:00 2001 From: Chris Feng Date: Sun, 7 Feb 2016 10:45:59 +0800 Subject: [PATCH] Add some useful key bindings * exwm-core.el (exwm--floating-mode-line-format, exwm--mode-line-format) (exwm-mode-map): * exwm-floating.el (exwm-floating-hide-mode-line) (exwm-floating-show-mode-line): * exwm-layout.el (exwm-layout-hide-mode-line, exwm-layout-show-mode-line) (exwm-layout-toggle-mode-line): Allow hide/show mode-line for all `exwm-mode' buffers with 'C-c M'. * exwm-config.el (exwm-config-default): Add simulation keys for 'C-d' and 'C-k'. --- exwm-config.el | 4 +++- exwm-core.el | 17 +++++++++-------- exwm-floating.el | 28 ++++------------------------ exwm-layout.el | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 49 insertions(+), 33 deletions(-) diff --git a/exwm-config.el b/exwm-config.el index 512abfc0d..db8c68f44 100644 --- a/exwm-config.el +++ b/exwm-config.el @@ -55,7 +55,9 @@ ([?\C-a] . home) ([?\C-e] . end) ([?\M-v] . prior) - ([?\C-v] . next))) + ([?\C-v] . next) + ([?\C-d] . delete) + ([?\C-k] . (S-end delete)))) ;; Enable EXWM (exwm-enable) ;; Configure Ido diff --git a/exwm-core.el b/exwm-core.el index 61633c977..9430b4354 100644 --- a/exwm-core.el +++ b/exwm-core.el @@ -79,14 +79,14 @@ "Event mask set on all managed windows.") ;; Internal variables -(defvar-local exwm--id nil) ;window ID -(defvar-local exwm--container nil) ;container -(defvar-local exwm--frame nil) ;workspace frame -(defvar-local exwm--floating-frame nil) ;floating frame -(defvar-local exwm--floating-mode-line-format nil) ;save mode-line-format -(defvar-local exwm--fullscreen nil) ;used in fullscreen -(defvar-local exwm--floating-frame-position nil) ;used in fullscreen -(defvar-local exwm--fixed-size nil) ;fixed size +(defvar-local exwm--id nil) ;window ID +(defvar-local exwm--container nil) ;container +(defvar-local exwm--frame nil) ;workspace frame +(defvar-local exwm--floating-frame nil) ;floating frame +(defvar-local exwm--mode-line-format nil) ;save mode-line-format +(defvar-local exwm--fullscreen nil) ;used in fullscreen +(defvar-local exwm--floating-frame-position nil) ;used in fullscreen +(defvar-local exwm--fixed-size nil) ;fixed size (defvar-local exwm--on-KeyPress ;KeyPress event handler #'exwm-input--on-KeyPress-line-mode) ;; Properties @@ -122,6 +122,7 @@ (define-key map "\C-cm" #'exwm-floating-toggle-floating) (define-key map "\C-cq" #'exwm-input-send-next-key) (define-key map "\C-cv" #'exwm-workspace-move-window) + (define-key map "\C-cM" #'exwm-layout-toggle-mode-line) map) "Keymap for `exwm-mode'.") diff --git a/exwm-floating.el b/exwm-floating.el index ff584c03e..34e9f947e 100644 --- a/exwm-floating.el +++ b/exwm-floating.el @@ -248,30 +248,10 @@ are provided. You should call `xcb:flush' and restore the value of (window-mode-line-height) (window-header-line-height))))) -(defun exwm-floating-hide-mode-line () - "Hide mode-line of a floating frame." - (interactive) - (unless (eq major-mode 'exwm-mode) - (user-error "[EXWM] Please use this command with EXWM buffers")) - (when (and exwm--floating-frame mode-line-format) - (setq exwm--floating-mode-line-format mode-line-format - mode-line-format nil) - (exwm-floating--fit-frame-to-window) - (xcb:flush exwm--connection) - (setq window-size-fixed exwm--fixed-size))) - -(defun exwm-floating-show-mode-line () - "Show mode-line of a floating frame." - (interactive) - (unless (eq major-mode 'exwm-mode) - (user-error "[EXWM] Please use this command with EXWM buffers")) - (when (and exwm--floating-frame (not mode-line-format)) - (setq mode-line-format exwm--floating-mode-line-format - exwm--floating-mode-line-format nil) - (exwm-floating--fit-frame-to-window) - (exwm-input-grab-keyboard) ;mode-line-format may be outdated - (xcb:flush exwm--connection) - (setq window-size-fixed exwm--fixed-size))) +(define-obsolete-function-alias 'exwm-floating-hide-mode-line + 'exwm-layout-hide-mode-line "25.1" "Hide mode-line of a floating frame.") +(define-obsolete-function-alias 'exwm-floating-show-mode-line + 'exwm-layout-show-mode-line "25.1" "Show mode-line of a floating frame.") (defvar exwm-floating--moveresize-calculate nil "Calculate move/resize parameters [buffer event-mask x y width height].") diff --git a/exwm-layout.el b/exwm-layout.el index 871438f9f..df603f709 100644 --- a/exwm-layout.el +++ b/exwm-layout.el @@ -392,6 +392,39 @@ See also `exwm-layout-enlarge-window'." (interactive "p") (exwm-layout-enlarge-window (- delta) t)) +(defun exwm-layout-hide-mode-line () + "Hide mode-line." + (interactive) + (when (and (eq major-mode 'exwm-mode) mode-line-format) + (setq exwm--mode-line-format mode-line-format + mode-line-format nil) + (if (not exwm--floating-frame) + (exwm-layout--show exwm--id) + (exwm-floating--fit-frame-to-window) + (xcb:flush exwm--connection) + (setq window-size-fixed exwm--fixed-size)))) + +(defun exwm-layout-show-mode-line () + "Show mode-line." + (interactive) + (when (and (eq major-mode 'exwm-mode) (not mode-line-format)) + (setq mode-line-format exwm--mode-line-format + exwm--mode-line-format nil) + (if (not exwm--floating-frame) + (exwm-layout--show exwm--id) + (exwm-floating--fit-frame-to-window) + (exwm-input-grab-keyboard) + (xcb:flush exwm--connection) + (setq window-size-fixed exwm--fixed-size)))) + +(defun exwm-layout-toggle-mode-line () + "Toggle the display of mode-line." + (interactive) + (when (eq major-mode 'exwm-mode) + (if mode-line-format + (exwm-layout-hide-mode-line) + (exwm-layout-show-mode-line)))) + (defun exwm-layout--init () "Initialize layout module." ;; Auto refresh layout