Age | Commit message (Collapse) | Author | Files | Lines |
|
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.
|
|
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.
|
|
* exwm-workspace.el (exwm-workspace-move-workspace): New function
to move a workspace to a certain position.
|
|
* exwm-workspace.el (exwm-workspace-swap-workspaces): New
function to interchange the position of two workspaces.
|
|
* exwm-workspace.el (exwm-workspace--prompt-for-workspace): New
function to interactively ask the user for a workspace.
(exwm-workspace-switch, exwm-workspace-move-window): Use it.
|
|
* exwm.el (exwm--on-ClientMessage):
* exwm-workspace.el (exwm-workspace-switch)
(exwm-workspace-move-window, exwm-workspace-switch-to-buffer):
* exwm-layout.el (exwm-layout--refresh):
* exwm-input.el (exwm-input--update-focus)
(exwm-input--on-ButtonPress): Accept frame as well as workspace
index as argument.
* exwm-workspace.el
(exwm-workspace--workspace-from-frame-or-index): New function.
|
|
* exwm-workspace.el (exwm-workspace--current)
(exwm-workspace-current-index): Do it.
|
|
* exwm-workspace.el (exwm-workspace--workspace-p): New function.
* exwm-input.el (exwm-input--on-ButtonPress):
* exwm-workspace.el (exwm-workspace-switch):
* exwm-layout.el (exwm-layout--refresh): Use it.
|
|
* exwm-workspace.el (exwm-workspace--count): New function.
* exwm-randr.el (exwm-randr--refresh):
* exwm-workspace.el (exwm-workspace--switch-map)
(exwm-workspace--update-switch-history, exwm-workspace-switch)
(exwm-workspace-move-window, exwm-workspace--init)
(exwm-workspace--post-init): Use it.
|
|
* exwm-workspace.el (exwm-workspace--position): New function.
* exwm-layout.el (exwm-layout--refresh):
* exwm-input.el (exwm-input--on-ButtonPress):
* exwm-workspace.el (exwm-workspace--update-switch-history):
* exwm.el (exwm--on-ClientMessage, exwm-workspace--init): Use it.
|
|
* exwm-workspace.el
(exwm-workspace--modify-all-x-frames-parameters): Helper function
to non-destructively modify `window-system-default-frame-alist'.
(exwm-workspace--init): Use above function to default all frames
to the shared minibuffer when
`exwm-workspace--minibuffer-own-frame-p' is true.
|
|
* exwm-systemtray.el :
* exwm-manage.el :
* exwm-layout.el :
* exwm-input.el :
* exwm-floating.el :
* exwm-core.el : Add missing function declarations.
|
|
* exwm-workspace.el (exwm-workspace--update-workareas): Use
`make-list' instead of looping.
2016-07-16 Adrián Medraño Calvo <amcalvo@amclap>
|
|
* exwm-core.el (exwm--keyboard-grabbed): New buffer-local variable for
recoding grabbing state.
(exwm-mode-menu, exwm-mode-map): Add major mode menu.
* exwm-input.el (exwm-input-set-key): Update prefix keys when a global
binding is interactively set.
(exwm-input-grab-keyboard, exwm-input-release-keyboard): Update grabbing
state.
|
|
* exwm-workspace (exwm-workspace--update-struts): Add RandR support for
docks.
* exwm-workspace (exwm-workspace--workareas): New variable for storing
workareas.
(exwm-workspace--update-workareas): Update workareas and set
_NET_WORKAREA (replaces `exwm-workspace--set-workareas').
(exwm-workspace--set-fullscreen): Reuse workareas for
resizing and drop optional arguments.
(exwm-workspace--resize-minibuffer-frame)
(exwm-workspace--on-ConfigureNotify): Reuse workareas for
resizing/reposition the (optional) dedicated minibuffer frame.
* exwm-layout.el (exwm-layout-set-fullscreen): Do not use
`exwm-workspace--set-fullscreen' here.
* exwm-manage.el (exwm-manage--unmanage-window):
* exwm-randr.el (exwm-randr--refresh):
* exwm.el (exwm--update-struts-legacy, exwm--update-struts-partial):
Update workareas before resizing workspaces.
* exwm.el (exwm--update-struts-legacy, exwm--update-struts-partial):
Remove the corresponding record on receiving invalid struts.
* exwm-workspace.el (exwm-workspace--get-geometry): New utility
function for retrieving workspace geometry.
|
|
* exwm.el (exwm--update-strut-legacy, exwm--update-strut-partial)
(exwm--update-strut): Rename (strut => struts).
* exwm-manage.el (exwm-manage--manage-window): Listen for
UnmapNotify/DestroyNotify events of docks to stop tracking them.
(exwm-manage--unmanage-window): Remove dock from tracking list when
it's unmapped/destroyed.
* exwm-workspace.el (exwm-workspace--id-struts-alist): New variable
for tracking docks.
(exwm-workspace--struts): Now it stores merged struts.
(exwm-workspace--update-struts): New function for doing the 'merge'.
* exwm.el (exwm--update-struts-legacy, exwm--update-struts-partial):
Now update struts for multiple docks.
* exwm-layout.el (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen):
* exwm-manage.el (exwm-manage--unmanage-window):
Fix fullscreen mode with dock.
* exwm-workspace.el (exwm-workspace--set-fullscreen): Add optional
arguments for ignoring struts / resizing container only.
(exwm-workspace-switch): Restack workspace/docks appropriately.
|
|
* exwm-input.el (exwm-input--unread-event)
(exwm-input--on-KeyPress-line-mode): Use `unread-command-events'
differently on Emacs 24 and 25.
|
|
* exwm-input.el (exwm-input--on-KeyPress-line-mode)
(exwm-input--on-KeyPress-char-mode): Append events at the tail.
* exwm-manage.el (exwm-manage--unmanage-window): Remove the
_NET_WM_DESKTOP property when an X window is withdrawn.
* exwm-systemtray.el (exwm-systemtray--init):
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs):
Issue warning rather than error when there's an existing tray running.
* exwm.el (exwm--on-ClientMessage): The buffer window can be on a
floating frame.
|
|
* exwm-floating.el (exwm-floating--set-allowed-actions)
(exwm-floating--set-floating, exwm-floating--unset-floating):
Add _NET_WM_ALLOWED_ACTIONS support.
* exwm-floating.el (exwm-floating--set-floating)
(exwm-floating--unset-floating): Support initial state hint.
* exwm.el (exwm--update-hints): Fetch initial state.
(exwm--update-state, exwm--on-PropertyNotify):
WM_STATE is not intended to be read.
* exwm-core.el (exwm-state):
* exwm-floating.el (exwm-floating-hide):
* exwm-input.el (exwm-input--update-focus):
* exwm-layout.el (exwm-layout--set-state)
(exwm-layout--iconic-state-p, exwm-layout--show, exwm-layout--hide):
* exwm-manage.el (exwm-manage--on-MapRequest):
Improve WM_STATE support.
* exwm-input.el (exwm-input--set-focus):
* exwm-input.el (exwm-input--update-focus)
(exwm-input--set-active-window):
* exwm.el (exwm--on-ClientMessage): Add _NET_ACTIVE_WINDOW support.
* exwm-layout.el (exwm-layout--set-client-list-stacking):
Improve _NET_CLIENT_LIST_STACKING support.
* exwm-manage.el (exwm-manage--set-client-list)
(exwm-manage--manage-window, exwm-manage--unmanage-window):
Improve _NET_CLIENT_LIST support.
* exwm-manage.el (exwm-manage--manage-window):
* exwm-workspace.el (exwm-workspace--set-desktop)
(exwm-workspace-move-window):
* exwm.el (exwm--on-ClientMessage): Add _NET_WM_DESKTOP support.
* exwm-randr.el (exwm-randr--refresh):
* exwm-workspace.el (exwm-workspace--set-desktop-geometry)
(exwm-workspace--init): Add _NET_DESKTOP_GEOMETRY support.
* exwm-workspace.el (exwm-workspace--set-desktop-geometry):
Renamed from `exwm-workspace--update-desktop-geometry'.
* exwm-randr.el (exwm-randr--refresh): Improve _NET_WORKAREA support.
* exwm-workspace.el (exwm-workspace--set-fullscreen):
Correct variables names.
* exwm-workspace.el (exwm-workspace--init):
* exwm.el (exwm--init-icccm-ewmh):
Set _NET_NUMBER_OF_DESKTOPS in workspace module.
* exwm-workspace.el (exwm-workspace--init):
* exwm.el (exwm--init-icccm-ewmh):
Set _NET_DESKTOP_VIEWPORT in workspace module.
* exwm.el (exwm--on-ClientMessage): Improve _NET_CURRENT_DESKTOP
support.
* exwm.el (exwm--on-ClientMessage): Add _NET_CLOSE_WINDOW support.
* exwm.el (exwm--on-ClientMessage): Add WM_CHANGE_STATE support.
* exwm.el (exwm--init-icccm-ewmh): Update supported atoms.
|
|
force events to be added to `this-command-keys' (and it causes problems).
|
|
* exwm-layout.el (exwm-layout--fullscreen-frame-count)
(exwm-layout--set-frame-fullscreen): Moved to workspace module.
* exwm-workspace.el (exwm-workspace--fullscreen-frame-count)
(exwm-workspace--set-fullscreen):
Moved from layout module.
* exwm-manage.el (exwm-manage--manage-window):
Update struts for dock applications.
* exwm-workspace.el (exwm-workspace--strut)
(exwm-workspace--strut-is-partial): New variables for storing struts.
(exwm-workspace--resize-minibuffer-frame)
(exwm-workspace--on-ConfigureNotify): Take struts into consideration.
* exwm.el (exwm--update-strut-legacy, exwm--update-strut-partial)
(exwm--update-strut): New functions for updating _NET_WM_STRUT
or _NET_WM_STRUT_PARTIAL.
(exwm--on-PropertyNotify): Update struts on corresponding event.
(exwm--init-icccm-ewmh): Declare _NET_WM_STRUT
and _NET_WM_STRUT_PARTIAL as supported.
* exwm-workspace.el (exwm-workspace--update-workareas):
Dedicated function for updating _NET_WORKAREA.
* exwm-randr.el (exwm-randr--refresh):
* exwm-workspace.el (exwm-workspace--init):
Use `exwm-workspace--update-workareas'.
* exwm.el (exwm--init-icccm-ewmh): Do not set _NET_WORKAREA here.
|
|
internal borders of workspace frames.
|
|
* exwm-input.el (exwm-input--on-KeyPress-line-mode)
(exwm-input--on-KeyPress-char-mode): Force events to be added to
`this-command-keys'.
(exwm-input-send-next-key): The read event can now be (t . EVENT).
|
|
* exwm-input.el (exwm-input-set-local-simulation-keys): New function for
setting buffer-local simulation keys.
(exwm-input--local-simulation-keys): New internal variable.
(exwm-input--update-simulation-prefix-keys): Modify either
`exwm-mode-map' or the local keymap accordingly.
|
|
if the minibuffer is active but with line height 1.
|
|
|
|
when there's an active minibjffer
|
|
* exwm-core.el (exwm--mwm-hints): Removed.
(exwm--mwm-hints-decorations): New buffer-local variable for
indicating whether the X window should have decorations.
* exwm-floating.el (exwm-floating--set-floating): Hide the mode-line
of undecorated floating X windows by default.
* exwm-manage.el (exwm-manage--update-mwm-hints):
Set exwm--mwm-hints-decorations;
(exwm-manage--manage-window): Manage an undecorated X window if its
input model is not 'No Input' or 'Globally Active'.
|
|
* exwm-floating.el (exwm-floating--exit):
* exwm-input.el (exwm-input--exit):
* exwm-layout.el (exwm-layout--exit):
* exwm-manage.el (exwm-manage--exit):
* exwm-randr.el (exwm-randr--exit):
* exwm-systemtray.el (exwm-systemtray--exit):
* exwm-workspace.el (exwm-workspace--exit):
New functions for cleanup each module.
* exwm-input.el (exwm-input--on-pre-command, exwm-input--on-post-command)
(exwm-input--init): Name lambda functions.
* exwm-layout.el (exwm-layout--timer, exwm-layout--init): Save timer.
* exwm-randr.el (exwm-randr-enable): Register the cleanup function.
* exwm-systemtray.el (exwm-systemtray--init): Force refresh atoms in XEMBED
and system tray protocols.
(exwm-systemtray-enable): Register the cleanup function.
* exwm-workspace.el (exwm-workspace--client): Save the server process.
(exwm-workspace--confirm-kill-emacs): Add emacsclient-specific
cleanup codes.
(exwm-workspace--timer): Save the timer.
(exwm-workspace--init): Save the server process and timer;
fix problems with emacsclient frames.
* exwm.el (exwm-init): Always select the newly created frame;
force refresh ICCCM & EWMH atoms.
(exwm-exit-hook): New hook for holding cleanup codes.
(exwm--exit): Run `exwm-exit-hook', execute cleanup codes for
each module and reset the environment.
|
|
* exwm-workspace.el (exwm-workspace--init):
`exwm-workspace--on-focus-in' should always be added to `focus-in-hook'.
|
|
* exwm.el (exwm-init):
* exwm-systemtray.el (exwm-systemtray--init):
Use `xcb:connect' instead of `xcb:connect-to-socket'.
|
|
* exwm-systemtray.el (exwm-systemtray--init): Send a client message to
announce the manager selection.
(xcb:systemtray:-ClientMessage): The client message.
|
|
* exwm-manage.el (exwm-manage--manage-window): Convert absolute position
of undecorated X windows.
|
|
* exwm-workspace.el (exwm-workspace--on-focus-in, exwm-workspace--init):
Handle unexpected frame switch in `focus-in-hook'.
* exwm-floating.el (exwm-floating--set-floating): If the absolute position
is (0, 0) then the relative position is also the same.
|
|
* exwm-layout.el (exwm-layout-set-fullscreen, exwm-layout-unset-fullscreen)
(exwm-layout-show-mode-line):
* exwm.el (exwm-reset):
Call `exwm-input-grab-keyboard' and `exwm-input-release-keyboard'
interactively.
|
|
* 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'.
|
|
|
|
* 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).
|
|
* exwm-workspace.el (exwm-workspace-move-window): Display
`other-buffer' instead of "*scratch*" in the window whose buffer
has been made floating.
|
|
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.
|
|
* exwm-layout.el (exwm-layout--refresh): Make sure we test the
`major-mode' of the first buffer of the floating frame.
|
|
* exwm-layout.el (exwm-layout--refresh): Reuse car.
|
|
* exwm-layout.el (exwm-layout--refresh): Do not show unmanaged
floating X windows.
|
|
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Neglect trivial
resizing requests since that cannot be done precisely.
|
|
|
|
|
|
* exwm-layout.el (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen): Raise and lower fullscreen X windows
respectively.
|
|
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.
|
|
* exwm-manage.el (exwm-manage--on-ConfigureRequest):
Allow (non-fullscreen) floating X windows to resize themselves.
|
|
|