Emacs X Window Manager
Find a file
Chris Feng 0680be104f Grab & Replay key events with XI2 and XTEST
; A change has been made in Xorg server 1.20 that replaying a key
; event with keyboard grabbed would generate extra focus change and
; enter/leave events.  This basically breaks line-mode for apps like
; Firefox.  This commit reimplements the grab & replay functionality
; with XI2 and XTEST.

* exwm-input.el (exwm-input--devices): New variable for caching slave
keyboards.
(exwm-input--update-devices): Update it and re-grab keys if necessary.
(exwm-input--on-Hierarchy): Event listener for the Hierarchy event
that would in turn call `exwm-input--update-devices' to update the
cache.

* exwm-input.el (exwm-input--on-KeyPress): Use XI2 KeyPress events.
(exwm-input--on-KeyRelease): Event listener for the KeyRelease events.
(exwm-input--grab-global-prefix-keys): Use XI2 and also select
KeyRelease events.
(exwm-input--on-KeyPress-line-mode): Use XI2 KeyPress events and
replay key events with XTEST.
(exwm-input--on-KeyPress-char-mode, exwm-input--grab-keyboard)
(exwm-input--release-keyboard): Use XI2 KeyPress events.

* exwm-input.el (exwm-input--init): Initialize the XI2 and XTEST
extensions; add listeners for XI2 KeyPress, KeyRelease and Hierarchy
events.
2018-06-18 22:33:38 +08:00
.elpaignore Code cleanups 2015-09-06 17:18:48 +08:00
.gitignore Minor fixes for packaging 2015-09-21 13:31:57 +08:00
exwm-cm.el Add customization settings 2018-02-19 00:04:27 +08:00
exwm-config.el Add Customize interface for simulation keys 2018-02-20 21:57:49 +08:00
exwm-core.el Fix a compatibility issue with Emacs 24 2018-03-23 23:57:18 +08:00
exwm-floating.el Fix regressions 2018-03-10 17:28:43 +08:00
exwm-input.el Grab & Replay key events with XI2 and XTEST 2018-06-18 22:33:38 +08:00
exwm-layout.el Provide a fallback value for X window geometry 2018-05-20 16:14:01 +08:00
exwm-manage.el Provide a fallback value for X window geometry 2018-05-20 16:14:01 +08:00
exwm-randr.el Fix wrong exwm-active frame parameters 2018-03-14 01:14:36 +08:00
exwm-systemtray.el Fix systemtray position when menu-bar / tool-bar is enabled 2018-05-27 23:29:36 +08:00
exwm-workspace.el Minor fixes 2018-03-09 01:06:39 +08:00
exwm.el Port to 32-bit Emacs on master branch 2018-04-15 14:53:01 -07:00
README.md Make X windows container-less 2018-02-18 01:04:04 +08:00
xinitrc Add customization settings 2018-02-19 00:04:27 +08:00

Emacs X Window Manager

EXWM (Emacs X Window Manager) is a full-featured tiling X window manager for Emacs built on top of XELB. It features:

  • Fully keyboard-driven operations
  • Hybrid layout modes (tiling & stacking)
  • Dynamic workspace support
  • ICCCM/EWMH compliance
  • (Optional) RandR (multi-monitor) support
  • (Optional) Built-in system tray

Please check out the screenshots to get an overview of what EXWM is capable of, and the user guide for a detailed explanation of its usage.

Note: If you install EXWM from source, it's recommended to install XELB also from source (otherwise install both from GNU ELPA).