about summary refs log tree commit diff
path: root/exwm-systemtray.el
diff options
context:
space:
mode:
authorChris Feng <chris.w.feng@gmail.com>2016-07-14T14·08+0800
committerChris Feng <chris.w.feng@gmail.com>2016-07-14T14·08+0800
commit39dc328157a970742aa40d3d9169376d2208fce3 (patch)
tree9604b941a55dc13328afc72f02859bb004b37ab8 /exwm-systemtray.el
parent6c8255bf3978a4df3d76ffd6f7d6bbdbba8bba19 (diff)
Fix various stability issues
* exwm-input.el (exwm-input--on-KeyPress-line-mode)
(exwm-input--on-KeyPress-char-mode): Append events at the tail.

* exwm-manage.el (exwm-manage--unmanage-window): Remove the
_NET_WM_DESKTOP property when an X window is withdrawn.

* exwm-systemtray.el (exwm-systemtray--init):
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs):
Issue warning rather than error when there's an existing tray running.

* exwm.el (exwm--on-ClientMessage): The buffer window can be on a
floating frame.
Diffstat (limited to 'exwm-systemtray.el')
-rw-r--r--exwm-systemtray.el6
1 files changed, 4 insertions, 2 deletions
diff --git a/exwm-systemtray.el b/exwm-systemtray.el
index d1783debdb15..db0e0455d2dd 100644
--- a/exwm-systemtray.el
+++ b/exwm-systemtray.el
@@ -296,7 +296,7 @@ You shall use the default value if using auto-hide minibuffer.")
 (defvar xcb:Atom:_NET_SYSTEM_TRAY_S0)
 (defvar exwm-workspace--minibuffer)
 
-(defun exwm-systemtray--init ()
+(cl-defun exwm-systemtray--init ()
   "Initialize system tray module."
   (cl-assert (not exwm-systemtray--connection))
   (cl-assert (not exwm-systemtray--list))
@@ -319,7 +319,9 @@ You shall use the default value if using auto-hide minibuffer.")
           (make-instance 'xcb:GetSelectionOwner
                          :selection xcb:Atom:_NET_SYSTEM_TRAY_S0))
     (when (/= owner xcb:Window:None)
-      (error "[EXWM] Other system tray detected")))
+      (xcb:disconnect exwm-systemtray--connection)
+      (warn "[EXWM] Other system tray detected")
+      (cl-return-from exwm-systemtray--init)))
   (let ((id (xcb:generate-id exwm-systemtray--connection)))
     (setq exwm-systemtray--selection-owner-window id)
     (xcb:+request exwm-systemtray--connection