mirror of
https://github.com/ch11ng/exwm.git
synced 2024-11-23 19:47:58 +01:00
Integrate tab-line
This commit is contained in:
parent
b62d5e79b0
commit
02ffa3359c
4 changed files with 79 additions and 0 deletions
|
@ -222,6 +222,7 @@ Return a three element list with the respective results."
|
||||||
(defvar-local exwm--frame nil) ;workspace frame
|
(defvar-local exwm--frame nil) ;workspace frame
|
||||||
(defvar-local exwm--floating-frame nil) ;floating frame
|
(defvar-local exwm--floating-frame nil) ;floating frame
|
||||||
(defvar-local exwm--mode-line-format nil) ;save mode-line-format
|
(defvar-local exwm--mode-line-format nil) ;save mode-line-format
|
||||||
|
(defvar-local exwm--tab-line-format nil) ;save tab-line-format
|
||||||
(defvar-local exwm--floating-frame-position nil) ;set when hidden.
|
(defvar-local exwm--floating-frame-position nil) ;set when hidden.
|
||||||
(defvar-local exwm--fixed-size nil) ;fixed size
|
(defvar-local exwm--fixed-size nil) ;fixed size
|
||||||
(defvar-local exwm--selected-input-mode 'line-mode
|
(defvar-local exwm--selected-input-mode 'line-mode
|
||||||
|
|
|
@ -271,6 +271,8 @@ context of the corresponding buffer."
|
||||||
'floating-mode-line))
|
'floating-mode-line))
|
||||||
(floating-header-line (plist-get exwm--configurations
|
(floating-header-line (plist-get exwm--configurations
|
||||||
'floating-header-line))
|
'floating-header-line))
|
||||||
|
(floating-tab-line (plist-get exwm--configurations
|
||||||
|
'floating-tab-line))
|
||||||
(border-pixel (exwm--color->pixel exwm-floating-border-color)))
|
(border-pixel (exwm--color->pixel exwm-floating-border-color)))
|
||||||
(if floating-mode-line
|
(if floating-mode-line
|
||||||
(setq exwm--mode-line-format (or exwm--mode-line-format
|
(setq exwm--mode-line-format (or exwm--mode-line-format
|
||||||
|
@ -296,6 +298,22 @@ context of the corresponding buffer."
|
||||||
(setq frame-height (- frame-height (window-header-line-height
|
(setq frame-height (- frame-height (window-header-line-height
|
||||||
(frame-root-window frame)))
|
(frame-root-window frame)))
|
||||||
header-line-format nil)))
|
header-line-format nil)))
|
||||||
|
|
||||||
|
(if floating-tab-line
|
||||||
|
(setq exwm--tab-line-format (or exwm--tab-line-format
|
||||||
|
tab-line-format)
|
||||||
|
tab-line-format floating-tab-line)
|
||||||
|
(if (and (not (plist-member exwm--configurations 'floating-tab-line))
|
||||||
|
exwm--mwm-hints-decorations)
|
||||||
|
(when exwm--tab-line-format
|
||||||
|
(setq tab-line-format exwm--tab-line-format))
|
||||||
|
;; The mode-line need to be hidden in floating mode.
|
||||||
|
(setq frame-height (- frame-height (window-tab-line-height
|
||||||
|
(frame-root-window frame)))
|
||||||
|
exwm--tab-line-format (or exwm--tab-line-format
|
||||||
|
tab-line-format)
|
||||||
|
tab-line-format nil)))
|
||||||
|
|
||||||
(set-frame-size frame frame-width frame-height t)
|
(set-frame-size frame frame-width frame-height t)
|
||||||
;; Create the frame container as the parent of the frame.
|
;; Create the frame container as the parent of the frame.
|
||||||
(xcb:+request exwm--connection
|
(xcb:+request exwm--connection
|
||||||
|
@ -438,6 +456,13 @@ context of the corresponding buffer."
|
||||||
mode-line-format)
|
mode-line-format)
|
||||||
mode-line-format (plist-get exwm--configurations
|
mode-line-format (plist-get exwm--configurations
|
||||||
'tiling-mode-line)))
|
'tiling-mode-line)))
|
||||||
|
(if (not (plist-member exwm--configurations 'tiling-tab-line))
|
||||||
|
(when exwm--tab-line-format
|
||||||
|
(setq tab-line-format exwm--tab-line-format))
|
||||||
|
(setq exwm--tab-line-format (or exwm--tab-line-format
|
||||||
|
tab-line-format)
|
||||||
|
tab-line-format (plist-get exwm--configurations
|
||||||
|
'tiling-tab-line)))
|
||||||
(if (not (plist-member exwm--configurations 'tiling-header-line))
|
(if (not (plist-member exwm--configurations 'tiling-header-line))
|
||||||
(setq header-line-format nil)
|
(setq header-line-format nil)
|
||||||
(setq header-line-format (plist-get exwm--configurations
|
(setq header-line-format (plist-get exwm--configurations
|
||||||
|
|
|
@ -114,6 +114,8 @@
|
||||||
(height (- (pop edges) y))
|
(height (- (pop edges) y))
|
||||||
frame-x frame-y frame-width frame-height)
|
frame-x frame-y frame-width frame-height)
|
||||||
(with-current-buffer (exwm--id->buffer id)
|
(with-current-buffer (exwm--id->buffer id)
|
||||||
|
(when tab-line-format
|
||||||
|
(setq y (+ y (window-tab-line-height window))))
|
||||||
(when exwm--floating-frame
|
(when exwm--floating-frame
|
||||||
(setq frame-width (frame-pixel-width exwm--floating-frame)
|
(setq frame-width (frame-pixel-width exwm--floating-frame)
|
||||||
frame-height (+ (frame-pixel-height exwm--floating-frame)
|
frame-height (+ (frame-pixel-height exwm--floating-frame)
|
||||||
|
@ -590,6 +592,52 @@ See also `exwm-layout-enlarge-window'."
|
||||||
(exwm-layout-hide-mode-line)
|
(exwm-layout-hide-mode-line)
|
||||||
(exwm-layout-show-mode-line))))
|
(exwm-layout-show-mode-line))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun exwm-layout-hide-tab-line ()
|
||||||
|
"Hide tab-line."
|
||||||
|
(interactive)
|
||||||
|
(exwm--log)
|
||||||
|
(when (and (derived-mode-p 'exwm-mode) tab-line-format)
|
||||||
|
(let (tab-line-height)
|
||||||
|
(when exwm--floating-frame
|
||||||
|
(setq tab-line-height (window-tab-line-height
|
||||||
|
(frame-root-window exwm--floating-frame))))
|
||||||
|
(setq exwm--tab-line-format tab-line-format
|
||||||
|
tab-line-format nil)
|
||||||
|
(if (not exwm--floating-frame)
|
||||||
|
(exwm-layout--show exwm--id)
|
||||||
|
(set-frame-height exwm--floating-frame
|
||||||
|
(- (frame-pixel-height exwm--floating-frame)
|
||||||
|
tab-line-height)
|
||||||
|
nil t)))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun exwm-layout-show-tab-line ()
|
||||||
|
"Show tab-line."
|
||||||
|
(interactive)
|
||||||
|
(exwm--log)
|
||||||
|
(when (and (derived-mode-p 'exwm-mode) (not tab-line-format))
|
||||||
|
(setq tab-line-format exwm--tab-line-format
|
||||||
|
exwm--tab-line-format nil)
|
||||||
|
(if (not exwm--floating-frame)
|
||||||
|
(exwm-layout--show exwm--id)
|
||||||
|
(set-frame-height exwm--floating-frame
|
||||||
|
(+ (frame-pixel-height exwm--floating-frame)
|
||||||
|
(window-tab-line-height (frame-root-window
|
||||||
|
exwm--floating-frame)))
|
||||||
|
nil t)
|
||||||
|
(call-interactively #'exwm-input-grab-keyboard))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun exwm-layout-toggle-tab-line ()
|
||||||
|
"Toggle the display of tab-line."
|
||||||
|
(interactive)
|
||||||
|
(exwm--log)
|
||||||
|
(when (derived-mode-p 'exwm-mode)
|
||||||
|
(if tab-line-format
|
||||||
|
(exwm-layout-hide-tab-line)
|
||||||
|
(exwm-layout-show-tab-line))))
|
||||||
|
|
||||||
(defun exwm-layout--init ()
|
(defun exwm-layout--init ()
|
||||||
"Initialize layout module."
|
"Initialize layout module."
|
||||||
;; Auto refresh layout
|
;; Auto refresh layout
|
||||||
|
|
|
@ -60,6 +60,8 @@ possible choices:
|
||||||
* fullscreen: Force full screen (non-nil) on startup.
|
* fullscreen: Force full screen (non-nil) on startup.
|
||||||
* floating-mode-line: `mode-line-format' used when floating.
|
* floating-mode-line: `mode-line-format' used when floating.
|
||||||
* tiling-mode-line: `mode-line-format' used when tiling.
|
* tiling-mode-line: `mode-line-format' used when tiling.
|
||||||
|
* floating-tab-line: `tab-line-format' used when floating.
|
||||||
|
* tiling-tab-line: `tab-line-format' used when tiling.
|
||||||
* floating-header-line: `header-line-format' used when floating.
|
* floating-header-line: `header-line-format' used when floating.
|
||||||
* tiling-header-line: `header-line-format' used when tiling.
|
* tiling-header-line: `header-line-format' used when tiling.
|
||||||
* char-mode: Force char-mode (non-nil) on startup.
|
* char-mode: Force char-mode (non-nil) on startup.
|
||||||
|
@ -87,6 +89,9 @@ want to match against EXWM internal variables such as `exwm-title',
|
||||||
((const :tag "Floating mode-line" floating-mode-line)
|
((const :tag "Floating mode-line" floating-mode-line)
|
||||||
sexp)
|
sexp)
|
||||||
((const :tag "Tiling mode-line" tiling-mode-line) sexp)
|
((const :tag "Tiling mode-line" tiling-mode-line) sexp)
|
||||||
|
((const :tag "Floating tab-line" floating-tab-line)
|
||||||
|
sexp)
|
||||||
|
((const :tag "Tiling tab-line" tiling-tab-line) sexp)
|
||||||
((const :tag "Floating header-line"
|
((const :tag "Floating header-line"
|
||||||
floating-header-line)
|
floating-header-line)
|
||||||
sexp)
|
sexp)
|
||||||
|
|
Loading…
Reference in a new issue