about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--exwm-core.el1
-rw-r--r--exwm-floating.el16
-rw-r--r--exwm-workspace.el2
3 files changed, 18 insertions, 1 deletions
diff --git a/exwm-core.el b/exwm-core.el
index 5377c6766f96..e202d4ee47b7 100644
--- a/exwm-core.el
+++ b/exwm-core.el
@@ -121,6 +121,7 @@
 (defvar exwm-mode-map
   (let ((map (make-sparse-keymap)))
     (define-key map "\C-c\C-f" #'exwm-layout-set-fullscreen)
+    (define-key map "\C-c\C-h" #'exwm-floating-hide)
     (define-key map "\C-c\C-k" #'exwm-input-release-keyboard)
     (define-key map "\C-c\C-m" #'exwm-workspace-move-window)
     (define-key map "\C-c\C-q" #'exwm-input-send-next-key)
diff --git a/exwm-floating.el b/exwm-floating.el
index 457705322ccd..ba162f67e12b 100644
--- a/exwm-floating.el
+++ b/exwm-floating.el
@@ -284,6 +284,22 @@
         (exwm-floating--unset-floating exwm--id)
       (exwm-floating--set-floating exwm--id))))
 
+;;;###autoload
+(defun exwm-floating-hide ()
+  "Hide the current floating X window (which would show again when selected)."
+  (interactive)
+  (when (and (eq major-mode 'exwm-mode)
+             exwm--floating-frame)
+    ;; Put this floating X window at bottom.
+    (xcb:+request exwm--connection
+        (make-instance 'xcb:ConfigureWindow
+                       :window exwm--container
+                       :value-mask xcb:ConfigWindow:StackMode
+                       :stack-mode xcb:StackMode:Below))
+    ;; FIXME: Should it be put into iconic state?
+    (xcb:flush exwm--connection)
+    (select-frame-set-input-focus exwm-workspace--current)))
+
 (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
diff --git a/exwm-workspace.el b/exwm-workspace.el
index 4af98fb0ad6f..80767d52d701 100644
--- a/exwm-workspace.el
+++ b/exwm-workspace.el
@@ -232,7 +232,7 @@ The optional FORCE option is for internal use only."
 (defvar exwm-floating-border-width)
 (defvar exwm-floating-border-color)
 
-(declare-function exwm-layout--show "exwm-layout.el" (id))
+(declare-function exwm-layout--show "exwm-layout.el" (id &optional window))
 (declare-function exwm-layout--hide "exwm-layout.el" (id))
 (declare-function exwm-layout--refresh "exwm-layout.el")