about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
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
2019-03-17 * exwm-workspace.el: Use closures rather than `(lambda ...)Stefan Monnier1-9/+9
2019-03-17 Remove loading order dependency on `mouse-autoselect-window'Chris Feng4-9/+10
* exwm-core.el (exwm--get-client-event-mask): Renamed from `exwm--client-event-mask' and used as a function. * exwm-floating.el (exwm-floating--unset-floating): * exwm-layout.el (exwm-layout--hide): * exwm-manage.el (exwm-manage--manage-window): Use it.
2019-03-17 Add extra keys for selecting workspaceChris Feng1-3/+17
* exwm-workspace.el (exwm-workspace--switch-map) (exwm-workspace--init): Avoid initializing the keymap when loading. (exwm-workspace--init-switch-map): Initialize `exwm-workspace--switch-map' and also add extra keybindings when `exwm-workspace-index-map' has been customized.
2019-03-10 Make replacing existing WM optionalChris Feng2-5/+9
* exwm.el (exwm-replace): New user option for specifying whether to replace existing WM. (exwm-init): Use it. (exwm--wmsn-acquire, exwm-init): Do not print warning message when user gives up replacing. * exwm-core.el (exwm--wmsn-replace): Remove dead code.
2019-02-16 Bump version to 0.22.1Chris Feng1-1/+1
2019-02-11 Fix compatibility issue with Emacs 25Chris Feng1-1/+3
* exwm-input.el (exwm-input--unread-event): `string-version-lessp' is not available on Emacs 25.
2019-02-10 Bump version to 0.22Chris Feng1-1/+1
2019-02-06 Merge branch 'retain-echo-area-until-input' of ↵Chris Feng2-3/+26
https://github.com/medranocalvo/exwm into medranocalvo/retain-echo-area-until-input
2019-02-06 Merge branch 'ieure/default-simulation-keys' into externals/exwmChris Feng2-31/+37
2019-02-06 Add input method supportChris Feng8-42/+812
; The code is basically refactored from ; https://github.com/ch11ng/exim to get better maintenance. * exwm-xim.el: New module making Emacs's builtin input methods usable for interacting with X windows. * exwm-core.el (exwm--intern-atom): New function for intern X11 atoms. * exwm-input.el (exwm-input--init): * exwm-manage.el (exwm-manage--init): Use it.
2019-02-06 Do the same for `exwm-input-global-keys'Chris Feng1-15/+19
2019-02-06 Cleanup simulation key config issuesIan Eure2-16/+18
* exwm-input.el (exwm-input-simulation-keys): Original key only has one option, so probably shouldn’t be a `choice` type; Move the "User-defined" key value to the top, since that’s the one someone is most likely to want). * exwm-config.el (exwm-config-default): Only set custom vars if there isn’t a saved value for them.
2019-02-05 Scan for existing X windows only after running `exwm-init-hook'Chris Feng1-2/+2
* exwm.el (exwm-init): Delay the call to `exwm-manage--scan' since managing existing X windows too early may result in issues like losing input focus.
2019-02-01 Fetch necessary properties before checking per-app configurationsChris Feng1-2/+2
* exwm-manage.el (exwm-manage--manage-window): Fetch X window title & protocols so they can be available when checking per-application configurations.
2019-02-01 Update copyright year to 2019Chris Feng11-11/+11
2019-01-20 Fix issue with managed tray iconsChris Feng1-3/+10
* exwm-input.el (exwm-input--on-ButtonPress): Replay button events destined for managed tray icons.
2018-12-30 Automatically iconify floating X windowsChris Feng1-1/+21
* exwm-layout.el (exwm-layout-auto-iconify): New user option to specify whether to automatically iconify X windows. (exwm-layout--auto-iconify): Automatically iconify floating X windows when its main X window (if any) is iconified. (exwm-layout--show, exwm-layout--hide): Use it.