about summary refs log tree commit diff
path: root/exwm-core.el (unfollow)
AgeCommit message (Collapse)AuthorFilesLines
2015-10-28 Make the creation/destruction of floating frames more silentChris Feng2-11/+16
* exwm-floating.el (exwm-floating--set-floating): Reparent floating frames as late as possible. * exwm-manage.el (exwm-manage--unmanage-window): Hide floating frames first on unmanagement.
2015-10-28 Minor input focus fixChris Feng1-1/+1
* exwm-input.el (exwm-input--on-buffer-list-update): Schedule input focus switch with idle timer.
2015-10-27 Delay closing minibufferChris Feng1-3/+2
* exwm-workspace.el (exwm-workspace-switch, exwm-workspace--on-focus-in): Delay closing minibuffer until Emacs is idle. This prevent nonlocal exits from interrupting remaining code.
2015-10-26 Fix problems introduced/exposed by last commitChris Feng4-30/+32
* exwm-workspace.el (exwm-workspace-switch, exwm-workspace--on-focus-in): Use handle-switch-frame instead of exwm-workspace--switch-count to filter out events. * exwm-workspace.el (exwm-workspace--init): Delay making workspaces fullscreen. * exwm-workspace.el (exwm-workspace-move-window): * exwm-floating.el (exwm-floating--set-floating): * exwm-layout.el (exwm-layout--refresh): `set-buffer-major-mode` does not accept buffer names.
2015-10-25 Fix workspace switch issuesChris Feng2-6/+10
* exwm-core.el (exwm--make-emacs-idle-for): Removed. * exwm-workspace.el (exwm-workspace--switch-count): New variable. (exwm-workspace-switch): Increase exwm-workspace--switch-count when necessary; Remove the call to exwm--make-emacs-idle-for. (exwm-workspace--on-focus-in): Consume exwm-workspace--switch-count. * exwm-workspace.el (exwm-workspace--on-focus-in): Close active minibuffer.
2015-10-19 Close the (possible) active minibuffer when switching workspaceChris Feng1-0/+2
* exwm-workspace.el (exwm-workspace-switch): An active minibuffer on another workspace might cause problems for input. Closing it should be sufficient.
2015-10-17 Allow certain commands to receive key events in line-modeChris Feng1-0/+8
* exwm-input.el (exwm-input-command-whitelist): New variable. (exwm-input--on-KeyPress-line-mode): Allow certain commands which receive inputs without using the minibuffer to work in line-mode.
2015-10-11 Improve robustnessChris Feng1-2/+9
* exwm-input.el (exwm-input--update-focus, exwm-input--on-ButtonPress): Make sure Emacs windows are alive before manipulating them.
2015-10-10 Restrict the check of _MOTIF_WM_HINTSChris Feng1-2/+5
* exwm-manage.el (exwm-manage--manage-window): Restrict the check of _MOTIF_WM_HINTS to only Java applications (since some other applications like Evince would also set it).
2015-10-01 Fix a position calculation error on multi-monitor settingsChris Feng1-2/+9
* exwm-floating.el (exwm-floating--set-floating): Always use relative positions.
2015-09-27 Work around subrs that block EXWM; other minor fixesChris Feng7-72/+158
Some subrs (e.g. x-file-dialog) create X windows and block the execution of EXWM, so they won't work normally. This commit partly fixes this issue by invoking them in a subordinate Emacs instance and trying to fetch the result back. * exwm.el (exwm-blocking-subrs): New variable for specify such subrs. * exwm.el (exwm-enable, exwm--server-name, exwm--server-stop) (exwm--server-eval-at): The implementation. * exwm-core.el: * exwm-floating.el: * exwm-layout.el: * exwm-manage.el: * exwm-randr.el: Evaluate constants at compile-time. * README.md: Renamed from README.org to make the 'Commentary:' section used by GNU ELPA instead. * exwm.el: Depends on XELB version 0.3.
2015-09-25 Fix click-to-focus on multi-monitor settingsChris Feng1-1/+15
* exwm-input.el (exwm-input--on-ButtonPress): [click-to-focus] Switch to the corresponding workspace if necessary.
2015-09-24 Fix a calculation error of the position of a floating frameChris Feng1-2/+2
* exwm-floating.el (exwm-floating--set-floating): The position of a floating frame should be relative to its workspace.
2015-09-23 Adjust default prefix keys; advice x-create-frameChris Feng3-7/+15
* exwm-input.el (exwm-input--on-KeyPress-line-mode, exwm-input-prefix-keys): Allow users to disable 'C-c' prefixed keys; Add 'C-c' to / remove 'M-!' from the default prefix keys. * exwm-workspace.el (exwm-workspace--x-create-frame, exwm-workspace--init): Advice `x-create-frame' to prevent it from hanging EXWM, making e.g. speedbar working. * exwm-floating.el (exwm-floating--set-floating): Remove the now unnecessary request that sets override-redirect on floating frames.
2015-09-21 Minor fixes for packagingChris Feng4-13/+18
* .gitignore: Add ELPA files. * exwm-workspace.el: Autoload exwm-workspace-switch. * README.org: Renamed from README.md; add an installation note.
2015-09-20 Fix input & input focus issuesChris Feng2-27/+37
* exwm-manage.el (exwm-manage--manage-window): Only grab left/middle/right buttons. * exwm-input.el (exwm-input--on-ButtonPress): Only perform click-to-focus on unfocused X windows. * exwm-input.el (exwm-input--update-focus): Do not focus an X window on another workspace, but instead keep focusing on the current one and set exwm--urgency parameter on that frame. * exwm-input.el (exwm-input--fake-key): Send KeyRelease event (some applications reply on it).
2015-09-19 Manage non-floating windows without decorationsChris Feng1-3/+9
* exwm-manage.el (exwm-manage--manage-window): Should manage non-floating windows without decorations.
2015-09-19 Check _MOTIF_WM_HINTS when attempting to manage an X windowChris Feng2-5/+35
* exwm-core.el: New buffer-local variable exwm--mwm-hints. * exwm-manage.el: New variable exwm--atom-_MOTIF_WM_HINTS for holding the value of _MOTIF_WM_HINTS atom; new function exwm--update-mwm-hints for updating the _MOTIF_WM_HINTS property of an X window. * exwm-manage.el (exwm-manage--init): Intern the _MOTIF_WM_HINTS atom. * exwm-manage.el (exwm-manage--manage-window): Avoid managing windows without decoration (implied by _MOTIF_WM_HINTS).
2015-09-19 Avoid autoloading variablesChris Feng3-2/+2
* exwm-floating.el: * exwm-layout.el: Avoid autoloading exwm-floating-border-width. * exwm-workspace.el: Avoid autoloading exwm-workspace--switch-history-outdated.
2015-09-18 Prevent Emacs cursor style change when pointer is in an X windowChris Feng1-0/+15
* exwm-input.el (exwm-input--on-KeyPress-char-mode): Compensate FocusOut event by sending a synthetic FocusIn event to prevent the change of cursor style (e.g. box to hollow) when pointer is in an X window.
2015-09-18 Fix a compilation warningChris Feng1-0/+1
* exwm-floating.el: Autoload exwm-floating-border-width.
2015-09-18 Fix wrong/missing ConfigureNotify eventsChris Feng2-11/+57
* exwm-floating.el (exwm-floating--set-floating): Set exwm--floating-edges as absolute edges (the relative edges can be easily determined). * exwm-layout.el (exwm-layout--show): Send correct absolute positions to floating X windows. * exwm-floating.el (exwm-floating--stop-moveresize, exwm-floating-move): Send ConfigureNotify events after moving floating X windows.
2015-09-17 On-demand update exwm-workspace--switch-historyChris Feng4-38/+47
* exwm-workspace.el (exwm-workspace--switch-history-outdated) (exwm-workspace--update-switch-history, exwm-workspace-switch) (exwm-workspace-move-window): * exwm.el (exwm--update-hints, exwm--on-ClientMessage): * exwm-floating.el (exwm-floating--set-floating): * exwm-manage.el (exwm-manage--manage-window, exwm-manage--unmanage-window): Update exwm-workspace--switch-history only when it's used.
2015-09-16 Allow showing buffers on other workspaces and moving an X window by switchingChris Feng4-33/+58
to its buffer * exwm-workspace.el (exwm-workspace-show-all-buffers, exwm-workspace-switch) (exwm-workspace-move-window, exwm-workspace-switch-to-buffer): Show buffers on other workspaces if `exwm-workspace-show-all-buffers' is non-nil. * exwm-layout.el (exwm-layout-show-all-buffers, exwm-layout--refresh): Allow moving an X window by switch to its corresponding buffer from another workspace when `exwm-layout-show-all-buffers' is non-nil. * exwm.el (exwm--ido-buffer-window-other-frame): Handle the case when `exwm-layout-show-all-buffers' is non-nil. * exwm-floating.el (exwm-floating--set-floating): Handle the case when *scratch* buffer is killed. * exwm-workspace.el (exwm-workspace-switch-to-buffer): Renamed from `exwm-workspace-switch-to-window' to better reflect its role.
2015-09-11 Fix with-slotsChris Feng1-4/+4
* exwm-randr.el (exwm-randr--refresh): Could not set the name slot in xcb:randr:GetOutputInfo~reply, turn to another variable.
2015-09-11 Minor fix for window moveChris Feng1-1/+1
* exwm-workspace.el (exwm-workspace-move-window): Move to selected instead of the first window of a frame (workspace).
2015-09-11 Implement move/resize with keyboardChris Feng2-8/+123
* exwm-floating.el: Remove an invalid TODO item. * exwm-floating.el (exwm-floating--set-floating) (exwm-floating-hide-mode-line, exwm-floating-show-mode-line): Set window-size-fixed only for fixed-size floating windows. * exwm-floating.el (exwm-floating-move): New function for moving a floating window. * exwm-layout.el (exwm-layout-enlarge-window) (exwm-layout-enlarge-window-horizontally, exwm-layout-shrink-window) (exwm-layout-shrink-window-horizontally): New commands for interactively resizing a floating window.
2015-09-11 Allow switch to normal buffers in exwm-workspace-switch-to-windowChris Feng1-4/+5
* exwm-workspace.el (exwm-workspace-switch-to-window): Allow switch to normal buffers.
2015-09-09 Add a command to interactively move X window to the current workspaceChris Feng1-2/+29
* exwm-workspace.el (exwm-workspace-move-window): Hide buffer on the original Emacs window when moving an X window to the current workspace. * exwm-workspace.el: New function exwm-workspace-switch-to-window for interactively moving an X window on another workspace to the current one.
2015-09-09 Add support for xcb:Atom:_NET_CLIENT_LIST_STACKING etcChris Feng4-2/+25
The _NET_CLIENT_LIST_STACKING EWMH property is essential for e.g. the tabbar of chromium to work correctly. * exwm-input.el: Remove invalid TODO item. * exwm.el (exwm--init-icccm-ewmh): Add xcb:Atom:_NET_CLIENT_LIST and xcb:Atom:_NET_CLIENT_LIST_STACKING to _NET_SUPPORTED. * exwm-layout.el (exwm-layout--refresh): Update _NET_CLIENT_LIST_STACKING. * exwm-manage.el (exwm-manage--manage-window, exwm-manage--unmanage-window): Update _NET_CLIENT_LIST.
2015-09-07 Allow hide/show mode-line on floating framesChris Feng2-18/+62
* exwm-core.el: new buffer-local variable exwm--floating-mode-line-format for saving mode-line-format when mode-line is hidden * exwm-floating.el (exwm-floating--fit-frame-to-window) (exwm-floating-hide-mode-line, exwm-floating-show-mode-line): new functions for resizing frames, hiding/showing mode-line respectively; (exwm-floating--set-floating): use exwm-floating--fit-frame-to-window to resize frames
2015-09-06 Code cleanupsChris Feng2-2/+3
* exwm-workspace.el (exwm-workspace--update-switch-history): use `aref' instead of `elt' to index vectors * .elpaignore: ignore README.md
2015-09-04 Prepare for GNU ELPA releaseChris Feng12-1045/+382
* Transfer copyright to Free Software Foundation * Add packaging components (e.g. headers) * Coding style fixes: + Quote functions with "#'" + Wrap long lines + Fix doc strings / comments * Replace `string-to-int' with `string-to-number' * Fix compiling errors / eliminate compiling warnings + Add exwm-core.el to hold common variables, functions and macros * Remove the redundant COPYING file * Add .gitignore * Rename README to README.md
2015-09-03 Ungrab pointer timely when resizing is abortedChris Feng1-1/+2
* exwm-floating.el (exwm-floating--start-moveresize): when resizing type cannot be decided, ungrab the previously grabbed pointer.
2015-08-28 Minor fixPhilip1-2/+2
2015-08-28 Drop intro to xelb-utilChris Feng1-5/+3
2015-08-27 Avoid deleting the frame created by Emacs client by accidentChris Feng1-5/+4
When Emacs is invoked as `emacsclient -a '' -c`, it creates a frame that can be deleted without any prompt. This commit removes the `client` parameter from that frame to avoid such inconvenience.
2015-08-27 Re-enable complete refresh of keyboard mappingChris Feng1-12/+5
Since the performance of `xcb:keysyms:update-keyboard-mapping` is no longer an problem, we allow every possible refresh of keyboard mapping again.
2015-08-27 Fix window size calculationsChris Feng2-5/+6
* When sending the synthetic ConfigureNotify event, make sure we are dealing with the correct Emacs window * When managing a floating window, ensure it can be easily pick up by the user
2015-08-26 Fix `exwm-workspace-rename-buffer`Chris Feng1-10/+11
Ensure buffer names are unique.
2015-08-26 Correct several EWMH propertiesChris Feng5-52/+58
The following EWMH properties on the root window are corrected in this commit: _NET_VIRTUAL_ROOTS, _NET_WORKAREA and _NET_DESKTOP_VIEWPORT.
2015-08-26 Replay KeyPress events instead of fake them in line-modeChris Feng1-53/+24
X windows in line-mode receive KeyPress events faked with SendEvent requests previously. This causes many problems including: * Some applications (e.g. xterm) ignore synthetic events completely * KeyPress and KeyRelease evnets arrive disorderly This commit makes EXWM exploiting AllowEvents requests (in ReplayKeyboard mode) to forward KeyPress events to X windows instead.
2015-08-24 Avoid using the "no window manager" code in EmacsPhilip4-6/+60
* exwm.el (exwm--on-ClientMessage): Handle fullscreen requests for frames. (exwm-init): Initialize workspaces after unlocking events. * exwm-workspace.el (exwm-workspace--init): Create frames as invisible, then make them visible only once their OverrideRedirect property has been set. * exwm-randr.el (exwm-randr--refresh): New frame parameter `exwm-geometry'. * exwm-layout.el (exwm-layout--set-frame-fullscreen): New function. The Emacs code is buggy, see https://github.com/ch11ng/exwm/issues/39 https://github.com/ch11ng/exwm/pull/42
2015-08-24 Only manage windows mapped as the direct children of root window (close #38)Chris Feng1-3/+8
Sometimes Emacs create child windows of virtual roots. This commit ensures EXWM will not manage them.
2015-08-17 Improve code robustness.Philip3-43/+45
* exwm-layout.el (exwm-layout-unset-fullscreen) (exwm-layout-set-fullscreen): Use `user-error' rather than `cl-assert'. * exwm-input.el (exwm-input--set-focus): Silently accept unknown ids. (exwm-input--grab-keyboard) (exwm-input--release-keyboard): Silently ignore calls for windows that have no buffer. * exwm-manage.el (exwm-manage--kill-client): Don't throw error when trying to kill a vanished window.
2015-08-17 fix buffer renamingPhilip1-2/+4
per https://github.com/ch11ng/exwm/pull/30
2015-08-16 Fix bug when moving a window to the current workspacePhilip1-2/+2
* exwm-workspace.el (exwm-workspace-move-window): Run reparenting code when moving a window to the current workspace.
2015-08-16 Provide hooks run when the floating state of a window changes (close #28)Chris Feng1-2/+9
2015-08-14 Honor `value-mask` field in ConfigureRequest eventChris Feng1-10/+10
Some applications (e.g. JNLP) don't set correct values for fields not mentioned in `value-mask`. This commit corrects this bug together with another Java AWT specific problem.
2015-08-13 Fix input focus stealingChris Feng1-8/+10
This was fixed in b755296 but broken by 04e4269.