about summary refs log tree commit diff
AgeCommit message (Collapse)AuthorFilesLines
2016-08-10 Adapt for the changes in `window-configuration-change-hook'Chris Feng1-4/+10
* exwm-layout.el (exwm-layout--refresh): Accept frame as an optional argument. (exwm-layout--init): Add `exwm-layout--refresh' to `window-size-change-functions' when appropriate.
2016-08-09 Update timestamp for WM_TAKE_FOCUS ClientMessageChris Feng4-34/+112
* exwm-input.el (exwm-input--timestamp-window) (exwm-input--timestamp-atom, exwm-input--timestamp-callback): New variables for updating timestamp. (exwm-input--set-focus): Send WM_TAKE_FOCUS ClientMessage with updated timestamp. (exwm-input--update-timestamp): New utility function for fetching timestamp. (exwm-input--on-PropertyNotify): New function for handling PropertyNotify event to extract the timestamp. (exwm-input--init): Create resources for updating timestamp; attach the event listener. (exwm-input--on-ButtonPress, exwm-input--on-KeyPress): * exwm.el (exwm--on-PropertyNotify): No longer update timestamp. * exwm-input.el (exwm-input--set-focus): Avoid setting input focus on already focused X windows, or when the input focus in not on a Emacs frame if globally active model is in use. * exwm-floating.el (exwm-floating--set-floating): * exwm-workspace.el (exwm-workspace-move-window) (exwm-workspace--add-frame-as-workspace, exwm-workspace--init): Set 'exwm-id' frame parameter as the numerical (inner) frame X ID.
2016-08-09 Fix coordinates calculations concerning workspacesChris Feng2-22/+20
* exwm-floating.el (exwm-floating--set-floating) (exwm-floating--do-moveresize): * exwm-manage.el (exwm-manage--manage-window): Use the computed workareas rather than RandR output geometries.
2016-08-09 Ensure floating hooks are run in the right contextChris Feng1-4/+8
* exwm-floating.el (exwm-floating-setup-hook, exwm-floating-exit-hook): Fix doc string. (exwm-floating--set-floating, exwm-floating--unset-floating): Set the context.
2016-08-07 Set background pixmap for system tray embedderChris Feng1-16/+27
* exwm-systemtray.el (exwm-systemtray--init): Make embedder use the same depth and pixmap of the parent; the parent is always a Emacs frame.
2016-08-06 * exwm-layout.el (exwm-layout--show): Fix the position of floatingChris Feng1-15/+23
X windows.
2016-08-06 Avoid setting input focus on workspace containersChris Feng1-11/+34
* exwm-input.el (exwm-input--on-FocusIn): Set input focus to the workspace frame when input focus is received by a workspace container. (exwm-input--on-workspace-list-change): Select FocusChange event mask on workspace containers. (exwm-input--init): Attach the event listener; adapt function calls.
2016-08-01 Fix emacsclient issuesChris Feng3-32/+42
* exwm-workspace.el (exwm-workspace--client-p): New function for testing emacsclient frames. (exwm-workspace--update-minibuffer-height) (exwm-workspace--on-minibuffer-setup) (exwm-workspace--on-minibuffer-exit, exwm-workspace--on-echo-area-dirty) (exwm-workspace--on-echo-area-clear): * exwm-input.el (exwm-input--on-buffer-list-update) (exwm-input--on-minibuffer-setup): * exwm-layout.el (exwm-layout--on-minibuffer-setup) (exwm-layout--on-echo-area-change): Use it. * exwm-workspace.el (exwm-workspace--add-frame-as-workspace): Always clear the 'client' frame parameter. (exwm-workspace--init): Fix a typo.
2016-08-01 Fix restarting issuesChris Feng2-23/+59
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs): Prompt for unsaved files before restarting; avoid running `server-force-stop' early; restore the 'client' frame parameter before calling `exwm--exit'; correctly handle emacsclient. * exwm.el (exwm-restart): Always kill subordinate Emacs instances.
2016-07-31 Bump version to 0.8Chris Feng1-2/+2
2016-07-31 ; Eliminate compile warningsChris Feng2-5/+10
2016-07-31 Fix restarting issuesChris Feng2-11/+12
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs): * exwm.el (exwm-restart): Run `kill-emacs-hook' early; do not check for X windows before restarting.
2016-07-30 Add restart supportChris Feng5-43/+87
* exwm-input.el (exwm-input--exit): Cancel timers. * exwm-manage.el (exwm-manage--manage-window): Add reparented X windows to save-set. * exwm-systemtray.el (exwm-systemtray--embed): Add embeded icons to save-set. * exwm-workspace.el (exwm-workspace--confirm-kill-emacs): No need to unmanage; also hide Emacs frames; always call `exwm--exit'. * exwm.el (exwm-restart): New command for restarting EXWM. (exwm--exit-icccm-ewmh): New function for cleaning up ICCCM/EWMH properties. (exwm-exit-hook): Update doc string. (exwm--exit): Call `exwm--exit-icccm-ewmh' and do not reset variables.
2016-07-30 ; * exwm.el (exwm-enable): Ignore unrecognized command line arguments.Chris Feng1-0/+3
2016-07-30 ; * exwm-workspace.el (exwm-workspace-switch): Input focus should be setChris Feng1-1/+1
; on the frame where the target window resides.
2016-07-30 Merge branch 'uemurax/reset-fullscreen-frame-count' into externals/exwmChris Feng1-0/+1
2016-07-30 set fullscreen-frame-count to 0 on exitingTaichi Uemura1-0/+1
2016-07-30 Fit the *Completions* bufferChris Feng2-2/+13
* exwm-workspace.el (exwm-workspace--on-minibuffer-setup): Work around the *Completions* buffer not getting fitted problem. * exwm.el (exwm-enable): Enable `window-resize-pixelwise'.
2016-07-30 Exit the active minibuffer on unmanaging X windowsChris Feng1-8/+20
* exwm-manage.el (exwm-manage--unmanage-window): Exit the minibuffer as a precaution to prevent the "selecting deleted buffer" error.
2016-07-30 ; * exwm-manage.el (exwm-manage--manage-window): Check the value rangeChris Feng1-1/+5
; of _NET_WM_DESKTOP.
2016-07-30 Grab global keys on newly created workspacesChris Feng1-2/+13
* exwm-input.el (exwm-input--update-global-prefix-keys): Label grabbed workspaces and re-grab keys only when keys change or there are newly created workspaces. (exwm-input--init, exwm-input--exit): Use the function in `exwm-workspace-list-change-hook'.
2016-07-30 Fix input focus transfer between workspacesChris Feng2-17/+10
* exwm-input.el (exwm-input--set-focus): Make input focus revert to parent by default (to prevent input focus from following pointer). * exwm-input.el (exwm-input--update-focus): Switch to another workspace if input focus is transfered to it. * exwm-workspace.el (exwm-workspace--on-focus-in, exwm-workspace--init) (exwm-workspace--exit): Remove `exwm-workspace--on-focus-in' and related uses.
2016-07-29 ; * exwm-floating.el (exwm-floating--unset-floating): Reposition an XChris Feng1-0/+8
; window when it changes from floating to tiling layout.
2016-07-29 Sync with XELBChris Feng2-20/+36
* exwm-input.el (exwm-input--update-global-prefix-keys) (exwm-input--on-KeyPress-line-mode, exwm-input--on-KeyPress-char-mode) (exwm-input--fake-key, exwm-input--init): Sync with XELB. * exwm-input.el (exwm-input--on-KeyPress) (exwm-input--on-KeyPress-line-mode): Resend XKB events with SendEvent since AllowEvents in ReplayKeyboard mode doesn't seem to work.
2016-07-27 Bump version to 0.7Chris Feng1-1/+1
2016-07-26 Always update input focus on entering minibufferChris Feng2-3/+8
* exwm-input.el (exwm-input--on-minibuffer-setup): New function for setting input focus on the workspace frame. (exwm-input--init): Add the function to `minibuffer-setup-hook'. * exwm-workspace.el (exwm-workspace--on-minibuffer-setup): Avoid setting input focus here.
2016-07-26 Add an option to force using tiling layoutChris Feng1-3/+10
* exwm-manage.el (exwm-manage-force-tiling): New variable indicating whether X windows should always be managed in tiling layout. (exwm-manage--manage-window): Add a condition.
2016-07-25 Bump version to 0.6Chris Feng1-2/+2
2016-07-25 Minor fixes for past few commitsChris Feng2-5/+4
* exwm-input.el (exwm-input--unread-event): Temporarily disable it due to bug#23980. * exwm-workspace.el (exwm-workspace--init): Set the default frame internal border to 0. * exwm-workspace.el (exwm-workspace--remove-frame-as-workspace): Fix a typo.
2016-07-22 ; * exwm-input.el: Prevent moving/resizing a tiling X window.Chris Feng1-23/+31
2016-07-22 Fix issues with deleting the last workspaceChris Feng1-8/+10
* exwm-workspace.el (exwm-workspace-delete): Prevent deleting the last workspace. * exwm-workspace.el (exwm-workspace--remove-frame-as-workspace): Create a new workspace if the last one is deleted.
2016-07-22 Add minibuffer toggle commandChris Feng2-6/+13
* exwm-workspace.el (exwm-workspace-toggle-minibuffer): Add minibuffer toggle command. * exwm-core.el (exwm-mode-menu, exwm-mode-map): Substitute minibuffer attach/detach commands with minibuffer toggle command. * exwm-workspace.el (exwm-workspace-toggle-minibuffer): Insert various auto load cookies.
2016-07-21 Improve the performance of workspace creationChris Feng1-5/+9
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace): Do not run `exwm-workspace-list-change-hook' when create workspace in the background. (exwm-workspace-switch-create): Run the hook once. (exwm-workspace--prompt-add): Run the hook.
2016-07-21 Fix input focus issues revealed by recent commitsChris Feng3-27/+57
* exwm-input.el (exwm-input--update-focus-window) (exwm-input--on-buffer-list-update, exwm-input--update-focus-interval) (exwm-input--update-focus-lock, exwm-input--update-focus-defer-timer) (exwm-input--update-focus-timer, exwm-input--update-focus-defer) (defun exwm-input--update-focus): Rework the input focus update mechanism, mainly to overcome the input focus update contention. * exwm-input.el (defun exwm-input--update-focus): Use `select-window' instead of `exwm-workspace-switch'; calling the latter is too expensive. * exwm-layout.el (exwm-layout--on-minibuffer-setup): Drop a unnecessary line. * exwm-workspace.el (exwm-workspace-switch): Set input focus to the new workspace frame.
2016-07-21 Fix workspace creation and deletionChris Feng3-43/+96
* exwm-workspace.el (exwm-workspace-switch) (exwm-workspace-switch-create): Move support for creating missing workspaces from the former to the latter.. (exwm-workspace-switch-create-limit): New variable limiting the number of new workspaces allowed to create each time. * exwm-workspace.el (exwm-workspace--prompt-add) (exwm-workspace--prompt-delete): New commands for adding and deleting workspaces from the `read-from-minibuffer' prompt. (exwm-workspace--prompt-add-allowed) (exwm-workspace--prompt-delete-allowed): New variables telling whether the above two commands are allowed to run. (exwm-workspace--switch-map): Change "+" / "-" to use the new commands. * exwm-workspace.el (exwm-workspace-switch, exwm-workspace-swap) (exwm-workspace-move-window): Use this new feature. * exwm-workspace.el (exwm-workspace-add, exwm-workspace-delete): Since they are not used by the keymap any more, drop the use of idle timer. * exwm-workspace.el (exwm-workspace--create-silently): New variable indicating whether new workspaces should be created in the background. (exwm-workspace--add-frame-as-workspace): Support creating new workspaces in the background. * exwm-workspace.el (exwm-workspace--on-ConfigureNotify): Update workareas if it's not up to date. * exwm-randr.el (exwm-randr--refresh): Raise the standalone minibuffer when refreshed. * exwm-config.el (exwm-config-default): Add `exwm-workspace-number' and `exwm-workspace-switch-create'.
2016-07-21 Minor fixesChris Feng2-4/+24
* exwm-core.el (exwm-mode-menu, exwm-mode-map): Add workspace attach/detach commands. * exwm-workspace.el (exwm-workspace--add-frame-as-workspace): Cleanup containers. * exwm-workspace.el (exwm-workspace--update-ewmh-props): Create the frame in size 1x1 (Lucid build does no support zero sized frames). * exwm-workspace.el (exwm-workspace--post-init): Reset the 'fullscreen' frame parameter for emacsclient.
2016-07-21 Minor cleanupsChris Feng6-34/+25
; Eliminate compile warnings. ; Rename frame parameter 'exwm--urgency' to 'exwm-urgency'. ; Simplify expressions.
2016-07-19 Add support for attachable/detachable minibufferChris Feng2-59/+113
* exwm-workspace.el (exwm-workspace--update-minibuffer-height): Renamed from `exwm-workspace--update-minibuffer' to better reflect its usage. * exwm-input.el (exwm-input--update-focus): Directly put the floating X window at top since the minibuffer is no longer a sibling. * exwm-workspace.el (exwm-workspace--resize-minibuffer-frame): Calculate position in absolute coordinate; put minibuffer at bottom by default; resize the minibuffer frame with ConfigureWindow rather than `set-frame-width'. (exwm-workspace-switch): No need to reparent minibuffer any more. (exwm-workspace--on-ConfigureNotify): Calculate position in absolute coordinate. (exwm-workspace--show-minibuffer, exwm-workspace--hide-minibuffer): Show/Hide the minibuffer by adjusting the stacking order rather than mapping/unmapping. (exwm-workspace--init): Map the minibuffer frame container on creation. * exwm-workspace.el (exwm-workspace--minibuffer-attached-p): New function telling whether the minibuffer is attached. (exwm-workspace--attached-minibuffer-height): New variable storing the height of the attached minibuffer. (exwm-workspace-attach-minibuffer, exwm-workspace-detach-minibuffer): New functions for attaching/detaching the minibuffer. * exwm-workspace.el (exwm-workspace--show-minibuffer): Remove the workaround for minibuffer cursor (seems fixed).
2016-07-19 Fix an bug for emacsclientChris Feng1-8/+4
* exwm-workspace.el (exwm-workspace--init): Always create one initial workspace by default.
2016-07-19 Fix a workspace switch issueChris Feng1-4/+10
* exwm-workspace.el (exwm-workspace--switch-map-nth-prefix): Add more checking conditions.
2016-07-19 Merge branch 'medranocalvo/dynamic-workspaces' into externals/exwmChris Feng11-293/+626
2016-07-19 Mention dynamic workspace in various placesChris Feng3-15/+23
* README.md: * exwm.el: Update README and comments. * exwm-core.el (exwm-mode-menu exwm-mode-map): Add menu entries for dynamic workspace feature.
2016-07-19 Adapt dynamic workspace for RandR moduleChris Feng2-6/+15
* exwm-workspace.el (exwm-workspace-list-change-hook): New hook run when the workspace list is modified. * exwm-randr.el (exwm-randr--init, exwm-randr--exit): * exwm-workspace.el (exwm-workspace-swap, exwm-workspace-move) (exwm-workspace--add-frame-as-workspace) (exwm-workspace--remove-frame-as-workspace): Use it.
2016-07-19 Adapt dynamic workspace for floating moduleChris Feng1-7/+13
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace): Fix the checking criteria of floating frames; Copy RandR frame parameters from the first workspace frame (rather than the selected one which can be a floating frame). * exwm-workspace.el (exwm-workspace--remove-frame-as-workspace): Check frame type first.
2016-07-19 Improve the handling of workspacesChris Feng2-10/+76
* exwm-workspace.el (exwm-workspace--prompt-for-workspace): Add an optional argument to modify prompt. (exwm-workspace-switch, exwm-workspace-swap) (exwm-workspace-move, exwm-workspace-move-window): Use it. * exwm-workspace.el (exwm-workspace-number): Re-introduce the variable (now it stands for the initial workspace number). (exwm-workspace--init): Create remaining initial workspaces. * exwm-workspace.el (exwm-workspace-add, exwm-workspace-delete): New commands for adding/deleting workspaces. (exwm-workspace--switch-map): Add "+"/"-" to increase/descrease workspace number. * exwm-workspace.el (exwm-workspace-switch): Automatically add missing workspaces. * exwm.el (exwm--on-ClientMessage): Support _NET_NUMBER_OF_DESKTOPS client message for adjusting workspace number.
2016-07-19 Fix various minor issuesChris Feng4-54/+102
; Coding style fixes * exwm-core.el (exwm-mode-menu exwm-mode-map): Use `exwm-workspace--count'. * exwm-workspace.el (exwm-workspace--set-fullscreen) (exwm-workspace--on-focus-in, exwm-workspace--set-desktop): Use `exwm-workspace--position'. * exwm-workspace.el (exwm-workspace-swap, exwm-workspace-move): Renamed from `exwm-workspace-swap-workspace' and `exwm-workspace-move-workspace'. * exwm-workspace.el (exwm-workspace--update-ewmh-props): Update comments. * exwm-workspace.el (exwm-workspace--switch-map-nth-prefix): Fix a calculation. * exwm-workspace.el (exwm-workspace-switch): Fix a potential timer problem. * exwm-workspace.el (exwm-workspace-swap, exwm-workspace-move) (exwm-workspace--remove-frame-as-workspace): Update workspace and clients involved. * exwm-workspace.el (exwm-workspace--remove-frame-as-workspace): Remove workspace first.
2016-07-18 Fix 2 dock-related issuesChris Feng2-13/+29
* exwm-floating.el (exwm-floating--set-floating): Add a workaround to prevent accidental move of Emacs frame when struts are set. * exwm-workspace.el (exwm-workspace--update-workareas): Make legacy docks working.
2016-07-18 * exwm-workspace.el (exwm-workspace--init): Rebalance parentheses.Chris Feng1-2/+2
2016-07-17 Remove `exwm-worspace-number'Adrián Medraño Calvo2-37/+64
No longer fill initial workspace list, nor limit the number of workspaces to `exwm-worspace-number'. Users are free to create as many as they like by hitting 'C-x 5 2' or running `make-frame'. The initial workspace list can be set up by creating frames in a configuration file. For example, to start up with 4 workspaces: (dolist (i 3) (make-frame)) The interactive workspace switcher is improved to support selecting workspaces with a many-digits position. * exwm-workspace.el (exwm-workspace-number): Remove variable, as we no longer have a fixed number of workspaces. (exwm-workspace--switch-map) (exwm-workspace--switch-map-nth-prefix) (exwm-workspace--switch-map-select-nth): Improve support for selecting workspaces with multiple-digit positions (e.g. workspace number 12). (exwm-workspace--add-frame-as-workspace, exwm-workspace--init): Remove limit on number of workspaces. (exwm-workspace--init): Stop creating workspaces at startup. * exwm-config.el (exwm-config-default): Bind keys to namespaces 0-9 in the default configuration.
2016-07-17 Support adding and removing workspacesAdrián Medraño Calvo1-145/+223
Frames created via `make-frame' are added to the workspace list; `delete-frame' removes them from the list. Floating frames, non-graphical frames, as well as those associated to different displays are ignored. When deleting a workspace, care is taken to reparent that all X clients another workspace. * exwm-workspace.el (exwm-workspace--add-frame-as-workspace) (exwm-workspace--remove-frame-as-workspace): New functions that intercept created and deleted frames and configure them as EXWM workspaces. (exwm-workspace--update-ewmh-props): New function to update desktop-related EWMH properties after workspace changes. (exwm-workspace--init): Use `exwm-workspace--add-frame-as-workspace' to create the initial workspaces.