[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] externals/exwm 07b9b2ccf8 2/7: Support setting system tray backgr
From: |
Adrián Medraño Calvo |
Subject: |
[elpa] externals/exwm 07b9b2ccf8 2/7: Support setting system tray background color to current workspace's |
Date: |
Thu, 10 Nov 2022 17:56:02 -0500 (EST) |
branch: externals/exwm
commit 07b9b2ccf83ec8c96098faa30810058ac3befa67
Author: Adrián Medraño Calvo <adrian@medranocalvo.com>
Commit: Adrián Medraño Calvo <adrian@medranocalvo.com>
Support setting system tray background color to current workspace's
* exwm-systemtray.el (exwm-systemtray-background-color): Add
support for using current workspace's background color as system
tray background color.
(exwm-systemtray--refresh-background-color): New function to set
the background color upon theme changes or workspace switches.
(exwm-systemtray--on-workspace-switch)
(exwm-systemtray--on-theme-change): Use it.
(exwm-systemtray--init): React to theme changes.
---
exwm-systemtray.el | 34 +++++++++++++++++++++++++++-------
1 file changed, 27 insertions(+), 7 deletions(-)
diff --git a/exwm-systemtray.el b/exwm-systemtray.el
index 776aced4c4..841b80f00d 100644
--- a/exwm-systemtray.el
+++ b/exwm-systemtray.el
@@ -75,7 +75,7 @@ You shall use the default value if using auto-hide
minibuffer."
(defcustom exwm-systemtray-background-color
(if (exwm-systemtray--transparency-supported-p)
- "black"
+ 'workspace-background
'transparent)
"Background color of systemtray.
This should be a color, the symbol `workspace-background' for the background
@@ -85,16 +85,17 @@ background.
Transparent background is not yet supported when Emacs uses 32-bit depth
visual, as reported by `x-display-planes'. The X resource \"Emacs.visualClass:
TrueColor-24\" can be used to force Emacs to use 24-bit depth."
- :type '(choice (const :tag "Transparent" 'transparent)
- (color))
+ :type '(choice (const :tag "Transparent" transparent)
+ (const :tag "Frame background" workspace-background)
+ (color :tag "Color"))
:initialize #'custom-initialize-default
:set (lambda (symbol value)
(when (and (eq value 'transparent)
(not (exwm-systemtray--transparency-supported-p)))
(display-warning 'exwm-systemtray
"Transparent background is not supported yet when \
-using 32-bit depth. Using black instead.")
- (setq value "black"))
+using 32-bit depth. Using `workspace-background' instead.")
+ (setq value 'workspace-background))
(set-default symbol value)
(when (and exwm-systemtray--connection
exwm-systemtray--embedder-window)
@@ -256,6 +257,12 @@ using 32-bit depth. Using black instead.")
:window exwm-systemtray--embedder-window))))
(xcb:flush exwm-systemtray--connection))
+(defun exwm-systemtray--refresh-background-color ()
+ "Refresh background color after theme change or workspace switch."
+ ;; Only `workspace-background' is dependent on current theme and workspace.
+ (when (eq 'workspace-background exwm-systemtray-background-color)
+ (exwm-systemtray--set-background-color)))
+
(defun exwm-systemtray--set-background-color ()
"Change the background color of the embedder.
The color is set according to `exwm-systemtray-background-color'.
@@ -268,8 +275,11 @@ window; unmap & map are necessary for the background color
to take effect."
((transparent nil) ; nil means transparent as well
(if (exwm-systemtray--transparency-supported-p)
nil
- (message "%s" "[EXWM] system tray does not support
transparent background; using black instead")
- "black"))
+ (message "%s" "[EXWM] system tray does not support \
+`transparent' background; using `workspace-background' instead")
+ (face-background 'default exwm-workspace--current)))
+ (workspace-background
+ (face-background 'default exwm-workspace--current))
(t exwm-systemtray-background-color)))
(background-pixel (exwm--color->pixel color)))
(xcb:+request exwm-systemtray--connection
@@ -437,8 +447,13 @@ indicate how to support actual transparency."
3)
exwm-workspace--frame-y-offset
exwm-systemtray-height))))
+ (exwm-systemtray--refresh-background-color)
(exwm-systemtray--refresh))
+(defun exwm-systemtray--on-theme-change ()
+ "Refresh system tray upon theme change."
+ (exwm-systemtray--refresh-background-color))
+
(defun exwm-systemtray--refresh-all ()
"Reposition/Refresh the system tray."
(exwm--log)
@@ -608,6 +623,9 @@ indicate how to support actual transparency."
(add-hook 'exwm-workspace-switch-hook #'exwm-systemtray--on-workspace-switch)
(add-hook 'exwm-workspace--update-workareas-hook
#'exwm-systemtray--refresh-all)
+ ;; Add hook to update background colors.
+ (add-hook 'enable-theme-functions #'exwm-systemtray--on-theme-change)
+ (add-hook 'disable-theme-functions #'exwm-systemtray--on-theme-change)
(add-hook 'menu-bar-mode-hook #'exwm-systemtray--refresh-all)
(add-hook 'tool-bar-mode-hook #'exwm-systemtray--refresh-all)
(when (boundp 'exwm-randr-refresh-hook)
@@ -642,6 +660,8 @@ indicate how to support actual transparency."
#'exwm-systemtray--on-workspace-switch)
(remove-hook 'exwm-workspace--update-workareas-hook
#'exwm-systemtray--refresh-all)
+ (remove-hook 'enable-theme-functions #'exwm-systemtray--on-theme-change)
+ (remove-hook 'disable-theme-functions #'exwm-systemtray--on-theme-change)
(remove-hook 'menu-bar-mode-hook #'exwm-systemtray--refresh-all)
(remove-hook 'tool-bar-mode-hook #'exwm-systemtray--refresh-all)
(when (boundp 'exwm-randr-refresh-hook)
- [elpa] externals/exwm updated (e8e4a66094 -> e9cc0962cc), Adrián Medraño Calvo, 2022/11/10
- [elpa] externals/exwm b8d621041a 1/7: Use default visual, depth and colormap in systray embedder window, Adrián Medraño Calvo, 2022/11/10
- [elpa] externals/exwm f93bfb21f7 3/7: * exwm-systemtray.el (exwm-systemtray--init): Set EWMH window type to dock., Adrián Medraño Calvo, 2022/11/10
- [elpa] externals/exwm 07b9b2ccf8 2/7: Support setting system tray background color to current workspace's,
Adrián Medraño Calvo <=
- [elpa] externals/exwm e95b9ebf1d 5/7: Refresh the tray icon background when updating the background color, Adrián Medraño Calvo, 2022/11/10
- [elpa] externals/exwm 3fb1ebe58c 6/7: Default exwm-systemtray color to `workspace-background', Adrián Medraño Calvo, 2022/11/10
- [elpa] externals/exwm e9cc0962cc 7/7: Bump version to 0.27, Adrián Medraño Calvo, 2022/11/10
- [elpa] externals/exwm b3766e52d6 4/7: * exwm-systemtray.el (exwm-systemtray--on-theme-change): Add missing parameter., Adrián Medraño Calvo, 2022/11/10