mirror of
https://github.com/emacs-exwm/exwm.git
synced 2024-11-27 14:57:59 +01:00
Set background pixmap for system tray embedder
* exwm-systemtray.el (exwm-systemtray--init): Make embedder use the same depth and pixmap of the parent; the parent is always a Emacs frame.
This commit is contained in:
parent
dcec998bb4
commit
06c1b0485a
1 changed files with 27 additions and 16 deletions
|
@ -370,27 +370,38 @@ You shall use the default value if using auto-hide minibuffer.")
|
||||||
:data xcb:systemtray:ORIENTATION:HORZ)))
|
:data xcb:systemtray:ORIENTATION:HORZ)))
|
||||||
;; Create the embedder.
|
;; Create the embedder.
|
||||||
(let ((id (xcb:generate-id exwm-systemtray--connection))
|
(let ((id (xcb:generate-id exwm-systemtray--connection))
|
||||||
parent y)
|
frame parent depth y)
|
||||||
(setq exwm-systemtray--embedder id)
|
(setq exwm-systemtray--embedder id)
|
||||||
(xcb:+request exwm-systemtray--connection
|
|
||||||
(make-instance 'xcb:CreateWindow
|
|
||||||
:depth 0 :wid id :parent exwm--root
|
|
||||||
:x 0 :y 0 :width 1 :height exwm-systemtray-height
|
|
||||||
:border-width 0 :class xcb:WindowClass:CopyFromParent
|
|
||||||
:visual 0 :value-mask xcb:CW:EventMask
|
|
||||||
:event-mask xcb:EventMask:SubstructureNotify))
|
|
||||||
(if (exwm-workspace--minibuffer-own-frame-p)
|
(if (exwm-workspace--minibuffer-own-frame-p)
|
||||||
(setq parent (frame-parameter exwm-workspace--minibuffer
|
(setq frame exwm-workspace--minibuffer
|
||||||
'exwm-container)
|
y (if (>= (line-pixel-height) exwm-systemtray-height)
|
||||||
|
;; Bottom aligned.
|
||||||
|
(- (line-pixel-height) exwm-systemtray-height)
|
||||||
;; Vertically centered.
|
;; Vertically centered.
|
||||||
y (/ (- (line-pixel-height) exwm-systemtray-height) 2))
|
(/ (- (line-pixel-height) exwm-systemtray-height) 2)))
|
||||||
(setq parent (string-to-number (frame-parameter exwm-workspace--current
|
(setq frame exwm-workspace--current
|
||||||
'window-id))
|
|
||||||
;; Bottom aligned.
|
;; Bottom aligned.
|
||||||
y (- (exwm-workspace--current-height) exwm-systemtray-height)))
|
y (- (exwm-workspace--current-height) exwm-systemtray-height)))
|
||||||
|
(setq parent (string-to-number (frame-parameter frame 'window-id))
|
||||||
|
depth (slot-value (xcb:+request-unchecked+reply exwm--connection
|
||||||
|
(make-instance 'xcb:GetGeometry
|
||||||
|
:drawable parent))
|
||||||
|
'depth))
|
||||||
(xcb:+request exwm-systemtray--connection
|
(xcb:+request exwm-systemtray--connection
|
||||||
(make-instance 'xcb:ReparentWindow
|
(make-instance 'xcb:CreateWindow
|
||||||
:window id :parent parent :x 0 :y y))
|
:depth depth
|
||||||
|
:wid id
|
||||||
|
:parent parent
|
||||||
|
:x 0
|
||||||
|
:y y
|
||||||
|
:width 1
|
||||||
|
:height exwm-systemtray-height
|
||||||
|
:border-width 0
|
||||||
|
:class xcb:WindowClass:CopyFromParent
|
||||||
|
:visual 0
|
||||||
|
:value-mask (logior xcb:CW:BackPixmap xcb:CW:EventMask)
|
||||||
|
:background-pixmap xcb:BackPixmap:ParentRelative
|
||||||
|
:event-mask xcb:EventMask:SubstructureNotify))
|
||||||
;; Set _NET_WM_NAME.
|
;; Set _NET_WM_NAME.
|
||||||
(xcb:+request exwm-systemtray--connection
|
(xcb:+request exwm-systemtray--connection
|
||||||
(make-instance 'xcb:ewmh:set-_NET_WM_NAME
|
(make-instance 'xcb:ewmh:set-_NET_WM_NAME
|
||||||
|
|
Loading…
Reference in a new issue