about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2018-08-13 Commands for interacting with the log buffer remotelyAdrián Medraño Calvo2-0/+17
* exwm-debug.el (exwm-debug--clear, exwm-debug--mark): New functions.
2018-08-13 Print log output to an EXWM-specific messages bufferAdrián Medraño Calvo2-3/+116
Using `message' to log debugging information is cumbersome, as the output appears constantly in the minibuffer, obscuring prompts and other information. In the case of long messages, it might resize the minibuffer, which causes EXWM to perform additional actions due to the log output. This change reimplements EXWM debug logging using a separate buffer (*EXWM-DEBUG*). Basic functionality, like scrolling when point is at the end of the buffer is maintained. * exwm-core.el (exwm--log): Use `exwm-debug--message' instead of `message'. Prefix all messages with the name of the function. Make FORMAT-STRING argument optional. * exwm-debug.el: New file. (exwm-debug-buffer): New variable holding the buffer where debug messages are output to. (exwm-debug--message): New function printing a message to `exwm-debug-buffer'. (exwm-debug--backtrace): New function printing a backtrace.
2018-08-12 Avoid using `set-mouse-position' to warp pointerChris Feng1-3/+12
* exwm-workspace.el (exwm-workspace-switch): Warp pointer with the WarpPointer request.
2018-08-12 Exclude irrelevant X windows when refreshingChris Feng1-1/+2
* exwm-layout.el (exwm-layout--refresh): Only check X windows on the workspace being examined.
2018-08-05 When mapping an X window check if it's on an active workspaceChris Feng1-4/+7
* exwm-layout.el (exwm-layout--refresh): Avoid mapping X windows on inactive workspaces.
2018-07-29 Fix issues with destroying full screen X windowsChris Feng1-0/+4
* exwm-manage.el (exwm-manage--unmanage-window): Set the Emacs window of an full screen X window as non-dedicated before killing its buffer so as not to cause other side effects.
2018-07-18 Bump version to 0.19Chris Feng1-2/+2
2018-07-15 Fix XTerm crash on startupChris Feng1-10/+12
* exwm-input.el (exwm-input--set-focus): Applications like XTerm crashes on receiving WM_TAKE_FOCUS so only send it to X windows accepting it.
2018-07-15 ; Use `derived-mode-p'.Chris Feng6-26/+27
2018-07-15 Add support for automatic cursor warpingChris Feng1-0/+15
* exwm-workspace.el (exwm-workspace-warp-cursor): New user option. (exwm-workspace-switch): Automatically warp cursor after workspace switch.
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.