about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2018-12-16 Avoid unnecessary focus changes when creating/killing buffersChris Feng2-2/+9
* exwm-input.el (exwm-input--skip-buffer-list-update): New internal variable for skipping the next 'buffer-list-update'. (exwm-input--on-buffer-list-update): Skip when `exwm-input--skip-buffer-list-update` is set. * exwm-manage.el (exwm-manage--manage-window): Set `exwm-input--skip-buffer-list-update` when creating/killing buffers.
2018-12-05 Only call exwm-randr-screen-change-hook on new event sequence numberJames Ferguson1-2/+9
Multiple event callbacks are triggered per physical monitor plug event. This de-duplicates the events triggering the running of the hook.
2018-12-02 ; Improve debug logs.Chris Feng8-20/+116
2018-12-01 Bump version to 0.21Chris Feng1-1/+1
2018-11-25 Avoid unnecessary keyboard grab/ungrab in char-modeChris Feng1-7/+8
* exwm-input.el (exwm-input--cache-event): Optimize the handling of single event global key by not grabbing/ungrabbing the keyboard.
2018-11-18 Fallback to the first monitor as the primary oneChris Feng1-2/+3
* exwm-randr.el (exwm-randr--get-monitors): When no primary monitor is specified, pick the first one.
2018-11-18 Add support for 'managed' per-application configurationChris Feng1-17/+26
* exwm-manage.el (exwm-manage-configurations): Add a new value type 'managed' to allow users to specify whether a certain X window should be managed or not. (exwm-manage--manage-window): Use it.
2018-11-18 Automatically refresh RandR settingsChris Feng1-7/+54
* exwm-randr.el (exwm-randr--last-timestamp): New variable recording last seen timestamp after requesting `GetMonitors'. (exwm-randr--get-monitors): Use it. (exwm-randr--on-ScreenChangeNotify): Do not refresh any more. (exwm-randr--on-Notify): New function for handling `CrtcChangeNotify' and `OutputChangeNotify' events. (exwm-randr--on-ConfigureNotify): New function for handling `ConfigureNotify' event. (exwm-randr--init): Add listeners for additional events.
2018-11-18 Avoid activating already active X windowsChris Feng1-3/+8
* exwm.el (exwm--on-ClientMessage): On receiving `_NET_ACTIVE_WINDOW' events, check if the requested X windows are already active.
2018-11-11 Fix wrong stacking order of tiling X windowsChris Feng1-5/+14
* exwm-manage.el (exwm-manage--on-MapNotify): Avoid restacking tiling X windows on the top when force triggering hierarchy change events.
2018-11-11 Expose `exwm-randr-refresh' public interfaceChris Feng1-1/+6
* exwm-randr.el (exwm-randr-refresh): New public interface allowing users to manually refresh when RandR settings are changed output EXWM. (exwm-randr--refresh): Made obsolete.
2018-11-04 Add support for RandR 1.5 monitorChris Feng2-82/+81
* exwm-randr.el (exwm-randr-workspace-monitor-plist): New user option for specifying which monitor each workspace should be displayed on. (exwm-randr-workspace-monitor-plist): Made obsolete. (exwm-randr--get-monitors): New function for fetching active monitors. (exwm-randr--refresh): Adapted to use monitor. (exwm-randr--init): Now requires RandR 1.5. * exwm-randr.el: * exwm-workspace.el: Rename `output' to `monitor'.
2018-11-04 Select more sensible buffers after creating new windowsChris Feng1-3/+9
* exwm-layout.el (exwm-layout--refresh-other) (exwm-layout--refresh-workspace): When filling vacated windows select more sensible buffer by calling `switch-to-next-buffer' for newly created windows.
2018-10-24 Merge branch 'medranocalvo/fix-input-mode-after-fullscreen' into externals/exwmAdrián Medraño Calvo3-14/+12
2018-10-21 Restore keyboard grabbing after exiting fullscreenAdrián Medraño Calvo3-2/+8
Recover the difference between the input mode selected by the user and actual one, which might be transient. This was inadvertently removed in recent changes. * exwm-core.el (exwm--selected-input-mode): New variable. * exwm-input.el (exwm-input-grab-keyboard) (exwm-input-release-keyboard): Use it. * exwm-layout.el (exwm-layout-unset-fullscreen): Return to the selected input mode.
2018-10-21 Do away with `exwm-input--input-mode'Adrián Medraño Calvo2-13/+5
* exwm-input.el (exwm-input--update-mode-line): Remove. (exwm-input--on-ButtonPress, exwm-input--on-KeyPress) (exwm-input--update-mode-line, exwm-input-toggle-keyboard): Use `exwm--input-mode' variable directly.
2018-10-21 Fix single workspace invisible problem with XephyrChris Feng1-3/+5
* exwm-workspace.el (exwm-workspace-switch): On startup EXWM switches to workspace 0 by force so the rest code can not assume the frames before and after a switch different.
2018-10-14 Bump version to 0.20Chris Feng1-2/+2
2018-10-14 Merge branch 'medranocalvo/reduce-workspace-switch-flicker' into externals/exwmChris Feng1-1/+1
2018-10-14 Merge branch 'medranocalvo/fix-minibuffer-only-focus-jump' into externals/exwmChris Feng1-11/+1
2018-10-08 Reduce flicker when switching workspacesAdrián Medraño Calvo1-1/+1
* exwm-workspace.el (exwm-workspace-switch): Hide the old workspace after having shown the new one when switching to avoid flicker.
2018-10-08 Support binding mouse events in line-modeAdrián Medraño Calvo1-24/+61
* exwm-input.el (exwm-input--event-passthrough-p): Predicate checking whether an event should be forwarded to Emacs. (exwm-input--on-KeyPress-line-mode): Use it. * exwm-input.el (exwm-input--cache-event): Protect against translations swallow the event. * exwm-input.el (exwm-input--on-ButtonPress-line-mode) (exwm-input--on-ButtonPress-char-mode): New functions. (exwm-input--on-ButtonPress): Forward bound mouse events to Emacs when in line-mode.
2018-10-08 Fix focus jumps with minibuffer-only framesAdrián Medraño Calvo1-11/+1
* exwm-input.el (exwm-input--update-focus): Focus the minibuffer's frame, which is different than that of the `minibuffer-selected-window' on minibuffer-only frames. (exwm-input--on-minibuffer-setup, exwm-input--init) (exwm-input-exit): Remove unneeded function.
2018-10-08 Simplify input handlingAdrián Medraño Calvo3-26/+33
No functional change. * exwm-input.el (exwm-input--current-input-mode): New function indicating keyboard input mode. (exwm-input--on-KeyPress, exwm-input--update-mode-line): Use `exwm-input--current-input-mode'. (exwm-input-grab-keyboard, exwm-input-release-keyboard) (exwm-input--update-mode-line): Simplify. * exwh-core.el (exwm--on-KeyPress): Remove variable, use `exwm--keyboard-grabbed' and `exwm-input--current-input-mode' instead.
2018-09-16 Simplify debugging and fix dynamic-scoping `eval'Chris Feng2-15/+7
* exwm-core.el (exwm-debug): New global minor mode to replace `exwm-debug-on' and `exwm-debug-toggle'. * exwm-manage.el (exwm-manage--get-configurations): Use lexical-scoping `eval'.
2018-09-09 Merge branch 'medranocalvo/restack-after-map' into externals/exwmChris Feng1-0/+17
2018-09-09 Merge branch 'medranocalvo/xcb-logging' into externals/exwmChris Feng2-129/+25
2018-09-09 ; Minor fixes for Calvo's patch set.Chris Feng1-8/+5
2018-09-04 Restack X-Windows after being mapped to ensure EnterNotify events fireAdrián Medraño Calvo1-0/+17
* exwm-manage.el (exwm-manage--on-MapNotify, exwm-manage--init): Restack X windows after being mapped in order to ensure they receive an EnterNotify event (does not happen under XQuartz).
2018-09-04 Command for toggling debugging outputAdrián Medraño Calvo1-1/+12
* exwm-core.el (exwm-debug-toggle): New function for toggling debugging output. (exwm-mode-map): Use it.
2018-09-04 Substitute overlapping keybindingsAdrián Medraño Calvo1-2/+2
* exwm-core.el (exwm-mode-map): Change keybindings to avoid overlap.
2018-09-04 Use XELB's debugging facilitiesAdrián Medraño Calvo2-126/+14
* exwm-debug.el: Move to XELB as `xcb-debug'. * exwm-core.el (exwm--log): Use it. (exwm--log): Support switching debugging output at runtime.
2018-09-02 Explicitly specify frame for cursor warping conditionalJames Ferguson1-1/+1
2018-09-02 Fix cursor warping conditional for cursor left of frameJames Ferguson1-1/+3
2018-08-30 Refresh layout after activating/deactivating workspacesAdrián Medraño Calvo2-5/+7
* exwm-workspace.el (exwm-workspace--set-active): Refresh layout after activating or deactivating workspaces. * exwm-layout.el (exwm-layout--refresh-workspace): Hide X windows on inactive workspaces.
2018-08-19 Merge branch 'medranocalvo/fix-x-window-vanish' into externals/exwmChris Feng1-53/+72
2018-08-19 Merge branch 'medranocalvo/exwm-log-buffer' into externals/exwmChris Feng7-7/+202
2018-08-19 ; Comment layout algorithm.Adrián Medraño Calvo1-6/+12
2018-08-19 Consistently name helper windowsAdrián Medraño Calvo2-22/+27
* exwm.el (exwm--init-icccm-ewmh): Avoid naming the root window. (exwm--wmsn-acquire): Use the symbol name in the window name. * exwm-systemtray.el (exwm-systemtray--embedder-window): Rename `exwm-systemtray--embedder' consistency. (exwm-systemtray--init): Use symbol names in the window name.
2018-08-19 ; Unimportant tweaksChris Feng3-20/+14
2018-08-16 Split exwm-layout--refresh into three functionsAdrián Medraño Calvo1-46/+57
* exwm-layout.el (exwm-layout--refresh): Split in three functions for clarity. (exwm-layout--refresh-workspace, exwm-layout--refresh-other) (exwm-layout--refresh-floating): New functions.
2018-08-16 Don't assume order of `get-buffer-window-list' resultsAdrián Medraño Calvo1-2/+4
It only guarantees that the first result *if* the buffer appears on the selected window.
2018-08-16 Use more explicit argument for excluding minibuffersAdrián Medraño Calvo1-4/+4
* exwm-layout.el (exwm-layout--refresh): Use a more intuitive value for specifying exclusion of minibuffers.
2018-08-16 Consider windows of the frame being refreshed, not the selected one at the ↵Adrián Medraño Calvo1-1/+1
time exwm-layout--refresh runs * exwm-layout.el (exwm-layout--refresh): Consider windows of the frame being refreshed instead of the selected frame.
2018-08-13 Trace more functionsAdrián Medraño Calvo6-1/+72
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.