about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2018-07-15 Shrink Emacs frames with X requestChris Feng1-11/+7
* exwm-manage.el (exwm-manage--on-ConfigureRequest): There's a problem in shrinking Emacs frames with `set-frame-width' and `set-frame-height'. Use `exwm--set-geometry' instead.
2018-07-15 Also send a WM_TAKE_FOCUS when setting focus with SetInputFocusChris Feng1-30/+21
* exwm-input.el (exwm-input--set-focus): Send an extra WM_TAKE_FOCUS event to workaround the key replay issue with Xorg 1.20 when keyboard is grabbed.
2018-07-15 Revert "Grab & Replay key events with XI2 and XTEST"Chris Feng1-222/+85
This reverts commit 0680be104f9394e39dd55b5c4e33b9b7e4e77926.
2018-06-18 Grab & Replay key events with XI2 and XTESTChris Feng1-85/+222
; 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-05-27 Fix systemtray position when menu-bar / tool-bar is enabledChris Feng1-6/+2
* exwm-systemtray.el (exwm-systemtray--on-workspace-switch) (exwm-systemtray--on-randr-refresh): Take menu-bar / tool-bar into account when placing systemtray.
2018-05-20 Provide a fallback value for X window geometryChris Feng2-4/+10
* exwm-manage.el (exwm-manage--update-geometry): Ditto.
2018-05-13 Avoid hiding full screen X windows unexpectedlyChris Feng1-0/+2
* exwm-layout.el (exwm-layout-set-fullscreen) (exwm-layout-unset-fullscreen): Set the Emacs window of a full screen X window dedicated to its buffer such that newly created X windows won't replace it.
2018-04-15 Port to 32-bit Emacs on master branchPaul Eggert2-2/+2
2018-04-01 Preserve keyboard grab state after quitting fullscreen modeChris Feng1-3/+4
* exwm-layout.el (exwm-layout-set-fullscreen) (exwm-layout-unset-fullscreen, exwm-layout-toggle-fullscreen): Ditto.
2018-04-01 Add support for various key processing variablesChris Feng1-13/+32
* exwm-input.el (exwm-input--mimic-read-event): New function for handling `extra-keyboard-modifiers' and `keyboard-translate-table'. (exwm-input--cache-event): Do not unread events here. (exwm-input--on-KeyPress-line-mode) (exwm-input--on-KeyPress-char-mode): Compare with preprocessed events and unread raw ones. * exwm-input.el (exwm-input--on-KeyPress-line-mode): Add support for `overriding-terminal-local-map'.
2018-03-23 Fix a compatibility issue with Emacs 24Chris Feng1-1/+3
* exwm-core.el (exwm--defer): `time-add' in Emacs 24 only accept lists.
2018-03-23 Fix local simulation keysChris Feng1-1/+1
* exwm-input.el (exwm-input--on-KeyPress-line-mode): Do not test `exwm-mode-map' to see if a key should be forwarded to Emacs as it's overridden when local simulation keys are present.
2018-03-23 Avoid entering line-mode after exit minibufferChris Feng1-1/+2
* exwm-input.el (exwm-input--on-pre-command): Keys should be forwarded to the X window (if its Emacs window is currently selected) after exiting the minibuffer.
2018-03-23 Add workspace support in per-application configurationsChris Feng1-3/+9
* exwm-manage.el (exwm-manage-configurations) (exwm-manage--manage-window): Allow to specify which workspace an applications should be created on.
2018-03-14 Bump version to 0.18Chris Feng1-2/+2
2018-03-14 Fix wrong exwm-active frame parametersChris Feng1-2/+3
* exwm-randr.el (exwm-randr--refresh): Intern output names.
2018-03-10 Fix regressionsChris Feng4-10/+12
(exwm-init): Do not signal an error on startup. * exwm-floating.el (exwm-floating-toggle-floating): * exwm-input (exwm-input-send-next-key) (exwm-input-send-simulation-key): * exwm-layout (exwm-layout-set-fullscreen) (exwm-layout-unset-fullscreen, exwm-layout-toggle-fullscreen): Fix incorrect use of `cl-return-from'.
2018-03-10 Delay setting workspaces active/inactiveChris Feng1-11/+12
* exwm-randr.el (exwm-randr--refresh): Set workspaces active/inactive after their geometries have been updated.
2018-03-09 Minor fixesChris Feng8-32/+24
2018-03-06 Support replacing and being replaced by other window managersAdrián Medraño Calvo2-3/+103
* exwm.el (exwm--on-SelectionClear, exwm--init-icccm-ewmh) (exwm--exit-icccm-ewmh, exwm--wmsn-acquire, exwm--wmsn-release): Get the window manager selection; die when it is cleared.
2018-03-06 Clean up when failing to startAdrián Medraño Calvo1-45/+28
* exwm.el (exwm-init, exwm-exit): Clean up when failing to start. (exwm--exit-icccm-ewmh): Stop deleting root window properties on exit: delete function.
2018-03-06 Name all helper windows created by EXWMAdrián Medraño Calvo3-18/+19
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace) (exwm-workspace--init): * exwm-input.el (exwm-input--init): * exwm-floating.el (exwm-floating--set-floating): Name created helper windows with prefix "EXWM".
2018-03-06 Add interactive commands for starting and stopping EXWMAdrián Medraño Calvo2-4/+7
* exwm.el (exwm-reset): Remove autoload cookie. (exwm-init, exwm-exit): Add autoload cookie and interactive declaration.
2018-03-06 Disconnect on `exwm--exit'Adrián Medraño Calvo2-42/+41
* exwm.el (exwm-exit): Disconnect `exwm-connection'. * exwm.el (exwm-init, exwm-exit, exwm--confirm-kill-emacs) * exwm-workspace.el (exwm-workspace--set-desktop-geometry) (exwm-workspace--init, exwm-workspace--exit): Move `confirm-kill-emacs' to this exwm.el`. Delegate disconnection of `exwm--connection' to `exwm-exit'.
2018-03-06 * exwm.el (exwm--exit): Drop SubstructureRedirect on root window.Adrián Medraño Calvo1-1/+5
2018-03-06 Cleanup exwm-workspace on exitAdrián Medraño Calvo1-117/+132
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs): Move deinitialization to `exwm-workspace--exit'. (exwm-workspace--exit): Reparent minibuffer frame to the root window, turn workspace frames into regular frames, restore frame parameters. (exwm-workspace--init): Reset the fullscreen counter. (exwm-workspace--remove-frame-as-workspace): Reset fullscreen state. (exwm-workspace--init-minibuffer-frame) (exwm-workspace--exit-minibuffer-frame): New functions configuring the minibuffer frame. (exwm-workspace--init, exwm-workspace--exit): Use the above functions to configure the minibuffer frame.
2018-03-06 Dissociate frame creation and deletion handlers from the actual ↵Adrián Medraño Calvo1-113/+139
configuration of frames as workspaces * exwm-workspace.el (exwm-workspace--add-frame-as-workspace) (exwm-workspace--remove-frame-as-workspace): Limit functionality to the configuration of frames as workspaces. (exwm-workspace--on-after-make-frame) (exwm-workspace--on-delete-frame): Callbacks run on frame creation and deletion that may use or stop them from being used as workspaces.
2018-03-06 Factor out `exwm-randr--on-ScreenChangeNotify'Adrián Medraño Calvo1-4/+6
* exwm-randr.el (exwm-randr--on-ScreenChangeNotify) (exwm-randr--init): Factor ScreenChangeNotify event callback into a function.
2018-03-06 Cleanup exwm-manage on exitAdrián Medraño Calvo2-3/+12
* exwm-manage.el (exwm-manage--unmanage-window): Map windows when quitting. (exwm-manage--exit): Remap all windows. * exwm.el (exwm--exit): Reorder deinitialization sequence so that windows are reparented before the workspaces are removed.
2018-03-06 Cleanup exwm-layout on exitAdrián Medraño Calvo1-0/+2
* exwm-layout.el (exwm-layout--exit): Remove `window-pixel-width-before-size-change' hook.
2018-03-06 Cleanup exwm-input on exitAdrián Medraño Calvo1-0/+1
* exwm-input.el (exwm-input--exit): Remove missing hook reset window variable.
2018-03-06 Prevent duplicate keys in frameset-filter-alistAdrián Medraño Calvo2-2/+4
* exwm-workspace.el (exwm-workspace--init): * exwm-randr.el (exwm-randr--init): Prevent duplicate keys in frameset-filter-alist
2018-03-06 Support disabling default `exwm-mode-map' bindingsAdrián Medraño Calvo2-2/+2
* exwm-input.el (exwm-input--on-KeyPress-line-mode): Use `lookup-key' to check whether a the event is defined in the `exwm-mode-map' keymap.
2018-03-04 Avoid switching buffer when moving an X window already in placeChris Feng1-1/+3
* exwm-workspace.el (exwm-workspace-move-window): This is required when calling `exwm-workspace-move-window' from `exwm-layout--refresh'.
2018-03-04 Fix fullscreen mode after switching workspace and backChris Feng4-20/+32
* exwm-layout.el (exwm-layout--show): Always set an X window in fullscreen mode the size in fullscreen. (exwm-layout-unset-fullscreen): Leave the fullscreen mode first. * exwm-layout.el (exwm-layout--fullscreen-p): New function telling whether the current buffer is in fullscreen mode. (exwm-layout-set-fullscreen, exwm-layout-unset-fullscreen) (exwm-layout-toggle-fullscreen): * exwm-manage.el (exwm-manage--manage-window) (exwm-manage--on-ConfigureRequest): * exwm-workspace.el (exwm-workspace-switch, exwm-workspace-swap) (exwm-workspace-move): * exwm.el (exwm-reset, exwm--on-ClientMessage): Use it.
2018-03-04 Fix local simulation keysChris Feng1-10/+11
* exwm-input.el (exwm-input--set-simulation-keys): Try the local binding first do not clear the hash table (rely on GC).
2018-03-04 Add header-line format support in per-application configurationsChris Feng2-2/+21
* exwm-manage.el (exwm-manage-configurations): * exwm-floating.el (exwm-floating--set-floating) (exwm-floating--unset-floating): Allow customizing header-line format for floating/tiling X windows.
2018-03-04 Add prefix arguments support for various commandsChris Feng1-16/+41
* exwm-workspace.el (exwm-workspace-switch) (exwm-workspace-switch-create, exwm-workspace-move) (exwm-workspace-move-window): Add prefix arguments support.
2018-03-03 Add various per-application configurationsChris Feng2-14/+78
* exwm-manage.el (exwm-manage-configurations): Add options for fullscreen mode and floating & tiling mode-line formats. (exwm-manage--manage-window): Add support for configuring line-mode/char-mode, prefix keys, simulation keys and fullscreen mode. * exwm-floating.el (exwm-floating--set-floating): Add support for configuring the geometry, mode-line format and border width of a floating X window. (exwm-floating--unset-floating): Add support for configuring the mode-line format of a tiling X window.
2018-03-03 Fix EXWM buffers not being hidden on workspace switchJohan Johansson1-5/+5
* exwm-workspace.el (exwm-workspace-switch, exwm-workspace-move-window): Use `equal' to compare RandR output names.
2018-03-02 Add initial support for per-application configurationsChris Feng2-7/+44
* exwm-core.el (exwm--configurations): New buffer-local variable recording the configurations of an X window. * exwm-manage.el (exwm-manage-configurations): New user option as the per-application configurations. (exwm-manage--get-configurations): New function for fetching the configurations of this X window. (exwm-manage--manage-window): Fetch the configurations and check if the X window should be floating/tiling.
2018-03-02 Improve multi-monitor performanceChris Feng1-3/+3
* exwm-randr.el (exwm-randr--refresh): Use GetScreenResourcesCurrent instead of GetScreenResources to avoid polling hardware changes. (exwm-randr--init): GetScreenResourcesCurrent requires RandR 1.3 .
2018-02-26 Make `exwm-manage-ping-timeout' a user optionChris Feng1-2/+4
* exwm-manage.el (exwm-manage-ping-timeout): Now a user option.
2018-02-26 Forward keys defined in `exwm-mode-map' to Emacs by defaultChris Feng2-2/+8
* exwm-input.el (exwm-input-prefix-keys): Remove ?\C-c. (exwm-input--on-KeyPress-line-mode): * exwm-core.el (): Detect keys in `exwm-mode-map' in line-mode.
2018-02-26 Improve the Customize interface for simulation keysChris Feng1-28/+56
* exwm-input.el (exwm-input--set-simulation-keys): New function for actullay setting simulation keys. (exwm-input-simulation-keys, exwm-input-set-local-simulation-keys) (exwm-input--init): Use this instead of `exwm-input-set-simulation-keys'. (exwm-input-set-simulation-keys): Make obsolete. (exwm-input--read-keys): New function for reading an arbitrary key sequence. (exwm-input-set-simulation-key): New command for setting a new simulation key (which can be saved in the Customize interface).
2018-02-26 Add Customize interface for global keysChris Feng1-3/+36
* exwm-input.el (exwm-input--set-key): New function for actually setting the binding. (exwm-input-global-keys): New user option for customizing global keys. (exwm-input-set-key): Update `exwm-input-global-keys' and call `exwm-input--set-key' (exwm-input--init): Initialize global keys.
2018-02-24 Bump version to 0.17Chris Feng1-2/+2
2018-02-22 Hide blocked frames (they are visible with a compositor)Chris Feng2-29/+58
* exwm-workspace.el (exwm-workspace--set-active): New function for setting the 'exwm-active' frame parameter and show/hide frames BTW. (exwm-workspace--active-p): New function checking whether a frame is active. (exwm-workspace--set-fullscreen, exwm-workspace-switch) (exwm-workspace-move-window): * exwm-randr.el (exwm-randr--refresh): Use them. * exwm-workspace.el (exwm-workspace-attach-minibuffer) (exwm-workspace--show-minibuffer, exwm-workspace--hide-minibuffer): Show/Hide the minibuffer frame.
2018-02-22 Mark active workspaces on each outputChris Feng2-45/+57
* exwm-randr.el (exwm-randr--refresh): Mark active workspaces. * exwm-workspace.el (exwm-workspace-switch): Use the marks to show/hide X windows when switching workspace; do not update timestamp. (exwm-workspace-move-window): Use the marks to hide X windows after moving them. (exwm-workspace--init): Update `frameset-filter-alist'.
2018-02-22 Grab global keys on top-level X windowsChris Feng2-42/+41
* exwm-input.el (exwm-input--on-CreateNotify): New function for grabbing global keys on newly created X windows. (exwm-input--update-global-prefix-keys): Grab global keys on top-level X windows instead of the root window. (exwm-input--grab-global-prefix-keys): New function for grabbing global keys on X windows. (exwm-input--release-keyboard): Grab global keys in char-mode. (exwm-input--init): Select CreateNotify events. * exwm-core.el (exwm--unlock): * exwm-input.el (exwm-input--on-FocusIn, exwm-input--init): Do not handle FocusIn events on the root window.