Age | Commit message (Collapse) | Author | Files | Lines |
|
* exwm-workspace.el (exwm-workspace--update-workareas): Do not set
_NET_WORKAREA.
* exwm.el (exwm--init-icccm-ewmh, exwm--exit-icccm-ewmh): Remove
_NET_WORKAREA from the supported list.
|
|
* exwm-workspace.el (exwm-workspace--update-ewmh-props):
* exwm.el (exwm--init-icccm-ewmh):
Set _NET_DESKTOP_VIEWPORT on startup since it's a constant.
|
|
* exwm.el (exwm--update-struts-legacy, exwm--update-struts-partial):
Always set the struts value, even it's nil.
* exwm-workspace.el (exwm-workspace--update-struts): Check for nil
struts values.
|
|
* exwm-core.el (exwm--fullscreen): Removed.
(exwm--ewmh-state): New variable for recording the _NET_WM_STATE hint.
* exwm-core.el (exwm-mode-menu, exwm-mode-map):
* exwm-layout.el (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen):
* exwm-manage.el (exwm-manage--unmanage-window)
(exwm-manage--on-ConfigureRequest):
* exwm-workspace.el (exwm-workspace-switch, exwm-workspace-swap)
(exwm-workspace-move):
* exwm.el (exwm-reset, exwm--on-ClientMessage):
Use the new variable.
* exwm-manage.el (exwm-manage--update-ewmh-state): New function for
updating _NET_WM_STATE.
(exwm-manage--manage-window): Update _NET_WM_STATE and check for
_NET_WM_STATE_FULLSCREEN.
|
|
* exwm-manage.el (exwm-manage--desktop): New variable for recording the
desktop X window.
(exwm-manage--manage-window): Check for desktop.
* exwm-workspace.el (exwm-workspace--resize-minibuffer-frame)
(exwm-workspace--hide-minibuffer): Put the minibuffer container above
desktop if any.
|
|
; Also fix various compile warnings.
* exwm-floating.el (exwm-floating--set-floating):
* exwm-manage.el (exwm-manage--manage-window):
* exwm-systemtray.el (exwm-systemtray--init):
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace)
(exwm-workspace--init):
* exwm.el (exwm--init-icccm-ewmh):
Explicitly specify the class (InputOutput or InputOnly) and for an
InputOutput X window the background pixmap when creating an X window.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
|
|
* 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.
|
|
* 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.
|
|
; on the frame where the target window resides.
|
|
|
|
* 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'.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
* 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'.
|
|
* 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.
|
|
; Eliminate compile warnings.
; Rename frame parameter 'exwm--urgency' to 'exwm-urgency'.
; Simplify expressions.
|
|
* 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).
|
|
* exwm-workspace.el (exwm-workspace--init): Always create one initial
workspace by default.
|
|
* exwm-workspace.el (exwm-workspace--switch-map-nth-prefix):
Add more checking conditions.
|
|
|
|
* 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.
|
|
* 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.
|
|
* 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.
|
|
; 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.
|
|
* 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.
|
|
|
|
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-workspace.el (exwm-workspace--update-workareas): Use
`make-list' instead of looping.
2016-07-16 Adrián Medraño Calvo <amcalvo@amclap>
|
|
* 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--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.
|