Age | Commit message (Collapse) | Author | Files | Lines |
|
* 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.
|
|
* 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`.
|
|
* 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.
|
|
|
|
* 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.
|
|
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.
|
|
* 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.
|
|
* exwm-floating.el (exwm-floating--set-floating): Take auto-hiding
minibuffer into account when calculating available height.
(exwm-floating--unset-floating): Restack the container to avoid further
restacking.
* exwm-input.el (exwm-input--update-focus): Use more accurate restacking.
(exwm-input--on-minibuffer-setup): Replaced by
`exwm-layout--on-minibuffer-setup' and `exwm-workspace--on-minibuffer-setup'.
(exwm-input-command-whitelist, exwm-input--during-command)
(exwm-input--on-KeyPress-line-mode): The functionality of
`exwm-input-command-whitelist' is replaced by `exwm-input--during-command',
which can automatically tell whether functions like `read-event' are being
called.
(exwm-input--init): Add/remove corresponding hooks.
* exwm-layout.el (exwm-layout--on-minibuffer-setup): Also set input focus.
(exwm-layout--on-echo-area-change): New function for refreshing layout when
the size of echo area changes.
(exwm-layout--init): Track size changes for fixed minibuffer and echo area.
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Never grant restacking
requests initiated by other clients.
* exwm-workspace.el (exwm-workspace--minibuffer): New variable for the
auto-hiding minibuffer.
(exwm-workspace-minibuffer-position): For setting the position of the
auto-hiding minibuffer.
(exwm-workspace-display-echo-area-timeout): Seconds before echo area
auto-hides.
(exwm-workspace--display-echo-area-timer): The corresponding timer.
(exwm-workspace-switch): Configure the auto-hiding minibuffer when
switching workspace.
(exwm-workspace--update-minibuffer): New function for adjusting the height
of the auto-hiding minibuffer.
(exwm-workspace--on-ConfigureNotify): New function for configuring the
container of the auto-hiding minibuffer.
(exwm-workspace--display-buffer): New function for forcing
`minibuffer-completion-help' to use the workspace frame.
(exwm-workspace--show-minibuffer, exwm-workspace--hide-minibuffer):
New functions for showing/hiding the auto-hiding minibuffer (container).
(exwm-workspace--on-minibuffer-setup, exwm-workspace--on-minibuffer-exit):
New functions called when the auto-hiding minibuffer entered/exists.
(exwm-workspace--on-echo-area-dirty, exwm-workspace--on-echo-area-clear):
New functions when the auto-hiding echo area is ready to show/hide.
(exwm-workspace--init): Set up the auto-hiding minibuffer and workspace
frames. Track sizes changes for auto-hiding minibuffer and echo area.
No need to set OverrideRedirect on workspace frames.
* exwm.el (exwm--init-icccm-ewmh): Correct the value of _NET_WORKAREA.
|
|
|
|
This commit add workspace and X window containers support to avoid using
Emacs frames as the parents of X windows. This should make it easier to
set input focus.
* exwm-core.el (exwm--container, exwm--floating-frame-position): New file
local variables.
(exwm--floating-frame-geometry): Removed file local variable.
* exwm-floating.el (exwm-floating--set-floating)
(exwm-floating--unset-floating, exwm-floating--do-moveresize)
(exwm-floating-move): Use container.
(exwm-floating--fit-frame-to-window): No longer adjust stacking order.
(exwm-floating--fit-frame-to-window): The first member is changed to
buffer.
(exwm-floating--start-moveresize): Use container. Correctly set input
focus.
* exwm-input.el (exwm-input--redirected, exwm-input--on-focus-in): Removed.
(exwm-input--on-buffer-list-update): Remove the restriction on floating
frames which is no longer valid.
(exwm-input--update-focus): Adjust stacking order.
(exwm-input--on-minibuffer-setup): New function for setting focus on the
Emacs frame when entering minibuffer.
(exwm-input--on-KeyPress-line-mode): No longer compensate FocusOut event.
(exwm-input--grab-keyboard, exwm-input--release-keyboard): Local keys are
now grabbed on the X window container.
(exwm-input--init): Add `exwm-input--on-minibuffer-setup' to
`minibuffer-setup-hook'.
* exwm-layout.el (exwm-layout--resize-container): New function to
resize/reposition both the X window and its container.
(exwm-layout--show, exwm-layout--hide): Use container.
(exwm-layout-set-fullscreen): Use container. No longer save width and
height.
(exwm-layout-unset-fullscreen, exwm-layout--set-frame-fullscreen): Use
container.
(exwm-layout--refresh): Update a frame parameter. Remove dead code.
* exwm-manage.el (exwm-manage--manage-window): Reparent unmanaged X windows
to the workspace. Create X window container as the parent of the X window.
(exwm-manage--unmanage-window): Unmap/destroy container when appropriate.
Use the position of container.
(exwm-manage--unmanage-window): Destroy the container.
* exwm-randr.el (exwm-randr--refresh): Resize workspace using container.
* exwm-workspace.el (exwm-workspace-switch): Raise workspace.
Correctly set input focus.
(exwm-workspace--on-focus-in): Removed.
(exwm-workspace-move-window): Reparent to workspace container.
(exwm-workspace--init): Create workspace frames as visible.
Create workspace containers.
Remove exwm-workspace--on-focus-in from focus-in-hook.
Update _NET_VIRTUAL_ROOTS.
* exwm.el (exwm-init): No longer disable hourglass window.
Initialize workspace module before input.
* exwm-core.el (exwm--debug): New macro for setting debug forms.
* exwm-floating.el (exwm-floating--set-floating): No longer do `exwm--lock'
and `exwm--unlock' since `make-frame' is already adviced to take care of
everything. Correctly set input focus to the newly created floating
X window.
* exwm-core.el (exwm--floating-edges): Removed file local variable.
* exwm-floating.el (exwm-floating--set-floating)
(exwm-floating--unset-floating):
* exwm-layout.el (exwm-layout--show, exwm-layout-enlarge-window):
* exwm-manage.el (exwm-manage--on-ConfigureRequest):
No longer use floating geometry.
* exwm-input.el (exwm-input--update-global-prefix-keys): Grab global keys
on workspaces containers instead of the root window (or input focus would
transfer to the workspace containing the pointer when the grab is active).
* exwm-workspace.el (exwm-workspace-switch): No longer move mouse.
|
|
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
* exwm-workspace.el (exwm-workspace-switch): An active minibuffer on another
workspace might cause problems for input. Closing it should be
sufficient.
|
|
* 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.
|
|
* .gitignore: Add ELPA files.
* exwm-workspace.el: Autoload exwm-workspace-switch.
* README.org: Renamed from README.md; add an installation note.
|
|
* exwm-floating.el:
* exwm-layout.el:
Avoid autoloading exwm-floating-border-width.
* exwm-workspace.el:
Avoid autoloading exwm-workspace--switch-history-outdated.
|
|
* 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.
|
|
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.
|
|
* exwm-workspace.el (exwm-workspace-move-window): Move to selected instead of
the first window of a frame (workspace).
|
|
* exwm-workspace.el (exwm-workspace-switch-to-window): Allow switch to normal
buffers.
|
|
* 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.
|
|
* exwm-workspace.el (exwm-workspace--update-switch-history): use `aref' instead
of `elt' to index vectors
* .elpaignore: ignore README.md
|
|
* 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
|
|
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.
|
|
Ensure buffer names are unique.
|
|
The following EWMH properties on the root window are corrected in this commit:
_NET_VIRTUAL_ROOTS, _NET_WORKAREA and _NET_DESKTOP_VIEWPORT.
|
|
* 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
|
|
per https://github.com/ch11ng/exwm/pull/30
|
|
* exwm-workspace.el (exwm-workspace-move-window): Run
reparenting code when moving a window to the current workspace.
|
|
This commit should fix most input focus bugs (especially those related to
floating windows). The actual settings of input focus are delayed to exclude
redundant event. Dead code since this commit is removed.
This commit also fixes a bug for non-floating windows converted form floating
state. The workaround for `ido-mode` is also improved to properly handle
`exwm-mode` buffers.
|
|
* Remove locks that are no longer required
* Also fix #20 (inactive workspace frame steals input focus)
|
|
|
|
* Fix input focus lost after moving window to another workspace
* Enhance `exwm-reset` to provide user a way to reset input focus when it's
lost unexpectedly
|
|
Also insert some debug messages.
|
|
* Fix `exwm-reset`
* Make input mode buffer local
* Allow window to stay in `char-mode` while setting input focus to other window
or switching to other workspace
|
|
This should prevent users from misoperation.
|
|
* Correct ConfigureNotify events sent to fullscreen windows.
* Exit fullscreen mode before switching workspace.
* Temporarily treat `xcb:Atom:_NET_WM_STATE_ABOVE` as
`xcb:Atom:_NET_WM_STATE_FULLSCREEN` since
a) "plugin-container" (Flash Player) seems only set this, and
b) it's not normally used by applications.
This makes fullscreen videos working in e.g. iceweasel.
|
|
* Prevent marking the end of a key sequence with a single `C-u'.
* Enable `C-u' prefix for key simulation since it's not possible for users to
define simulation keys starting with `C-u'.
* Make Emacs idle only after the visual parts are updated to prevent from
disturbing users.
* Should use '?\s' instead of '? '.
|
|
This implementation is analogous to that in i3-wm, which requires external
tools to properly configure RandR first.
|
|
Buffers may share a same name (without the possible leading space) when created
in different workspaces.
|
|
Remove wrong shift modifiers.
Hide a Window when it's moved to another workspace.
|
|
Fixes for full screen, move window, etc.
|
|
|