about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2019-12-08 Eliminate a compile warningChris Feng1-1/+1
* exwm-workspace.el (exwm-workspace-move-window): Replace the obsolete `run-window-configuration-change-hook'.
2019-12-01 Avoid redundant input focus transferChris Feng1-28/+43
* exwm-input.el (exwm-input--set-focus): Check for current focused X window before making an input focus transfer. (exwm-input--on-buffer-list-update): Remove the `this-command' check.
2019-11-03 Add support for accessing keymaps in char-modeChris Feng1-0/+15
* exwm-input.el (exwm-input-invoke-factory): New macro for generating new commands that invoke corresponding prefix keys.
2019-10-27 Loosen the requirements for input focus updateChris Feng1-2/+1
* exwm-input.el (exwm-input--on-buffer-list-update): No more check on current buffer (the check on buffer name was dropped in a1cf0d9b8).
2019-10-13 Fix `exwm-input-set-simulation-key'Chris Feng1-3/+5
* exwm-input.el (exwm-input--read-keys): Return nil on empty input so that `exwm-input-set-simulation-key' can ignore it. (exwm-input-set-simulation-key): Improve prompt.
2019-10-07 Add minibuffer-keyboard-quit to the default pre-post-command-blacklistSteven Allen1-1/+3
* exwm-input.el (exwm-input-pre-post-command-blacklist): Add `minibuffer-keyboard-quit' to the blacklist. This is invoked when the user aborts a the minibuffer with C-g.
2019-10-06 Set the current buffer before handling key eventsSteven Allen1-12/+13
There's no guarantee that the global current buffer matches the selected window's buffer. For example, the following will output "*Messages*" regardless of the actual current buffer: (progn (run-at "1 sec" nil (lambda () (with-current-buffer (get-buffer "*Messages*") (sit-for 5)))) (run-at "2 sec" nil (lambda () (message (buffer-name))))) * exwm-input.el (exwm-input--on-KeyPress): Set the current buffer to selected window's current buffer.
2019-10-02 Fix detection of `exwm-workspace--window-y-offset'Chris Feng1-4/+10
* exwm-workspace.el (exwm-workspace--update-offsets): Explicitly request the geometry of the container for the first workspace as it may not align with the top of the root X window.
2019-10-02 Avoid calling `x-focus-frame' on non-graphical framesChris Feng2-1/+4
* exwm-workspace.el (exwm-workspace--client-p): Also account for non-graphical frames. * exwm-input.el (exwm-input--on-minibuffer-setup) (exwm-input--on-minibuffer-exit): Exclude emacsclient frames.
2019-10-02 Allow customizing undetectable commandsChris Feng1-1/+5
* exwm-input.el (exwm-input-pre-post-command-blacklist): List of commands undetectable with `post-command-hook'. (exwm-input--on-pre-command): Use it.
2019-09-22 Make input focus continue to work after EXWM exitsChris Feng1-1/+8
* exwm-input.el (exwm-input--exit): Set input focus 'revert-to' to 'PointerRoot' so that user can set input focus to X windows with pointer after EXWM exits (and there's no other WM).
2019-09-22 Make _NET_ACTIVE_WINDOW working for floating X windowsChris Feng1-10/+12
* exwm.el (exwm--on-ClientMessage): Select floating frames for floating X windows on receiving _NET_ACTIVE_WINDOW.
2019-09-22 Skip global keys unavailable in X serverChris Feng1-18/+21
* exwm-input.el (exwm-input--grab-global-prefix-keys): Some global keys might not be available in X server (perhaps due to misconfiguration).
2019-09-15 Fix `exwm-layout-enlarge-window' for floating X windowsChris Feng1-1/+1
* exwm-layout.el (exwm-layout-enlarge-window): Correct the height of outer frame.
2019-09-15 Fix timestamp for debug logsChris Feng1-10/+13
* exwm-core.el (exwm-debug-log-time-function): Moved to `exwm-debug' group and set `xcb-debug:log-time-function' automatically. (exwm-debug-log-uptime, exwm-debug-log-time): Reuse the definition from XELB.
2019-09-14 Bump version to 0.23Chris Feng1-2/+2
2019-09-14 Support starting EXWM from Emacs server not in daemon modeChris Feng1-4/+5
* exwm.el (exwm-enable): Start EXWM from `window-setup-hook' or `after-make-frame-functions', whichever comes first.
2019-09-14 Replace `frame-geometry'Chris Feng6-66/+122
* exwm-workspace.el (exwm-workspace--frame-y-offset) exwm-workspace--window-y-offset, exwm-workspace--update-offsets): New variables & function for the calculation of Emacs frame offsets, as `frame-geometry' is not available in Emacs 24. * exwm-floating.el (exwm-floating--set-floating) (exwm-floating--do-moveresize): * exwm-layout.el (exwm-layout--show): * exwm-systemtray.el (exwm-systemtray--on-workspace-switch) (exwm-systemtray--on-randr-refresh, exwm-systemtray--init): Use them. * exwm-systemtray.el (exwm-systemtray--refresh-all): Renamed from `exwm-systemtray--on-randr-refresh'. (exwm-systemtray--init, exwm-systemtray--exit): Use it. * exwm-floating.el (exwm-floating--stop-moveresize): Send a ConfigureNotify event to floating frame to update its position (seems required by Emacs 24).
2019-09-13 Fix hiding floating X windowsChris Feng1-4/+9
* exwm-layout.el (exwm-layout--floating-hidden-position): A place far enough from the origin to actually hide floating X window containers. (exwm-layout--show, exwm-layout--hide): Use it.
2019-09-13 Improve user optionsChris Feng2-28/+87
* exwm-floating.el (exwm-floating-border-color) (exwm-floating-border-width): Make changes take effect w/o restart. (exwm-floating--init-border): Refactored out from `exwm-floating--init'. * exwm-workspace.el (exwm-workspace-minibuffer-position): Clarify a restart is required.
2019-09-08 ; Autoload `exwm-enable'Chris Feng1-0/+1
2019-09-08 ; Improve messages for automatically created workspacesChris Feng1-2/+4
2019-09-08 Fix floating X window size with menu-bar/tool-bar enabledChris Feng2-12/+27
* exwm-floating.el (exwm-floating--set-floating) exwm-floating--do-moveresize) exwm-layout.el (exwm-layout--show): Take menu-bar/tool-bar into consideration.
2019-09-08 ; Improve the docstring of `exwm-manage-configurations'Chris Feng1-1/+3
2019-09-08 Handle and skip problematic per-application configurationsChris Feng1-1/+2
* exwm-manage.el (exwm-manage--get-configurations): Select the first usable configuration.
2019-09-08 Add timestamps to `exwm-debug' logsChris Feng1-1/+25
* exwm-core.el (exwm-debug-log-time-function): New user option for choosing the style of timestamps in debug logs. (exwm-debug-log-uptime, exwm-debug-log-time): Possible candidates for it. (exwm--log): Use it.
2019-08-25 * exwm-core.el (exwm-mode-menu): Clarify simulation keys in menu.Chris Feng1-1/+2
2019-08-25 Ignore non-`exwm-mode' buffers in `exwm-workspace-move-window'Chris Feng1-1/+3
* exwm-workspace.el (exwm-workspace-move-window): Ignore non-`exwm-mode' buffers.
2019-08-25 Clear echo area for input methodsChris Feng1-0/+2
* exwm-xim.el (exwm-xim--handle-forward-event-request): exwm-xim enforces `input-method-use-echo-area' but this breaks some input methods. This change clear garbage printed by such input methods.
2019-08-25 Fix a lock issue with _NET_CLOSE_WINDOW and WM_DELETE_WINDOWChris Feng2-4/+7
* exwm.el (exwm--on-ClientMessage): Calling `kill-buffer' directly from an event context won't work since the DestroyNotify event for a WM_DELETE_WINDOW request won't be handled until the current event context terminates. * exwm-manage.el (exwm-manage--kill-buffer-query-function): Avoid potential side effects with MapWindow.
2019-08-18 Make it possible to answer questions from Emacs when in char-modeChris Feng1-4/+55
* exwm-input.el (exwm-input--echo-area-timer): New variable storing the timer used for detecting echo area messages. (exwm-input--on-minibuffer-setup, exwm-input--on-minibuffer-exit) (exwm-input--on-echo-area-dirty, exwm-input--on-echo-area-clear): New functions for grabbing/releasing keyboard when minibuffer/echo becomes active/inactive. (exwm-input--init, exwm-input--exit): Register/Unregister them. (exwm-input--grab-keyboard, exwm-input--release-keyboard): Validate buffers.
2019-08-11 Make `exwm-manage-configurations' more user friendlyChris Feng1-21/+57
* exwm-manage.el (exwm-manage-configurations): Specify type for each configuration option.
2019-08-11 Avoid checking `*temp*' buffersChris Feng1-5/+1
* exwm-input.el (exwm-input--on-buffer-list-update): The way of detecting a switch from a `*temp*' buffer does not always work. Disable it until we find a better way.
2019-08-11 Fix a regression with systemtrayChris Feng1-15/+25
* exwm-systemtray.el (exwm-systemtray--on-workspace-switch) (exwm-systemtray--on-randr-refresh): Instead of retrieving the real frame height, manually calculate it with workarea height and menu-bar/tool-bar size.
2019-08-11 Inform user about making a frame a workspaceChris Feng1-2/+4
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace): Add a message. (exwm-workspace--init): Exclude initial workspaces.
2019-08-05 Fix detection of modifier keys in Emacs eventsChris Feng2-22/+25
* exwm-input.el (exwm-input--grab-global-prefix-keys) (exwm-input--fake-key): * exwm-xim.el (exwm-xim--handle-forward-event-request): X11 allows multiple combinations of KEYSYM-MODIFIERS to generate a same KEYSYM, thus the result of an Emacs event to KEYSYM-MODIFIERS conversion is not necessarily unique. Previously the result of `xcb:keysyms:event->keysym' is misused as the modifiers returned is actually the ones should be consumed.
2019-08-05 Remove hard-coded keys in menuChris Feng1-2/+2
* exwm-core.el (exwm-mode-menu): Avoid hard-coding keys in `exwm-mode-menu'.
2019-07-28 Fix `after-focus-change-function' not workingChris Feng1-2/+8
* exwm-workspace.el (exwm-workspace--original-handle-focus-in) (exwm-workspace--original-handle-focus-out): Store the original `handle-focus-{in,out}'. (exwm-workspace-switch): Now that `handle-focus-{in,out}' has been updated to call other stuffs like `after-focus-change-function', we can no longer run `focus-{in,out}-hook' only.
2019-07-14 Added option to have a key that ends exwm-input-send-next-keySebastian Wålinder1-4/+10
* exwm-input.el (exwm-input-send-next-key): Accept an optional end key.
2019-06-30 Fix 'Attempt to delete a surrogate minibuffer frame' errorChris Feng2-13/+27
* exwm-workspace.el (exwm-workspace--get-remove-frame-next-workspace): New function automatically moves X window elsewhere before removing a workspace; also returns the destination workspace. (exwm-workspace--prompt-delete, exwm-workspace-delete) (exwm-workspace--remove-frame-as-workspace): Use it. * exwm.el (exwm--on-ClientMessage): Use it.
2019-06-16 Allow panel to hide floating X windowsChris Feng1-1/+3
* exwm.el (exwm--on-ClientMessage): Use `exwm-floating-hide' to hide X windows on receiving `WM_CHANGE_STATE' events.
2019-06-16 Avoid workspace switch loop with `mouse-autoselect-window' enabledChris Feng1-2/+7
* exwm-input.el (exwm-input--last-enter-notify-position): New variable storing last mouse position. (exwm-input--on-EnterNotify): Avoid switching workspace when mouse position is not changed (the event is a result of a workspace switch).
2019-06-09 Handle (t . EVENT) format events in exwm-ximChris Feng1-1/+5
* exwm-xim.el (exwm-xim--handle-forward-event-request): Ditto.
2019-06-09 Fix character loss with exwm-ximChris Feng1-50/+57
* exwm-xim.el (exwm-xim--handle-forward-event-request): Events unread can either be reused by input methods or forwarded to X windows as is.
2019-06-02 Fix unreading 'return eventChris Feng1-43/+38
* exwm-xim.el (exwm-xim--event-pending): Drop unused variable. (exwm-xim--handle-forward-event-request): Convert 'return back to ?\n to avoid error.
2019-06-02 Fix auto commit issue with input methodsChris Feng1-64/+74
* exwm-xim.el (exwm-xim--handle-forward-event-request): Factored out from `exwm-xim--on-request' to make auto commit work. With input methods providing candidates the first candidate can be implicitly selected if no further matching is possible. The last event would be stored in `unread-command-events' (at least for `quail-input-method') and should be reused by the input method. (exwm-xim--on-request): Use it.
2019-04-14 Add compatibility mode for legacy serversChris Feng1-36/+96
* exwm-randr.el (exwm-randr--compatibility-mode): Indicating whether RandR 1.5 is supported by the server. (exwm-randr--init): Set it. (exwm-randr--get-monitor-alias): Split out from exwm-randr--get-monitors for reuse. (exwm-randr--get-outputs): New function for retrieving RandR 1.2 outputs when RandR 1.5 is not supported. (exwm-randr-refresh): Call `exwm-randr--get-outputs' in compatibility mode.
2019-04-14 Clarify the usage of `exwm-manage-configurations'Chris Feng1-1/+23
2019-03-24 Support monitor mirroringChris Feng1-8/+36
* exwm-randr.el (exwm-randr--get-monitors): Also return an alist of monitor name aliases. (exwm-randr-refresh): Unify mirrored monitor names.
2019-03-24 ; Follows upChris Feng3-69/+69