diff --git a/third_party/exwm/exwm-cm.el b/third_party/exwm/exwm-cm.el index 922847785..8a4501003 100644 --- a/third_party/exwm/exwm-cm.el +++ b/third_party/exwm/exwm-cm.el @@ -1,6 +1,6 @@ ;;; exwm-cm.el --- Compositing Manager for EXWM -*- lexical-binding: t -*- -;; Copyright (C) 2016-2020 Free Software Foundation, Inc. +;; Copyright (C) 2016-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-config.el b/third_party/exwm/exwm-config.el index bb8258a71..9609f4cf3 100644 --- a/third_party/exwm/exwm-config.el +++ b/third_party/exwm/exwm-config.el @@ -1,6 +1,6 @@ ;;; exwm-config.el --- Predefined configurations -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-core.el b/third_party/exwm/exwm-core.el index 76454894a..5356ef9b9 100644 --- a/third_party/exwm/exwm-core.el +++ b/third_party/exwm/exwm-core.el @@ -1,6 +1,6 @@ ;;; exwm-core.el --- Core definitions -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-floating.el b/third_party/exwm/exwm-floating.el index d1882cf74..a9f9315b7 100644 --- a/third_party/exwm/exwm-floating.el +++ b/third_party/exwm/exwm-floating.el @@ -1,6 +1,6 @@ ;;; exwm-floating.el --- Floating Module for EXWM -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-input.el b/third_party/exwm/exwm-input.el index 6506597cf..50676217f 100644 --- a/third_party/exwm/exwm-input.el +++ b/third_party/exwm/exwm-input.el @@ -1,6 +1,6 @@ ;;; exwm-input.el --- Input Module for EXWM -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-layout.el b/third_party/exwm/exwm-layout.el index 79d0c95bc..9173a1c04 100644 --- a/third_party/exwm/exwm-layout.el +++ b/third_party/exwm/exwm-layout.el @@ -1,6 +1,6 @@ ;;; exwm-layout.el --- Layout Module for EXWM -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng @@ -219,8 +219,11 @@ (exwm-layout--fullscreen-p)) (cl-return-from exwm-layout-unset-fullscreen)) (with-current-buffer (if id (exwm--id->buffer id) (window-buffer)) + ;; `exwm-layout--show' relies on `exwm--ewmh-state' to decide whether to + ;; fullscreen the window. (setq exwm--ewmh-state (delq xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)) + (exwm-layout--set-ewmh-state exwm--id) (if exwm--floating-frame (exwm-layout--show exwm--id (frame-root-window exwm--floating-frame)) (xcb:+request exwm--connection @@ -233,9 +236,6 @@ (let ((window (get-buffer-window nil t))) (when window (exwm-layout--show exwm--id window)))) - (setq exwm--ewmh-state - (delq xcb:Atom:_NET_WM_STATE_FULLSCREEN exwm--ewmh-state)) - (exwm-layout--set-ewmh-state exwm--id) (xcb:flush exwm--connection) (set-window-dedicated-p (get-buffer-window) nil) (when (eq 'line-mode exwm--selected-input-mode) diff --git a/third_party/exwm/exwm-manage.el b/third_party/exwm/exwm-manage.el index 0664c09b7..e940257fc 100644 --- a/third_party/exwm/exwm-manage.el +++ b/third_party/exwm/exwm-manage.el @@ -1,7 +1,7 @@ ;;; exwm-manage.el --- Window Management Module for -*- lexical-binding: t -*- ;;; EXWM -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-randr.el b/third_party/exwm/exwm-randr.el index 7acceb132..68bfdd70e 100644 --- a/third_party/exwm/exwm-randr.el +++ b/third_party/exwm/exwm-randr.el @@ -1,6 +1,6 @@ ;;; exwm-randr.el --- RandR Module for EXWM -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-systemtray.el b/third_party/exwm/exwm-systemtray.el index 20dc5226c..43b3e1eae 100644 --- a/third_party/exwm/exwm-systemtray.el +++ b/third_party/exwm/exwm-systemtray.el @@ -1,7 +1,7 @@ ;;; exwm-systemtray.el --- System Tray Module for -*- lexical-binding: t -*- ;;; EXWM -;; Copyright (C) 2016-2020 Free Software Foundation, Inc. +;; Copyright (C) 2016-2021 Free Software Foundation, Inc. ;; Author: Chris Feng diff --git a/third_party/exwm/exwm-workspace.el b/third_party/exwm/exwm-workspace.el index c1de5da9a..c51334711 100644 --- a/third_party/exwm/exwm-workspace.el +++ b/third_party/exwm/exwm-workspace.el @@ -1,6 +1,6 @@ ;;; exwm-workspace.el --- Workspace Module for EXWM -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 1015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng @@ -165,18 +165,20 @@ NIL if FRAME is not a workspace" "Return t if FRAME is a workspace." (memq frame exwm-workspace--list)) -(defvar exwm--client-p-hash-table - (make-hash-table :test 'eq :weakness 'key)) +(defvar exwm-workspace--client-p-hash-table + (make-hash-table :test 'eq :weakness 'key) + "Used to cache the results of calling ‘exwm-workspace--client-p’.") (defsubst exwm-workspace--client-p (&optional frame) "Return non-nil if FRAME is an emacsclient frame." (let* ((frame (or frame (selected-frame))) - (cached-value (gethash frame exwm--client-p-hash-table 'absent))) + (cached-value + (gethash frame exwm-workspace--client-p-hash-table 'absent))) (if (eq cached-value 'absent) (puthash frame (or (frame-parameter frame 'client) (not (display-graphic-p frame))) - exwm--client-p-hash-table) + exwm-workspace--client-p-hash-table) cached-value))) (defvar exwm-workspace--switch-map nil @@ -1467,7 +1469,8 @@ the next workspace." ;; care of converting a workspace into a regular unmanaged frame. (let ((exwm-workspace--create-silently t)) (make-frame))) - (exwm-workspace--remove-frame-as-workspace frame)))) + (exwm-workspace--remove-frame-as-workspace frame) + (remhash frame exwm-workspace--client-p-hash-table)))) (defun exwm-workspace--on-after-make-frame (frame) "Hook run upon `make-frame' that configures FRAME as a workspace." diff --git a/third_party/exwm/exwm-xim.el b/third_party/exwm/exwm-xim.el index acf718e27..9589648d2 100644 --- a/third_party/exwm/exwm-xim.el +++ b/third_party/exwm/exwm-xim.el @@ -1,6 +1,6 @@ ;;; exwm-xim.el --- XIM Module for EXWM -*- lexical-binding: t -*- -;; Copyright (C) 2019-2020 Free Software Foundation, Inc. +;; Copyright (C) 2019-2021 Free Software Foundation, Inc. ;; Author: Chris Feng @@ -161,6 +161,10 @@ C,no" (defvar exwm-xim--_XIM_PROTOCOL nil) (defvar exwm-xim--_XIM_XCONNECT nil) +(defvar exwm-xim-buffer-p nil + "Whether current buffer is used by exwm-xim.") +(make-variable-buffer-local 'exwm-xim-buffer-p) + (defun exwm-xim--on-SelectionRequest (data _synthetic) "Handle SelectionRequest events on IMS window. @@ -585,6 +589,9 @@ The actual XIM request is in client message data or a property." (exwm-input--grab-keyboard)) (unwind-protect (with-temp-buffer + ;; This variable is used to test whether exwm-xim is enabled. + ;; Used by e.g. pyim-probe. + (setq-local exwm-xim-buffer-p t) ;; Always show key strokes. (let ((input-method-use-echo-area t) (exwm-input-line-mode-passthrough t)) diff --git a/third_party/exwm/exwm.el b/third_party/exwm/exwm.el index fc96ac750..b025f6b49 100644 --- a/third_party/exwm/exwm.el +++ b/third_party/exwm/exwm.el @@ -1,10 +1,10 @@ ;;; exwm.el --- Emacs X Window Manager -*- lexical-binding: t -*- -;; Copyright (C) 2015-2020 Free Software Foundation, Inc. +;; Copyright (C) 2015-2021 Free Software Foundation, Inc. ;; Author: Chris Feng -;; Maintainer: Chris Feng -;; Version: 0.24 +;; Maintainer: Adrián Medraño Calvo +;; Version: 0.26 ;; Package-Requires: ((xelb "0.18")) ;; Keywords: unix ;; URL: https://github.com/ch11ng/exwm