about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2016-03-25 Fix emacsclient issuesChris Feng3-14/+24
* exwm-layout.el (exwm-layout--on-minibuffer-setup) (exwm-layout--on-echo-area-change): * exwm-workspace.el (exwm-workspace--on-minibuffer-setup) (exwm-workspace--on-minibuffer-exit, exwm-workspace--on-echo-area-dirty) (exwm-workspace--on-echo-area-clear): Exclude non-graphical frames. * exwm.el (exwm--server-eval-at): Avoid using `x-dispaly-name'.
2016-03-20 Merge branch 'medranocalvo/remember-last-buffer' into externals/exwmChris Feng2-34/+74
2016-03-19 Restore a sensible buffer when replacing EXWM buffersAdrián Medraño Calvo1-21/+50
* exwm-layout.el (exwm-layout--other-buffer-exclude-exwm-mode-buffers) (exwm-layout--other-buffer-exclude-buffers): New variables. (exwm-layout--other-buffer-predicate): Allow excluding EXWM buffers or buffers from a given set. (exwm-layout--refresh): Replace EXWM buffers with sensible buffers depending on the situation. When in non-workspace/non-floating frames, with some non-EXWM buffer; when the EXWM buffer is displayed elsewhere, some buffer previously displayed in that window (making sure it has been recently covered).
2016-03-19 Use `other-buffer' instead of "*scratch*"Adrián Medraño Calvo1-5/+1
* exwm-workspace.el (exwm-workspace-move-window): Display `other-buffer' instead of "*scratch*" in the window whose buffer has been made floating.
2016-03-19 Use `buffer-predicate' frame parameter to prevent switching to visible EXWM ↵Adrián Medraño Calvo2-0/+15
buffers * exwm-layout.el (exwm-layout--other-buffer-predicate): New function to be set as `buffer-predicate' frame parameter. * exwm-workspace.el (exwm-workspace--init): Use above function on workspace frames.
2016-03-19 Set the correct buffer before checking the `major-mode'Adrián Medraño Calvo1-7/+7
* exwm-layout.el (exwm-layout--refresh): Make sure we test the `major-mode' of the first buffer of the floating frame.
2016-03-19 Minor cleanupAdrián Medraño Calvo1-4/+4
* exwm-layout.el (exwm-layout--refresh): Reuse car.
2016-03-16 Exclude unmanaged floating X windows when refreshingChris Feng1-2/+4
* exwm-layout.el (exwm-layout--refresh): Do not show unmanaged floating X windows.
2016-03-11 Neglect trivial resizing requestsChris Feng1-12/+40
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Neglect trivial resizing requests since that cannot be done precisely.
2016-03-08 Merge branch 'medranocalvo/fix-input-target' into externals/exwmChris Feng1-28/+44
2016-03-08 Use `cl-case' instead of `case'Chris Feng1-1/+1
2016-03-07 Restack fullscreen X windowsChris Feng1-7/+22
* exwm-layout.el (exwm-layout-set-fullscreen) (exwm-layout-unset-fullscreen): Raise and lower fullscreen X windows respectively.
2016-03-07 Change input mode of window being clickedAdrián Medraño Calvo1-28/+44
When clicking a mode-line of other window to switch the EXWM input mode, `window-buffer' does not return the window whose mode-line has been clicked, but the current one. This change ensures that the right window has its input mode and mode-line updated. * exwm-input.el (exwm-input--update-mode-line): Factor out setting `mode-line-process'. (exwm-input--grab-keyboard, exwm-input--release-keyboard) (exwm-input-grab-keyboard, exwm-input-release-keyboard): Make sure the buffer of the window being clicked has its input mode updated.
2016-03-06 Allow floating X windows to resize themselvesChris Feng1-11/+26
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Allow (non-fullscreen) floating X windows to resize themselves.
2016-03-06 UntabifyChris Feng3-109/+109
2016-03-04 Allow moving/resizing undecorated X windowsChris Feng2-68/+91
* exwm-manage.el (exwm-manage--manage-window): Do not manage undecorated floating X windows (set in _MOTIF_WM_HINTS). * exwm-floating.el (exwm-floating--start-moveresize) (exwm-floating--stop-moveresize, exwm-floating--do-moveresize): Allow moving/resizing undecorated X windows with _NET_WM_MOVERESIZE client message.
2016-03-03 Handle buffer change after a buffer is killedChris Feng2-48/+57
* exwm-manage.el (exwm-manage--kill-buffer-query-function): Handle buffer change. * exwm-workspace.el (exwm-workspace--show-minibuffer): Revert the change made in 93e42136 (the problem has not been fully resolved).
2016-03-01 Avoid unnecessary input focus changes in line-modeChris Feng2-14/+3
* exwm-input.el (exwm-input--grab-keyboard, exwm-input--release-keyboard): Grab keys on X windows instead to prevent unexpected input focus changes. * exwm-workspace.el (exwm-workspace--show-minibuffer): The workaround for cursor flickering issue is no more needed.
2016-02-28 Simplify `exwm-workspace--display-buffer'Chris Feng1-16/+5
* exwm-workspace.el (exwm-workspace--display-buffer): Make it simpler and more reliable.
2016-02-26 Do not wait for WM_STATE property eventsChris Feng1-21/+22
* exwm-layout.el (exwm-layout--show, exwm-layout--hide): Save the state directly.
2016-02-26 Minor fixes for layout and workspaceChris Feng2-2/+3
* exwm-layout.el (exwm-layout-show-mode-line): Force update mode-line. * exwm-workspace.el (exwm-workspace--update-minibuffer): Treat nil as empty string.
2016-02-25 Fix exwm-workspace-switch-to-bufferChris Feng1-4/+13
* exwm-workspace.el (exwm-workspace-switch-to-buffer): Select the floating frame when switching to a floating X window buffer.
2016-02-25 Bump version to 0.4Chris Feng1-1/+1
2016-02-25 Allow user to hide floating X windowsChris Feng3-1/+18
* exwm-core.el (exwm-mode-map): Add a new key to hide floating X windows. * exwm-floating.el (exwm-floating-hide): New command to hide a floating X window. * exwm-workspace.el: Fix a compile warning.
2016-02-24 Refresh the workspace after creating a floating X windowChris Feng1-0/+2
* exwm-floating.el (exwm-floating--set-floating): Refresh the workspace (since auto-refresh was disabled).
2016-02-24 Fix issues with moving X windows between workspacesChris Feng1-38/+56
* exwm-workspace.el (exwm-workspace-move-window): Select the moved floating X window. Update the 'exwm-selected-window' frame parameter. (exwm-workspace-switch): Check 'exwm-selected-window' for dead windows. (exwm-workspace-switch-to-buffer): Allow non-interactive call.
2016-02-23 Make input focus revert to pointer rootChris Feng1-1/+2
* exwm-input.el (exwm-input--set-focus): Input focus should not revert to parent (which was the Emacs frame) any more.
2016-02-22 Bump version to 0.3Chris Feng1-2/+2
2016-02-21 Fix emacsclient related issuesChris Feng5-16/+15
* exwm-systemtray.el (exwm-systemtray-height): The value is not available when emacsclient has just loaded the library (and it crashes emacsclient). * exwm-workspace.el (exwm-workspace--init): Set `default-minibuffer-frame' later to prevent it from being modified when using emacsclient. * exwm-floating.el: * exwm-randr.el: * exwm-systemtray.el: * exwm-workspace.el: * exwm.el: Use `exwm-workspace--minibuffer-own-frame-p' instead of the raw variable.
2016-02-21 Various fixes for floating X windowsChris Feng2-25/+91
* exwm-floating.el (exwm-floating--set-floating): Always create floating X windows on current workspace. * exwm-workspace.el (exwm-workspace-switch): Restore selected floating frames. * exwm-workspace.el (exwm-workspace-move-window): Restore the position of floating X windows. Recreate floating frames when using fixed minibuffer. Restack tiling X windows.
2016-02-21 Fix the advice function for ido-buffer-window-other-frameChris Feng1-13/+30
* exwm-config.el (exwm-config--ido-buffer-window-other-frame) (exwm-config--fix/ido-buffer-window-other-frame): Do not use advice. Fix issues when switching form/to floating frames.
2016-02-20 Prevent Emacs frames from restacking themselvesChris Feng5-121/+192
Putting Emacs frames (workspace frames, floating frames) into dedicated containers greatly simplifies the stacking order management and totally fixes relevant issues. * exwm-floating.el (exwm-floating--set-floating): Create floating frame container. Remove redundant stacking order modification code. (exwm-floating--unset-floating): Destroy the floating frame container. No need to reparent the X window container. (exwm-floating--do-moveresize): Resize the floating frame container. * exwm-input.el (exwm-input--update-focus): No need to restack frames. * exwm-layout.el (exwm-layout--show, exwm-layout--set-frame-fullscreen) (exwm-layout-enlarge-window): Resize the floating frame container. * exwm-manage.el (exwm-manage--on-ConfigureRequest): Re-enable stacking order modification on ConfigureRequest. * exwm-workspace.el (exwm-workspace--confirm-kill-emacs): Reparent out all frames on exit. No need to remove selected events or created resources. (exwm-workspace--init): Create workspace frame containers. * exwm-layout.el (exwm-layout-set-fullscreen): * exwm-manage.el (exwm-manage--unmanage-window): Remove a redundant call to `xcb:flush'. * exwm-manage.el (exwm-manage--unmanage-window): Force unmap the X window. Unmap the floating frame before reparent it.
2016-02-20 Prevent/Reduce flickering issues with floating X windowsChris Feng3-29/+78
* exwm-floating.el (exwm-floating--set-floating) (exwm-floating--unset-floating): Prevent flickering when creating/removing a floating X window. * exwm-layout.el (exwm-layout--show): Show X windows after resizing to prevent flickering. * exwm-manage.el (exwm-manage--unmanage-window): Reduce flickering by hiding the container. (exwm-manage--kill-buffer-query-function): Prevent flickering by hiding the container (except that the X window destroys itself after receiving the WM_DELETE_WINDOW client message).
2016-02-20 Redefine mode-specific keysChris Feng1-6/+6
* exwm-core.el (exwm-mode-map): Redefine mode-specific keys to comply with the key binding conventions.
2016-02-19 Merge branch 'feat/systemtray' into externals/exwmChris Feng10-71/+516
A simple system tray based on the X11 'System Tray' and XEmbed protocol.
2016-02-19 Minor fixes for system trayChris Feng1-9/+12
* exwm-systemtray.el (exwm-systemtray--embed): Default to visible if the XEMBED_MAPPED flag is not set. (exwm-systemtray--on-ClientMessage): Only embed new icons. Ignore balloon messages.
2016-02-19 Fix system tray issues after updating workspacesChris Feng10-90/+159
* exwm-workspace.el (exwm-workspace-switch-hook): New hook run by `exwm-workspace-switch'. * exwm-randr.el (exwm-randr-refresh-hook): New hook run by `exwm-randr--refresh'. * exwm-systemtray.el (exwm-systemtray--on-randr-refresh) (exwm-systemtray--on-workspace-switch, exwm-systemtray--init): Update the system tray in `exwm-randr-refresh-hook' and `exwm-workspace-switch-hook'. * exwm-layout.el (exwm-layout--set-frame-fullscreen): * exwm-workspace.el (exwm-workspace--post-init): Wait until all workspace frames are set fullscreen. * exwm-workspace.el (exwm-workspace--current-width) (exwm-workspace--current-height): New functions for retrieving the width and height of the current workspace. * exwm-layout.el (exwm-layout-set-fullscreen): * exwm-manage.el (exwm-manage--manage-window) (exwm-manage--on-ConfigureRequest): * exwm-systemtray.el (exwm-systemtray--refresh, exwm-systemtray--init): * exwm-workspace.le (exwm-workspace--resize-minibuffer-frame) (exwm-workspace--on-ConfigureNotify): Switch to `exwm-workspace--current-width' and `exwm-workspace--current-height'. * exwm-core.el: * exwm-floating.el: * exwm-floating.el: * exwm-input.el: * exwm-layout.el: * exwm-manage.el: * exwm-randr.el: * exwm-systemtray.el: * exwm-workspace.el: * exwm.el: Clean up loading file. Set/Unset some functions as commands. * README.md: Add intro to system tray.
2016-02-19 Add system tray supportChris Feng2-4/+377
* exwm-systemtray.el: New module adds a simple system tray (using the X11 System Tray protocol). * exwm-workspace.el (exwm-workspace-switch-hook, exwm-workspace-switch): New hook run after switching workspace.
2016-02-18 Fix floating X window bugs introduced by 9c95c03eChris Feng4-114/+137
* exwm-floating.el (exwm-floating--set-floating): Make floating frames invisible before resizing them. (exwm-floating--fit-frame-to-window): Removed since unused. * exwm-layout.el (exwm-layout-hide-mode-line, exwm-layout-show-mode-line): Use set frame height instead of exwm-floating--fit-frame-to-window. * exwm-core.el (exwm-mode): Replace `exwm-manage--close-window' with `exwm-manage--kill-buffer-query-function'. * exwm-floating.el (exwm-floating--unset-floating): Reparent out floating frames. * exwm-manage.el (exwm-manage--unmanage-window): Reparent out floating frames. Hide floating frames. (exwm-manage--close-window, exwm-manage--kill-buffer-query-function): Rename `exwm-manage--close-window' since it's only used in `kill-buffer-query-functions'. Reparent out floating frames.
2016-02-12 Bump version to 0.2Chris Feng1-2/+2
2016-02-12 Postpone making workspace frames fullscreenChris Feng2-5/+9
* exwm-workspace.el (exwm-workspace--init, exwm-workspace--post-init): Move work to postpone to the new function `exwm-workspace--post-init'. * exwm.el (exwm-init): Call `exwm-workspace--post-init' after `exwm--unlock`.
2016-02-09 Fix bugs on managing/unmanaging X windowsChris Feng2-10/+27
* exwm-manage.el (exwm-manage--scan): Unmap X windows before managing them. (exwm-manage--on-UnmapNotify): Do not ignore synthetic UnmapNotify events (according to ICCCM). Do not use the `from-configure' slot which was mistakenly introduced due to the bug in `exwm-manage--scan'. * exwm-workspace.el (exwm-workspace--confirm-kill-emacs): Do more cleanups.
2016-02-07 Eliminate compilation warningsChris Feng4-0/+5
2016-02-07 Unmanage X windows on exitChris Feng2-8/+18
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs): New function called on exit to unmanage X windows. (exwm-workspace--init): Set `confirm-kill-emacs' to `exwm-workspace--confirm-kill-emacs'. * exwm-manage.el (exwm-manage--on-UnmapNotify): Ignore UnmapNotify event generated as a result of parent being resized.
2016-02-07 Add some useful key bindingsChris Feng4-33/+49
* exwm-core.el (exwm--floating-mode-line-format, exwm--mode-line-format) (exwm-mode-map): * exwm-floating.el (exwm-floating-hide-mode-line) (exwm-floating-show-mode-line): * exwm-layout.el (exwm-layout-hide-mode-line, exwm-layout-show-mode-line) (exwm-layout-toggle-mode-line): Allow hide/show mode-line for all `exwm-mode' buffers with 'C-c M'. * exwm-config.el (exwm-config-default): Add simulation keys for 'C-d' and 'C-k'.
2016-02-07 Remove an assertionChris Feng1-35/+36
* exwm-randr.el (exwm-randr--refresh): There can be no valid output sometimes.
2016-02-07 Merge branch 'fjl-fix-resize-minibuffer'Chris Feng4-10/+17
2016-02-06 Resize minibuffer only when it's in its own frameFelix Lange4-10/+17
0e4055d3392 introduced a few calls to exwm-workspace--resize-minibuffer in various places. This function only works when the minibuffer is displayed in its own frame but was called unconditionally in some cases. Fix it by wrapping all calls in an appropriate conditional and add an assertion. Also rename the function so it is clearer that it resizes a frame, which might prevent calling it unconditionally in the future.
2016-02-06 Improve bc80eefeChris Feng4-27/+37
* exwm-layout.el (exwm-layout--set-frame-fullscreen): * exwm-randr.el (exwm-randr--refresh): * exwm-workspace.el (exwm-workspace--resize-minibuffer): (exwm-workspace-switch): * exwm.el (exwm--on-ClientMessage): Calling `exwm-workspace-switch' in bc80eefe does not work correctly sometimes. This commit improves it by directly specify the geometry info rather than getting it from Emacs frame.
2016-02-06 Fix multi-monitor/fullscreen issuesChris Feng2-4/+17
* exwm-randr.el (exwm-randr--refresh): Correct the _NET_WORKAREA property. Reconfigure the current workspace when screen changes. (exwm-randr--init): Run `exwm-randr-screen-change-hook' to take into account already attached monitor(s), * exwm.el (exwm--on-ClientMessage): Reconfigure the current workspace when it's fullscreen.