boo-bee-macs/elpa/exwm-0.24/ChangeLog

4449 lines
147 KiB
Plaintext
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

2019-06-16 Chris Feng <chris.w.feng@gmail.com>
Allow panel to hide floating X windows
* exwm.el (exwm--on-ClientMessage): Use `exwm-floating-hide' to hide X
windows on receiving `WM_CHANGE_STATE' events.
2019-06-16 Chris Feng <chris.w.feng@gmail.com>
Avoid workspace switch loop with `mouse-autoselect-window' enabled
* exwm-input.el (exwm-input--last-enter-notify-position): New variable
storing last mouse position.
(exwm-input--on-EnterNotify): Avoid switching workspace when mouse
position is not changed (the event is a result of a workspace switch).
2019-06-09 Chris Feng <chris.w.feng@gmail.com>
Handle (t . EVENT) format events in exwm-xim
* exwm-xim.el (exwm-xim--handle-forward-event-request): Ditto.
2019-06-09 Chris Feng <chris.w.feng@gmail.com>
Fix character loss with exwm-xim
* exwm-xim.el (exwm-xim--handle-forward-event-request): Events unread
can either be reused by input methods or forwarded to X windows as is.
2019-06-02 Chris Feng <chris.w.feng@gmail.com>
Fix unreading 'return event
* exwm-xim.el (exwm-xim--event-pending): Drop unused variable.
(exwm-xim--handle-forward-event-request): Convert 'return back to ?\n to
avoid error.
2019-06-02 Chris Feng <chris.w.feng@gmail.com>
Fix auto commit issue with input methods
* exwm-xim.el (exwm-xim--handle-forward-event-request): Factored out
from `exwm-xim--on-request' to make auto commit work. With input
methods providing candidates the first candidate can be implicitly
selected if no further matching is possible. The last event would be
stored in `unread-command-events' (at least for `quail-input-method')
and should be reused by the input method.
(exwm-xim--on-request): Use it.
2019-04-14 Chris Feng <chris.w.feng@gmail.com>
Add compatibility mode for legacy servers
* exwm-randr.el (exwm-randr--compatibility-mode): Indicating whether
RandR 1.5 is supported by the server.
(exwm-randr--init): Set it.
(exwm-randr--get-monitor-alias): Split out from exwm-randr--get-monitors
for reuse.
(exwm-randr--get-outputs): New function for retrieving RandR 1.2 outputs
when RandR 1.5 is not supported.
(exwm-randr-refresh): Call `exwm-randr--get-outputs' in compatibility
mode.
2019-04-14 Chris Feng <chris.w.feng@gmail.com>
Clarify the usage of `exwm-manage-configurations'
2019-03-24 Chris Feng <chris.w.feng@gmail.com>
Support monitor mirroring
* exwm-randr.el (exwm-randr--get-monitors): Also return an alist of
monitor name aliases.
(exwm-randr-refresh): Unify mirrored monitor names.
2019-03-24 Chris Feng <chris.w.feng@gmail.com>
; Follows up
2019-03-17 Stefan Monnier <monnier@iro.umontreal.ca>
* exwm-workspace.el: Use closures rather than `(lambda ...)
2019-03-17 Chris Feng <chris.w.feng@gmail.com>
Remove loading order dependency on `mouse-autoselect-window'
* exwm-core.el (exwm--get-client-event-mask): Renamed from
`exwm--client-event-mask' and used as a function.
* exwm-floating.el (exwm-floating--unset-floating):
* exwm-layout.el (exwm-layout--hide):
* exwm-manage.el (exwm-manage--manage-window): Use it.
2019-03-17 Chris Feng <chris.w.feng@gmail.com>
Add extra keys for selecting workspace
* exwm-workspace.el (exwm-workspace--switch-map)
(exwm-workspace--init): Avoid initializing the keymap when loading.
(exwm-workspace--init-switch-map): Initialize
`exwm-workspace--switch-map' and also add extra keybindings when
`exwm-workspace-index-map' has been customized.
2019-03-10 Chris Feng <chris.w.feng@gmail.com>
Make replacing existing WM optional
* exwm.el (exwm-replace): New user option for specifying whether to
replace existing WM.
(exwm-init): Use it.
(exwm--wmsn-acquire, exwm-init): Do not print warning message when user
gives up replacing.
* exwm-core.el (exwm--wmsn-replace): Remove dead code.
2019-02-16 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.22.1
2019-02-11 Chris Feng <chris.w.feng@gmail.com>
Fix compatibility issue with Emacs 25
* exwm-input.el (exwm-input--unread-event): `string-version-lessp' is
not available on Emacs 25.
2019-02-10 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.22
2019-02-06 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'retain-echo-area-until-input' of
https://github.com/medranocalvo/exwm into
medranocalvo/retain-echo-area-until-input
2019-02-06 Chris Feng <chris.w.feng@gmail.com>
Do the same for `exwm-input-global-keys'
2019-02-06 Ian Eure <ian@retrospec.tv>
Cleanup simulation key config issues
* exwm-input.el (exwm-input-simulation-keys): Original key only has one
option, so probably shouldnt be a `choice` type; Move the
"User-defined" key value to the top, since thats the one someone is
most likely to want).
* exwm-config.el (exwm-config-default): Only set custom vars if there
isnt a saved value for them.
2019-02-06 Chris Feng <chris.w.feng@gmail.com>
Add input method support
; The code is basically refactored from
; https://github.com/ch11ng/exim to get better maintenance.
* exwm-xim.el: New module making Emacs's builtin input methods usable
for interacting with X windows.
* exwm-core.el (exwm--intern-atom): New function for intern X11 atoms.
* exwm-input.el (exwm-input--init):
* exwm-manage.el (exwm-manage--init): Use it.
2019-02-05 Chris Feng <chris.w.feng@gmail.com>
Scan for existing X windows only after running `exwm-init-hook'
* exwm.el (exwm-init): Delay the call to `exwm-manage--scan' since
managing existing X windows too early may result in issues like losing
input focus.
2019-02-01 Chris Feng <chris.w.feng@gmail.com>
Fetch necessary properties before checking per-app configurations
* exwm-manage.el (exwm-manage--manage-window): Fetch X window title &
protocols so they can be available when checking per-application
configurations.
2019-02-01 Chris Feng <chris.w.feng@gmail.com>
Update copyright year to 2019
2019-01-20 Chris Feng <chris.w.feng@gmail.com>
Fix issue with managed tray icons
* exwm-input.el (exwm-input--on-ButtonPress): Replay button events
destined for managed tray icons.
2018-12-30 Chris Feng <chris.w.feng@gmail.com>
Automatically iconify floating X windows
* exwm-layout.el (exwm-layout-auto-iconify): New user option to specify
whether to automatically iconify X windows.
(exwm-layout--auto-iconify): Automatically iconify floating X windows
when its main X window (if any) is iconified.
(exwm-layout--show, exwm-layout--hide): Use it.
2018-12-16 Chris Feng <chris.w.feng@gmail.com>
Avoid unnecessary focus changes when creating/killing buffers
* exwm-input.el (exwm-input--skip-buffer-list-update): New internal
variable for skipping the next 'buffer-list-update'.
(exwm-input--on-buffer-list-update): Skip when
`exwm-input--skip-buffer-list-update` is set.
* exwm-manage.el (exwm-manage--manage-window): Set
`exwm-input--skip-buffer-list-update` when creating/killing buffers.
2018-12-05 James Ferguson <wjcferguson@gmail.com>
Only call exwm-randr-screen-change-hook on new event sequence number
Multiple event callbacks are triggered per physical monitor plug event.
This de-duplicates the events triggering the running of the hook.
2018-12-02 Chris Feng <chris.w.feng@gmail.com>
; Improve debug logs.
2018-12-01 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.21
2018-11-25 Chris Feng <chris.w.feng@gmail.com>
Avoid unnecessary keyboard grab/ungrab in char-mode
* exwm-input.el (exwm-input--cache-event): Optimize the handling of
single event global key by not grabbing/ungrabbing the keyboard.
2018-11-18 Chris Feng <chris.w.feng@gmail.com>
Fallback to the first monitor as the primary one
* exwm-randr.el (exwm-randr--get-monitors): When no primary monitor is
specified, pick the first one.
2018-11-18 Chris Feng <chris.w.feng@gmail.com>
Add support for 'managed' per-application configuration
* exwm-manage.el (exwm-manage-configurations): Add a new value type
'managed' to allow users to specify whether a certain X window should be
managed or not.
(exwm-manage--manage-window): Use it.
2018-11-18 Chris Feng <chris.w.feng@gmail.com>
Automatically refresh RandR settings
* exwm-randr.el (exwm-randr--last-timestamp): New variable recording
last seen timestamp after requesting `GetMonitors'.
(exwm-randr--get-monitors): Use it.
(exwm-randr--on-ScreenChangeNotify): Do not refresh any more.
(exwm-randr--on-Notify): New function for handling `CrtcChangeNotify'
and `OutputChangeNotify' events.
(exwm-randr--on-ConfigureNotify): New function for handling
`ConfigureNotify' event.
(exwm-randr--init): Add listeners for additional events.
2018-11-18 Chris Feng <chris.w.feng@gmail.com>
Avoid activating already active X windows
* exwm.el (exwm--on-ClientMessage): On receiving `_NET_ACTIVE_WINDOW'
events, check if the requested X windows are already active.
2018-11-11 Chris Feng <chris.w.feng@gmail.com>
Fix wrong stacking order of tiling X windows
* exwm-manage.el (exwm-manage--on-MapNotify): Avoid restacking tiling X
windows on the top when force triggering hierarchy change events.
2018-11-11 Chris Feng <chris.w.feng@gmail.com>
Expose `exwm-randr-refresh' public interface
* exwm-randr.el (exwm-randr-refresh): New public interface allowing
users to manually refresh when RandR settings are changed output EXWM.
(exwm-randr--refresh): Made obsolete.
2018-11-04 Chris Feng <chris.w.feng@gmail.com>
Add support for RandR 1.5 monitor
* exwm-randr.el (exwm-randr-workspace-monitor-plist): New user option
for specifying which monitor each workspace should be displayed on.
(exwm-randr-workspace-monitor-plist): Made obsolete.
(exwm-randr--get-monitors): New function for fetching active monitors.
(exwm-randr--refresh): Adapted to use monitor.
(exwm-randr--init): Now requires RandR 1.5.
* exwm-randr.el:
* exwm-workspace.el: Rename `output' to `monitor'.
2018-11-04 Chris Feng <chris.w.feng@gmail.com>
Select more sensible buffers after creating new windows
* exwm-layout.el (exwm-layout--refresh-other)
(exwm-layout--refresh-workspace): When filling vacated windows select
more sensible buffer by calling `switch-to-next-buffer' for newly
created windows.
2018-11-03 Adrián Medraño Calvo <adrian@medranocalvo.com>
Hide minibuffer upon receiving any event
* exwm-input.el (exwm-input--event-hook): New variable.
(exwm-input--on-ButtonPress, exwm-input--on-KeyPress): Run
`exwm-input--event-hook'.
* exwm-workspace.el (exwm-workspace--init, exwm-workspace--exit): Hide
minibuffer upon noticing an event.
2018-11-03 Adrián Medraño Calvo <adrian@medranocalvo.com>
Stop hiding the minibuffer when a message is being displayed
* exwm-workspace.el (exwm-workspace--echo-area-maybe-clear): New
function that postpones hiding the minibuffer when it's displaying a
message.
(exwm-workspace--on-echo-area-dirty): Use it.
2018-10-21 Adrián Medraño Calvo <adrian@medranocalvo.com>
Restore keyboard grabbing after exiting fullscreen
Recover the difference between the input mode selected by the user and
actual one, which might be transient. This was inadvertently removed in
recent changes.
* exwm-core.el (exwm--selected-input-mode): New variable.
* exwm-input.el (exwm-input-grab-keyboard)
(exwm-input-release-keyboard): Use it.
* exwm-layout.el (exwm-layout-unset-fullscreen): Return to the selected
input mode.
2018-10-21 Adrián Medraño Calvo <adrian@medranocalvo.com>
Do away with `exwm-input--input-mode'
* exwm-input.el (exwm-input--update-mode-line): Remove.
(exwm-input--on-ButtonPress, exwm-input--on-KeyPress)
(exwm-input--update-mode-line, exwm-input-toggle-keyboard): Use
`exwm--input-mode' variable directly.
2018-10-21 Chris Feng <chris.w.feng@gmail.com>
Fix single workspace invisible problem with Xephyr
* exwm-workspace.el (exwm-workspace-switch): On startup EXWM switches to
workspace 0 by force so the rest code can not assume the frames before
and after a switch different.
2018-10-14 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.20
2018-10-14 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'medranocalvo/reduce-workspace-switch-flicker' into
externals/exwm
2018-10-14 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'medranocalvo/fix-minibuffer-only-focus-jump' into
externals/exwm
2018-10-08 Adrián Medraño Calvo <adrian@medranocalvo.com>
Reduce flicker when switching workspaces
* exwm-workspace.el (exwm-workspace-switch): Hide the old workspace
after having shown the new one when switching to avoid flicker.
2018-10-08 Adrián Medraño Calvo <adrian@medranocalvo.com>
Support binding mouse events in line-mode
* exwm-input.el (exwm-input--event-passthrough-p): Predicate checking
whether an event should be forwarded to Emacs.
(exwm-input--on-KeyPress-line-mode): Use it.
* exwm-input.el (exwm-input--cache-event): Protect against translations
swallow the event.
* exwm-input.el (exwm-input--on-ButtonPress-line-mode)
(exwm-input--on-ButtonPress-char-mode): New functions.
(exwm-input--on-ButtonPress): Forward bound mouse events to Emacs when
in line-mode.
2018-10-08 Adrián Medraño Calvo <adrian@medranocalvo.com>
Fix focus jumps with minibuffer-only frames
* exwm-input.el (exwm-input--update-focus): Focus the minibuffer's
frame, which is different than that of the
`minibuffer-selected-window' on minibuffer-only frames.
(exwm-input--on-minibuffer-setup, exwm-input--init)
(exwm-input-exit): Remove unneeded function.
2018-10-08 Adrián Medraño Calvo <adrian@medranocalvo.com>
Simplify input handling
No functional change.
* exwm-input.el (exwm-input--current-input-mode): New function
indicating keyboard input mode.
(exwm-input--on-KeyPress, exwm-input--update-mode-line): Use
`exwm-input--current-input-mode'.
(exwm-input-grab-keyboard, exwm-input-release-keyboard)
(exwm-input--update-mode-line): Simplify.
* exwh-core.el (exwm--on-KeyPress): Remove variable, use
`exwm--keyboard-grabbed' and `exwm-input--current-input-mode' instead.
2018-09-16 Chris Feng <chris.w.feng@gmail.com>
Simplify debugging and fix dynamic-scoping `eval'
* exwm-core.el (exwm-debug): New global minor mode to replace
`exwm-debug-on' and `exwm-debug-toggle'.
* exwm-manage.el (exwm-manage--get-configurations): Use lexical-scoping
`eval'.
2018-09-09 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'medranocalvo/restack-after-map' into externals/exwm
2018-09-09 Chris Feng <chris.w.feng@gmail.com>
; Minor fixes for Calvo's patch set.
2018-09-04 Adrián Medraño Calvo <adrian@medranocalvo.com>
Restack X-Windows after being mapped to ensure EnterNotify events fire
* exwm-manage.el (exwm-manage--on-MapNotify, exwm-manage--init): Restack
X windows after being mapped in order to ensure they receive an
EnterNotify event (does not happen under XQuartz).
2018-09-04 Adrián Medraño Calvo <adrian@medranocalvo.com>
Command for toggling debugging output
* exwm-core.el (exwm-debug-toggle): New function for toggling debugging
output.
(exwm-mode-map): Use it.
2018-09-04 Adrián Medraño Calvo <adrian@medranocalvo.com>
Substitute overlapping keybindings
* exwm-core.el (exwm-mode-map): Change keybindings to avoid overlap.
2018-09-04 Adrián Medraño Calvo <adrian@medranocalvo.com>
Use XELB's debugging facilities
* exwm-debug.el: Move to XELB as `xcb-debug'.
* exwm-core.el (exwm--log): Use it.
(exwm--log): Support switching debugging output at runtime.
2018-09-02 James Ferguson <wjcferguson@gmail.com>
Explicitly specify frame for cursor warping conditional
2018-09-02 James Ferguson <wjcferguson@gmail.com>
Fix cursor warping conditional for cursor left of frame
2018-08-30 Adrián Medraño Calvo <adrian@medranocalvo.com>
Refresh layout after activating/deactivating workspaces
* exwm-workspace.el (exwm-workspace--set-active): Refresh layout after
activating or deactivating workspaces.
* exwm-layout.el (exwm-layout--refresh-workspace): Hide X windows on
inactive workspaces.
2018-08-19 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'medranocalvo/fix-x-window-vanish' into externals/exwm
2018-08-19 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'medranocalvo/exwm-log-buffer' into externals/exwm
2018-08-19 Adrián Medraño Calvo <adrian@medranocalvo.com>
; Comment layout algorithm.
2018-08-19 Adrián Medraño Calvo <adrian@medranocalvo.com>
Consistently name helper windows
* exwm.el (exwm--init-icccm-ewmh): Avoid naming the root window.
(exwm--wmsn-acquire): Use the symbol name in the window name.
* exwm-systemtray.el (exwm-systemtray--embedder-window): Rename
`exwm-systemtray--embedder' consistency.
(exwm-systemtray--init): Use symbol names in the window name.
2018-08-19 Chris Feng <chris.w.feng@gmail.com>
; Unimportant tweaks
2018-08-16 Adrián Medraño Calvo <adrian@medranocalvo.com>
Split exwm-layout--refresh into three functions
* exwm-layout.el (exwm-layout--refresh): Split in three functions for
clarity.
(exwm-layout--refresh-workspace, exwm-layout--refresh-other)
(exwm-layout--refresh-floating): New functions.
2018-08-16 Adrián Medraño Calvo <adrian@medranocalvo.com>
Don't assume order of `get-buffer-window-list' results
It only guarantees that the first result *if* the buffer appears on the
selected window.
2018-08-16 Adrián Medraño Calvo <adrian@medranocalvo.com>
Use more explicit argument for excluding minibuffers
* exwm-layout.el (exwm-layout--refresh): Use a more intuitive value for
specifying exclusion of minibuffers.
2018-08-16 Adrián Medraño Calvo <adrian@medranocalvo.com>
Consider windows of the frame being refreshed, not the selected one at
the time exwm-layout--refresh runs
* exwm-layout.el (exwm-layout--refresh): Consider windows of the frame
being refreshed instead of the selected frame.
2018-08-13 Adrián Medraño Calvo <adrian@medranocalvo.com>
Trace more functions
2018-08-13 Adrián Medraño Calvo <adrian@medranocalvo.com>
Commands for interacting with the log buffer remotely
* exwm-debug.el (exwm-debug--clear, exwm-debug--mark): New functions.
2018-08-13 Adrián Medraño Calvo <adrian@medranocalvo.com>
Print log output to an EXWM-specific messages buffer
Using `message' to log debugging information is cumbersome, as the
output appears constantly in the minibuffer, obscuring prompts and other
information. In the case of long messages, it might resize the
minibuffer, which causes EXWM to perform additional actions due to the
log output.
This change reimplements EXWM debug logging using a separate buffer
(*EXWM-DEBUG*). Basic functionality, like scrolling when point is at
the end of the buffer is maintained.
* exwm-core.el (exwm--log): Use `exwm-debug--message' instead of
`message'. Prefix all messages with the name of the function. Make
FORMAT-STRING argument optional.
* exwm-debug.el: New file.
(exwm-debug-buffer): New variable holding the buffer where debug
messages are output to.
(exwm-debug--message): New function printing a message to
`exwm-debug-buffer'.
(exwm-debug--backtrace): New function printing a backtrace.
2018-08-12 Chris Feng <chris.w.feng@gmail.com>
Avoid using `set-mouse-position' to warp pointer
* exwm-workspace.el (exwm-workspace-switch): Warp pointer with the
WarpPointer request.
2018-08-12 Chris Feng <chris.w.feng@gmail.com>
Exclude irrelevant X windows when refreshing
* exwm-layout.el (exwm-layout--refresh): Only check X windows on the
workspace being examined.
2018-08-05 Chris Feng <chris.w.feng@gmail.com>
When mapping an X window check if it's on an active workspace
* exwm-layout.el (exwm-layout--refresh): Avoid mapping X windows on
inactive workspaces.
2018-07-29 Chris Feng <chris.w.feng@gmail.com>
Fix issues with destroying full screen X windows
* exwm-manage.el (exwm-manage--unmanage-window): Set the Emacs window of
an full screen X window as non-dedicated before killing its buffer so as
not to cause other side effects.
2018-07-18 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.19
2018-07-15 Chris Feng <chris.w.feng@gmail.com>
Fix XTerm crash on startup
* exwm-input.el (exwm-input--set-focus): Applications like XTerm crashes
on receiving WM_TAKE_FOCUS so only send it to X windows accepting it.
2018-07-15 Chris Feng <chris.w.feng@gmail.com>
; Use `derived-mode-p'.
2018-07-15 Chris Feng <chris.w.feng@gmail.com>
Add support for automatic cursor warping
* exwm-workspace.el (exwm-workspace-warp-cursor): New user option.
(exwm-workspace-switch): Automatically warp cursor after workspace
switch.
2018-07-15 Chris Feng <chris.w.feng@gmail.com>
Shrink Emacs frames with X request
* exwm-manage.el (exwm-manage--on-ConfigureRequest): There's a problem
in shrinking Emacs frames with `set-frame-width' and
`set-frame-height'. Use `exwm--set-geometry' instead.
2018-07-15 Chris Feng <chris.w.feng@gmail.com>
Also send a WM_TAKE_FOCUS when setting focus with SetInputFocus
* exwm-input.el (exwm-input--set-focus): Send an extra WM_TAKE_FOCUS
event to workaround the key replay issue with Xorg 1.20 when keyboard is
grabbed.
2018-07-15 Chris Feng <chris.w.feng@gmail.com>
Revert "Grab & Replay key events with XI2 and XTEST"
This reverts commit 0680be104f9394e39dd55b5c4e33b9b7e4e77926.
2018-06-18 Chris Feng <chris.w.feng@gmail.com>
Grab & Replay key events with XI2 and XTEST
; A change has been made in Xorg server 1.20 that replaying a key
; event with keyboard grabbed would generate extra focus change and
; enter/leave events. This basically breaks line-mode for apps like
; Firefox. This commit reimplements the grab & replay functionality
; with XI2 and XTEST.
* exwm-input.el (exwm-input--devices): New variable for caching slave
keyboards.
(exwm-input--update-devices): Update it and re-grab keys if necessary.
(exwm-input--on-Hierarchy): Event listener for the Hierarchy event that
would in turn call `exwm-input--update-devices' to update the cache.
* exwm-input.el (exwm-input--on-KeyPress): Use XI2 KeyPress events.
(exwm-input--on-KeyRelease): Event listener for the KeyRelease events.
(exwm-input--grab-global-prefix-keys): Use XI2 and also select
KeyRelease events.
(exwm-input--on-KeyPress-line-mode): Use XI2 KeyPress events and replay
key events with XTEST.
(exwm-input--on-KeyPress-char-mode, exwm-input--grab-keyboard)
(exwm-input--release-keyboard): Use XI2 KeyPress events.
* exwm-input.el (exwm-input--init): Initialize the XI2 and XTEST
extensions; add listeners for XI2 KeyPress, KeyRelease and Hierarchy
events.
2018-05-27 Chris Feng <chris.w.feng@gmail.com>
Fix systemtray position when menu-bar / tool-bar is enabled
* exwm-systemtray.el (exwm-systemtray--on-workspace-switch)
(exwm-systemtray--on-randr-refresh): Take menu-bar / tool-bar into
account when placing systemtray.
2018-05-20 Chris Feng <chris.w.feng@gmail.com>
Provide a fallback value for X window geometry
* exwm-manage.el (exwm-manage--update-geometry): Ditto.
2018-05-13 Chris Feng <chris.w.feng@gmail.com>
Avoid hiding full screen X windows unexpectedly
* exwm-layout.el (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen): Set the Emacs window of a full screen X
window dedicated to its buffer such that newly created X windows won't
replace it.
2018-04-15 Paul Eggert <eggert@cs.ucla.edu>
Port to 32-bit Emacs on master branch
2018-04-01 Chris Feng <chris.w.feng@gmail.com>
Preserve keyboard grab state after quitting fullscreen mode
* exwm-layout.el (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen, exwm-layout-toggle-fullscreen): Ditto.
2018-04-01 Chris Feng <chris.w.feng@gmail.com>
Add support for various key processing variables
* exwm-input.el (exwm-input--mimic-read-event): New function for
handling `extra-keyboard-modifiers' and `keyboard-translate-table'.
(exwm-input--cache-event): Do not unread events here.
(exwm-input--on-KeyPress-line-mode)
(exwm-input--on-KeyPress-char-mode): Compare with preprocessed events
and unread raw ones.
* exwm-input.el (exwm-input--on-KeyPress-line-mode): Add support for
`overriding-terminal-local-map'.
2018-03-23 Chris Feng <chris.w.feng@gmail.com>
Fix a compatibility issue with Emacs 24
* exwm-core.el (exwm--defer): `time-add' in Emacs 24 only accept lists.
2018-03-23 Chris Feng <chris.w.feng@gmail.com>
Fix local simulation keys
* exwm-input.el (exwm-input--on-KeyPress-line-mode): Do not test
`exwm-mode-map' to see if a key should be forwarded to Emacs as it's
overridden when local simulation keys are present.
2018-03-23 Chris Feng <chris.w.feng@gmail.com>
Avoid entering line-mode after exit minibuffer
* exwm-input.el (exwm-input--on-pre-command): Keys should be forwarded
to the X window (if its Emacs window is currently selected) after
exiting the minibuffer.
2018-03-23 Chris Feng <chris.w.feng@gmail.com>
Add workspace support in per-application configurations
* exwm-manage.el (exwm-manage-configurations)
(exwm-manage--manage-window): Allow to specify which workspace an
applications should be created on.
2018-03-14 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.18
2018-03-14 Chris Feng <chris.w.feng@gmail.com>
Fix wrong exwm-active frame parameters
* exwm-randr.el (exwm-randr--refresh): Intern output names.
2018-03-10 Chris Feng <chris.w.feng@gmail.com>
Fix regressions
(exwm-init): Do not signal an error on startup.
* exwm-floating.el (exwm-floating-toggle-floating):
* exwm-input (exwm-input-send-next-key)
(exwm-input-send-simulation-key):
* exwm-layout (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen, exwm-layout-toggle-fullscreen): Fix
incorrect use of `cl-return-from'.
2018-03-10 Chris Feng <chris.w.feng@gmail.com>
Delay setting workspaces active/inactive
* exwm-randr.el (exwm-randr--refresh): Set workspaces active/inactive
after their geometries have been updated.
2018-03-09 Chris Feng <chris.w.feng@gmail.com>
Minor fixes
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Support replacing and being replaced by other window managers
* exwm.el (exwm--on-SelectionClear, exwm--init-icccm-ewmh)
(exwm--exit-icccm-ewmh, exwm--wmsn-acquire, exwm--wmsn-release): Get the
window manager selection; die when it is cleared.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Clean up when failing to start
* exwm.el (exwm-init, exwm-exit): Clean up when failing to start.
(exwm--exit-icccm-ewmh): Stop deleting root window properties on exit:
delete function.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Name all helper windows created by EXWM
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace)
(exwm-workspace--init):
* exwm-input.el (exwm-input--init):
* exwm-floating.el (exwm-floating--set-floating): Name created helper
windows with prefix "EXWM".
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Add interactive commands for starting and stopping EXWM
* exwm.el (exwm-reset): Remove autoload cookie.
(exwm-init, exwm-exit): Add autoload cookie and interactive declaration.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Disconnect on `exwm--exit'
* exwm.el (exwm-exit): Disconnect `exwm-connection'.
* exwm.el (exwm-init, exwm-exit, exwm--confirm-kill-emacs)
* exwm-workspace.el (exwm-workspace--set-desktop-geometry)
(exwm-workspace--init, exwm-workspace--exit): Move
`confirm-kill-emacs' to this exwm.el`. Delegate disconnection of
`exwm--connection' to `exwm-exit'.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
* exwm.el (exwm--exit): Drop SubstructureRedirect on root window.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Cleanup exwm-workspace on exit
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs): Move
deinitialization to `exwm-workspace--exit'.
(exwm-workspace--exit): Reparent minibuffer frame to the root window,
turn workspace frames into regular frames, restore frame parameters.
(exwm-workspace--init): Reset the fullscreen counter.
(exwm-workspace--remove-frame-as-workspace): Reset fullscreen state.
(exwm-workspace--init-minibuffer-frame)
(exwm-workspace--exit-minibuffer-frame): New functions configuring the
minibuffer frame.
(exwm-workspace--init, exwm-workspace--exit): Use the above functions to
configure the minibuffer frame.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Dissociate frame creation and deletion handlers from the actual
configuration of frames as workspaces
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace)
(exwm-workspace--remove-frame-as-workspace): Limit functionality to the
configuration of frames as workspaces.
(exwm-workspace--on-after-make-frame)
(exwm-workspace--on-delete-frame): Callbacks run on frame creation and
deletion that may use or stop them from being used as workspaces.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Factor out `exwm-randr--on-ScreenChangeNotify'
* exwm-randr.el (exwm-randr--on-ScreenChangeNotify)
(exwm-randr--init): Factor ScreenChangeNotify event callback into a
function.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Cleanup exwm-manage on exit
* exwm-manage.el (exwm-manage--unmanage-window): Map windows when
quitting.
(exwm-manage--exit): Remap all windows.
* exwm.el (exwm--exit): Reorder deinitialization sequence so that
windows are reparented before the workspaces are removed.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Cleanup exwm-layout on exit
* exwm-layout.el (exwm-layout--exit): Remove
`window-pixel-width-before-size-change' hook.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Cleanup exwm-input on exit
* exwm-input.el (exwm-input--exit): Remove missing hook reset window
variable.
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Prevent duplicate keys in frameset-filter-alist
* exwm-workspace.el (exwm-workspace--init):
* exwm-randr.el (exwm-randr--init): Prevent duplicate keys in
frameset-filter-alist
2018-03-06 Adrián Medraño Calvo <adrian@medranocalvo.com>
Support disabling default `exwm-mode-map' bindings
* exwm-input.el (exwm-input--on-KeyPress-line-mode): Use
`lookup-key' to check whether a the event is defined in the
`exwm-mode-map' keymap.
2018-03-04 Chris Feng <chris.w.feng@gmail.com>
Avoid switching buffer when moving an X window already in place
* exwm-workspace.el (exwm-workspace-move-window): This is required when
calling `exwm-workspace-move-window' from `exwm-layout--refresh'.
2018-03-04 Chris Feng <chris.w.feng@gmail.com>
Fix fullscreen mode after switching workspace and back
* exwm-layout.el (exwm-layout--show): Always set an X window in
fullscreen mode the size in fullscreen.
(exwm-layout-unset-fullscreen): Leave the fullscreen mode first.
* exwm-layout.el (exwm-layout--fullscreen-p): New function telling
whether the current buffer is in fullscreen mode.
(exwm-layout-set-fullscreen, exwm-layout-unset-fullscreen)
(exwm-layout-toggle-fullscreen):
* exwm-manage.el (exwm-manage--manage-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 it.
2018-03-04 Chris Feng <chris.w.feng@gmail.com>
Fix local simulation keys
* exwm-input.el (exwm-input--set-simulation-keys): Try the local binding
first do not clear the hash table (rely on GC).
2018-03-04 Chris Feng <chris.w.feng@gmail.com>
Add header-line format support in per-application configurations
* exwm-manage.el (exwm-manage-configurations):
* exwm-floating.el (exwm-floating--set-floating)
(exwm-floating--unset-floating): Allow customizing header-line format
for floating/tiling X windows.
2018-03-04 Chris Feng <chris.w.feng@gmail.com>
Add prefix arguments support for various commands
* exwm-workspace.el (exwm-workspace-switch)
(exwm-workspace-switch-create, exwm-workspace-move)
(exwm-workspace-move-window): Add prefix arguments support.
2018-03-03 Chris Feng <chris.w.feng@gmail.com>
Add various per-application configurations
* exwm-manage.el (exwm-manage-configurations): Add options for
fullscreen mode and floating & tiling mode-line formats.
(exwm-manage--manage-window): Add support for configuring
line-mode/char-mode, prefix keys, simulation keys and fullscreen mode.
* exwm-floating.el (exwm-floating--set-floating): Add support for
configuring the geometry, mode-line format and border width of a
floating X window.
(exwm-floating--unset-floating): Add support for configuring the
mode-line format of a tiling X window.
2018-03-03 Johan Johansson <96.bryal@gmail.com>
Fix EXWM buffers not being hidden on workspace switch
* exwm-workspace.el (exwm-workspace-switch, exwm-workspace-move-window):
Use `equal' to compare RandR output names.
2018-03-02 Chris Feng <chris.w.feng@gmail.com>
Add initial support for per-application configurations
* exwm-core.el (exwm--configurations): New buffer-local variable
recording the configurations of an X window.
* exwm-manage.el (exwm-manage-configurations): New user option as the
per-application configurations.
(exwm-manage--get-configurations): New function for fetching the
configurations of this X window.
(exwm-manage--manage-window): Fetch the configurations and check if the
X window should be floating/tiling.
2018-03-02 Chris Feng <chris.w.feng@gmail.com>
Improve multi-monitor performance
* exwm-randr.el (exwm-randr--refresh): Use GetScreenResourcesCurrent
instead of GetScreenResources to avoid polling hardware changes.
(exwm-randr--init): GetScreenResourcesCurrent requires RandR 1.3 .
2018-02-26 Chris Feng <chris.w.feng@gmail.com>
Make `exwm-manage-ping-timeout' a user option
* exwm-manage.el (exwm-manage-ping-timeout): Now a user option.
2018-02-26 Chris Feng <chris.w.feng@gmail.com>
Forward keys defined in `exwm-mode-map' to Emacs by default
* exwm-input.el (exwm-input-prefix-keys): Remove ?\C-c.
(exwm-input--on-KeyPress-line-mode):
* exwm-core.el (): Detect keys in `exwm-mode-map' in line-mode.
2018-02-26 Chris Feng <chris.w.feng@gmail.com>
Improve the Customize interface for simulation keys
* exwm-input.el (exwm-input--set-simulation-keys): New function for
actullay setting simulation keys.
(exwm-input-simulation-keys, exwm-input-set-local-simulation-keys)
(exwm-input--init): Use this instead of
`exwm-input-set-simulation-keys'.
(exwm-input-set-simulation-keys): Make obsolete.
(exwm-input--read-keys): New function for reading an arbitrary key
sequence.
(exwm-input-set-simulation-key): New command for setting a new
simulation key (which can be saved in the Customize interface).
2018-02-26 Chris Feng <chris.w.feng@gmail.com>
Add Customize interface for global keys
* exwm-input.el (exwm-input--set-key): New function for actually setting
the binding.
(exwm-input-global-keys): New user option for customizing global keys.
(exwm-input-set-key): Update `exwm-input-global-keys' and call
`exwm-input--set-key'
(exwm-input--init): Initialize global keys.
2018-02-24 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.17
2018-02-22 Chris Feng <chris.w.feng@gmail.com>
Hide blocked frames (they are visible with a compositor)
* exwm-workspace.el (exwm-workspace--set-active): New function for
setting the 'exwm-active' frame parameter and show/hide frames BTW.
(exwm-workspace--active-p): New function checking whether a frame is
active.
(exwm-workspace--set-fullscreen, exwm-workspace-switch)
(exwm-workspace-move-window):
* exwm-randr.el (exwm-randr--refresh): Use them.
* exwm-workspace.el (exwm-workspace-attach-minibuffer)
(exwm-workspace--show-minibuffer, exwm-workspace--hide-minibuffer):
Show/Hide the minibuffer frame.
2018-02-22 Chris Feng <chris.w.feng@gmail.com>
Mark active workspaces on each output
* exwm-randr.el (exwm-randr--refresh): Mark active workspaces.
* exwm-workspace.el (exwm-workspace-switch): Use the marks to show/hide
X windows when switching workspace; do not update timestamp.
(exwm-workspace-move-window): Use the marks to hide X windows after
moving them.
(exwm-workspace--init): Update `frameset-filter-alist'.
2018-02-22 Chris Feng <chris.w.feng@gmail.com>
Grab global keys on top-level X windows
* exwm-input.el (exwm-input--on-CreateNotify): New function for grabbing
global keys on newly created X windows.
(exwm-input--update-global-prefix-keys): Grab global keys on top-level X
windows instead of the root window.
(exwm-input--grab-global-prefix-keys): New function for grabbing global
keys on X windows.
(exwm-input--release-keyboard): Grab global keys in char-mode.
(exwm-input--init): Select CreateNotify events.
* exwm-core.el (exwm--unlock):
* exwm-input.el (exwm-input--on-FocusIn, exwm-input--init): Do not
handle FocusIn events on the root window.
2018-02-20 Chris Feng <chris.w.feng@gmail.com>
Fix unexpected focus change after a global key binding is activated
* exwm-core.el (exwm--unlock): Select FocusChange events on the root
window.
* exwm-input.el (exwm-input--on-FocusIn): Input focus should stay on the
current workspace when the root window receives a FocusIn event.
2018-02-20 Chris Feng <chris.w.feng@gmail.com>
Use the 'exwm-randr-output' frame parameter to determine the output
* exwm-randr.el (exwm-randr--refresh): Always set the name of primary
output.
* exwm-workspace.el (exwm-workspace-switch)
(exwm-workspace-move-window): Use 'exwm-randr-output' frame parameter to
check if two frames are on the same output.
2018-02-20 Chris Feng <chris.w.feng@gmail.com>
Remove redundant code for fullscreen mode
* exwm-manage.el (exwm-manage--unmanage-window)
(exwm--on-ClientMessage): No need to modify workspace when an X window
enters/leaves fullscreen mode.
2018-02-20 Chris Feng <chris.w.feng@gmail.com>
Add Customize interface for simulation keys
* exwm-input.el (exwm-input-simulation-keys): New user option for
setting simulation keys.
(exwm-input--init): Initialize simulation keys from this variable.
* exwm-input.el (exwm-input--simulation-prefix-keys)
(exwm-input--on-KeyPress-line-mode)
(exwm-input--update-simulation-prefix-keys)
(exwm-input-set-simulation-keys, exwm-input-set-local-simulation-keys)
(exwm-input-send-simulation-key): `exwm-input--simulation-keys' is now a
hash table storing both simulation keys and prefix keys.
(exwm-input--unset-simulation-keys): Clear the hash table.
(exwm-input--exit): Use `exwm-input--unset-simulation-keys'.
* exwm-core.el (exwm--kmacro-map, exwm-mode-menu): Adapt to the change
of `exwm-input--simulation-keys'.
* exwm-config.el (exwm-config-default): Update the example.
2018-02-19 Chris Feng <chris.w.feng@gmail.com>
Fix various issues with multi-monitor support
* exwm-workspace.el (exwm-workspace-switch): Do not hide X windows when
switching to a workspace on another output; update the timestamp (last
switched to) of a workspace frame.
(exwm-workspace-move-window): Do not hide an X window when moving it to
an active workspace on another output.
* exwm-floating.el (exwm-floating--set-floating):
* exwm-layout.el (exwm-layout-set-fullscreen):
* exwm-manage.el (exwm-manage--manage-window)
(exwm-manage--on-ConfigureRequest):
* exwm-systemtray.el (exwm-systemtray--refresh)
(exwm-systemtray--init): Correct coordinate calculations.
* exwm-workspace.el (exwm-workspace--current-width): Removed since no
longer used.
2018-02-19 Chris Feng <chris.w.feng@gmail.com>
Support displaying floating X windows on all workspaces
; Setting _NET_WM_DESKTOP to 0xffffffff makes an X windows appearing
; on all desktops (EWMH). It's tricky to do it for tiling X windows
; so it's not implemented.
* exwm-core.el (exwm--desktop): New buffer-local variable recording the
value of _NET_WM_DESKTOP.
* exwm-layout.el (exwm-layout--hide): Do not hide X windows with this
property set to 0xffffffff.
* exwm.el (exwm--update-desktop): New function for fetching the value of
_NET_WM_DESKTOP and setting `exwm--desktop'.
* exwm-manage.el (exwm-manage--manage-window): Use it.
* exwm-workspace.el (exwm-workspace--set-desktop): Also update
`exwm--desktop'.
2018-02-19 Chris Feng <chris.w.feng@gmail.com>
Add customization settings
; Also fix documentations.
2018-02-18 Chris Feng <chris.w.feng@gmail.com>
Make X windows container-less
; This is an attempt to make (managed) X windows container-less, i.e.
direct children of the root window. This is mainly to make EXWM
compatible with third-party compositors. Other issues like wrong
absolute position should also get resolved by the way. The workspace
containers ("virtual roots") are also removed. However Emacs frames are
still wrapped in containers to avoid unexpected stack reordering.
* exwm-cm.el: Make this module obsolete as EXWM supports third-party
compositors now.
* exwm-core.el (exwm--container):
* exwm-floating.el (exwm-floating--set-floating)
(exwm-floating--unset-floating, exwm-floating-hide)
(exwm-floating--start-moveresize, exwm-floating--stop-moveresize)
(exwm-floating--do-moveresize, exwm-floating-move):
* exwm-input.el (exwm-input--update-focus):
* exwm-layout.el (exwm-layout--show, exwm-layout--hide)
(exwm-layout-set-fullscreen, exwm-layout-unset-fullscreen):
* exwm-manage.el (exwm-manage--manage-window,
exwm-manage--unmanage-window)
(exwm-manage--kill-buffer-query-function, exwm-manage--kill-client):
* exwm-workspace.el (exwm-workspace--set-fullscreen,
exwm-workspace-switch)
(exwm-workspace-move-window, exwm-workspace--add-frame-as-workspace)
(exwm-workspace--remove-frame-as-workspace): Make adaptions for
container-less X windows.
* exwm-workspace.el (exwm-workspace--update-ewmh-props):
* exwm.el (exwm--init-icccm-ewmh, exwm--exit-icccm-ewmh): No longer use
virtual roots.
* exwm-input.el (exwm-input--on-workspace-list-change)
(exwm-input--update-global-prefix-keys, exwm-input--init,
exwm-input--exit): From now on global key bindings are grabbed on the
root window so it's no long required to re-grab them each time the
workspace list changes. As a result
`exwm-input--on-workspace-list-change' and its corresponding references
are discarded. It remains to be seen if this change will raise input
focus issues.
* exwm-manage.el (exwm-manage--manage-window): Explicitly set the
workspace for newly managed X windows.
* exwm-floating.el (exwm-floating--set-floating): Avoid implicit
reference to the current workspace.
* exwm-core.el (exwm--set-geometry): New function for setting the
geometry of an X window.
* exwm-layout.el (exwm-layout--resize-container): Replaced by
`exwm-layout--resize-container'.
* exwm-core.el (exwm--guide-window): New global variable recording the
guide X window.
* exwm.el (exwm--init-icccm-ewmh): Set it.
* exwm-input.el (exwm-input--post-init): New function containing staffs
for initialization but should better get called after the event loop
starts.
* exwm.el (exwm-init): Use it.
2018-02-04 Chris Feng <chris.w.feng@gmail.com>
Avoid crashing Emacs by resizing its frame into 0x0
* exwm-floating.el (exwm-floating--do-moveresize):
* exwm-layout.el (exwm-layout-enlarge-window): Resizing a frame into 0x0
crashes Emacs so additional checks are required.
2018-01-14 Chris Feng <chris.w.feng@gmail.com>
Support key translation in line-mode
* exwm-input.el (exwm-input--translate): New function for translating
keys according to `input-decode-map', `local-function-key-map' and
`key-translation-map'.
(exwm-input--cache-event): Use it.
2018-01-14 Chris Feng <chris.w.feng@gmail.com>
Raise docks after quitting full screen mode
* exwm-layout.el (exwm-layout-unset-fullscreen): Raise docks lowered
when entering full screen mode.
2017-12-31 Chris Feng <chris.w.feng@gmail.com>
; Add missing autoload cookies.
2017-12-31 Chris Feng <chris.w.feng@gmail.com>
Add support for `mouse-autoselect-window'
; This feature requires both `mouse-autoselect-window` and
; `focus-follows-mouse' being set. Delaying autoselection is not
; supported yet.
* exwm-core.el (exwm--client-event-mask): Select the EnterNotify event
on each X window when `mouse-autoselect-window' is set.
* exwm-input.el (exwm-input--on-EnterNotify): New function for making
`mouse-autoselect-window' work on X windows.
(exwm-input--init): Listen to EnterNotify event when
`mouse-autoselect-window' is set.
2017-12-31 Chris Feng <chris.w.feng@gmail.com>
Update copyright year to 2018
2017-12-10 Chris Feng <chris.w.feng@gmail.com>
; Eliminate a compilation warning.
2017-11-26 Chris Feng <chris.w.feng@gmail.com>
Re-grab global keys on keyboard update
* exwm-input.el (exwm-input--on-keysyms-update): New function for
re-grabbing global keys.
(exwm-input--init): Register it to XELB.
2017-11-26 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.16
2017-11-24 Chris Feng <chris.w.feng@gmail.com>
Another fix for input focus issues
* exwm-core.el (exwm--defer):
* exwm-input.el (exwm-input--update-focus-defer): Avoid unnecessarily
long delay.
* exwm-input.el (exwm-input--on-FocusIn): Filter out FocusIn events
generated as a result of grab/ungrab or when the keyboard is grabbed.
2017-11-24 Chris Feng <chris.w.feng@gmail.com>
Fix possible wrong context when killing buffers
* exwm-manage.el (exwm-manage--unmanage-window): Make sure to use the
correct context to read/set buffer-local variables when killing buffers.
2017-11-19 Chris Feng <chris.w.feng@gmail.com>
Fix various input focus issues
* exwm-input.el (exwm-input--on-buffer-list-update): Cancel the frame
redirection introduced by 421c0512f7.
* exwm-input.el (exwm-input--on-buffer-list-update): Only ignore temp
buffers just switched from.
* exwm-input.el (exwm-input--update-focus-commit): New function for
ensuring the input focus lock can always be released.
(exwm-input--update-focus-defer, exwm-input--update-focus): Use it.
* exwm-input.el (exwm-input--update-focus): No need to select frames;
only transfer X input focus.
* exwm-core.el (exwm--defer): New macro for correcting the use of
`run-with-idle-timer' by taking `current-idle-time' into account.
* exwm-input.el (exwm-input--update-focus-defer)
(exwm-input--update-focus):
* exwm-layout.el (exwm-layout--on-minibuffer-setup)
(exwm-layout--on-echo-area-change):
* exwm-manage.el (exwm-manage--unmanage-window)
(exwm-workspace--prompt-delete):
* exwm-workspace.el (exwm-workspace-switch)
(exwm-workspace--add-frame-as-workspace): Use it.
2017-11-19 Chris Feng <chris.w.feng@gmail.com>
Free unused X resources
* exwm-cm.el (exwm-cm--paint-tree): Make sure the clip can be destroyed
even the X window is in full screen mode.
(exwm-cm--paint-transparent, exwm-cm--paint-background): Free pixmaps
after creating pictures.
2017-11-19 Chris Feng <chris.w.feng@gmail.com>
Correct the detection of emacsclient
* exwm.el (exwm-enable): Use `daemonp' instead of `display-graphic-p'.
2017-11-19 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'kriyative/bugfix-selecting-deleted-buffer-error' into
externals/exwm
2017-11-09 Chris Feng <chris.w.feng@gmail.com>
Be more precise when choosing the init hook
* exwm.el (exwm-enable): Run `exwm-init' in
`after-make-frame-functions' only for emacsclient and
`window-setup-hook' only for ordinary sessions.
2017-11-09 Chris Feng <chris.w.feng@gmail.com>
Update the workarounds for `unread-command-events'
* exwm-input.el (exwm-input--unread-event): Update the note.
(exwm-input-send-next-key): Remove the workaround.
2017-11-05 Ram Krishnan <kriyative@gmail.com>
Fix for "Selecting deleted buffer" exception
2017-11-05 Chris Feng <chris.w.feng@gmail.com>
Filter out events relating to temp buffers
* exwm-input.el (exwm-input--on-buffer-list-update): Filter out events
relating to temp buffers by detecting if temp-buffer is present.
2017-10-09 Chris Feng <chris.w.feng@gmail.com>
Fix systemtray applications crash when restarting
* exwm-systemtray.el (exwm-systemtray--exit): Reparent out the tray
embedder to protect tray icons.
2017-09-10 Chris Feng <chris.w.feng@gmail.com>
Avoid comparing raw button events
* exwm-input.el (exwm-input--move-keysym, exwm-input--move-mask)
(exwm-input--resize-keysym, exwm-input--resize-mask): Removed.
(exwm-input--on-ButtonPress): Compare using Emacs events rather than raw
X11 events or it would fail with num-lock no.
(exwm-input--init): No longer cache raw keysym/state for button events.
2017-08-31 Chris Feng <chris.w.feng@gmail.com>
Update systemtray when initializing
* exwm-systemtray.el (exwm-systemtray--init): Systemtray is not placed
correctly when there's a panel launched before EXWM.
2017-08-31 Chris Feng <chris.w.feng@gmail.com>
Avoid reusing dedicated window
* exwm-floating.el (exwm-floating--unset-floating):
* exwm-manage.el (exwm-manage--on-MapRequest): Do not select a dedicated
window for displaying a buffer.
2017-08-02 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0,15
2017-07-16 Chris Feng <chris.w.feng@gmail.com>
Allow customizing workspace indexes
* exwm-workspace.el (exwm-workspace-index-map): New variable for
customizing workspace indexes.
(exwm-workspace--update-switch-history): Use it.
2017-05-31 Chris Feng <chris.w.feng@gmail.com>
Allow switching to a workspace by selecting one X window on it
* exwm-workspace.el (exwm-workspace-switch-to-buffer): Only allows it
when `exwm-layout-show-all-buffers' is nil.
2017-05-30 Chris Feng <chris.w.feng@gmail.com>
Fix X display name comparison
* exwm-workspace--add-frame-as-workspace
(exwm-workspace--add-frame-as-workspace): Manually compare X display
names as there's no built-in function handles this correctly.
2017-05-07 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.14
2017-05-07 Chris Feng <chris.w.feng@gmail.com>
Force repositioning floating Emacs frames
* exwm-floating.el (exwm-floating--set-floating): Ditto.
2017-04-23 Chris Feng <chris.w.feng@gmail.com>
; Do not cache events for non-`exwm-mode' buffers
2017-04-16 Chris Feng <chris.w.feng@gmail.com>
Avoid comparing X display names
* exwm-workspace.el (exwm-workspace--add-frame-as-workspace): An X
display name set by XELB can be different from (but equivalent with) the
one set by Emacs.
2017-04-10 Chris Feng <chris.w.feng@gmail.com>
Only add graphic frames to `exwm-manage--frame-outer-id-list'
* exwm-manage.el (exwm-manage--add-frame, exwm-manage--remove-frame):
Add checks for graphic frames.
2017-03-05 Chris Feng <chris.w.feng@gmail.com>
Manually run `focus-in-hook' and `focus-out-hook'
; Since X windows are managed by EXWM, the current Emacs frame should
always be considered focused logically.
* exwm-workspace.el (exwm-workspace-switch): Manually run
`focus-in-hook' and `focus-out-hook'.
(exwm-workspace--handle-focus-in, exwm-workspace--handle-focus-out): New
functions for overriding `handle-focus-in' and `handle-focus-out'.
(exwm-workspace--init, exwm-workspace--exit): Override
`handle-focus-in' and `handle-focus-out'
2017-03-05 Chris Feng <chris.w.feng@gmail.com>
; Update the workaround for bug#23980
2017-02-24 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'Stebalien/expose-line-mode-passthrough' into
externals/exwm
2017-02-24 Chris Feng <chris.w.feng@gmail.com>
; Expose `exwm-input-line-mode-passthrough' as a public interface.
2017-02-24 Chris Feng <chris.w.feng@gmail.com>
Fix systemtray position
* exwm-workspace.el (exwm-workspace--update-workareas-hook): New hook
run when workareas get updated.
(exwm-workspace--update-workareas): Run the hook.
* exwm-systemtray.el (exwm-systemtray--on-workspace-switch)
(exwm-systemtray--on-randr-refresh): Take struts into account when
calculating the position for systemtray.
(exwm-systemtray--on-struts-update): Alias of
`exwm-systemtray--on-randr-refresh'.
(exwm-systemtray--init, exwm-systemtray--exit): Manipulate
`exwm-workspace--update-workareas-hook'.
2017-02-22 Steven Allen <steven@stebalien.com>
Use let instead of setq when setting exwm-input--line-mode-passthrough
That way, exwm won't clobber user modifications to this variable.
2017-02-12 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.13
2017-02-10 Chris Feng <chris.w.feng@gmail.com>
Correct a renamed variable
* exwm-core.el (exwm--kmacro-map): Correct
`exwm-input--during-key-sequence' that was left out in 089afdc8.
2017-02-05 Chris Feng <chris.w.feng@gmail.com>
Add a menu entry to `exwm-mode-map'
* exwm-core.el (exwm-mode-menu): Add a menu entry for closing X windows.
2017-02-05 Chris Feng <chris.w.feng@gmail.com>
Fix checkdoc warnings
2017-02-05 Chris Feng <chris.w.feng@gmail.com>
Update copyright year to 2017
2017-01-03 Chris Feng <chris.w.feng@gmail.com>
Prevent certain frame parameters from being saved/restored
* exwm-input.el (exwm-input--init):
* exwm-randr.el (exwm-randr--init):
* exwm-workspace.el (exwm-workspace--init): Add certain frame parameters
into `frameset-filter-alist' to prevent them from being saved/restored
which makes little sense and is problematic.
2016-12-26 Chris Feng <chris.w.feng@gmail.com>
Fix a bug with zero floating border width
* exwm-manage.el (exwm-manage--manage-window): Avoid setting ColorMap
mask when creating an X window if floating border is zero.
2016-11-19 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.12
2016-11-13 Chris Feng <chris.w.feng@gmail.com>
Grab global prefix keys with num-lock mask set.
* exwm-input.el (exwm-input--update-global-prefix-keys): Grab global
prefix keys with num-lock mask set, or those keys won't be activated
when num-lock is enabled.
2016-10-06 Chris Feng <chris.w.feng@gmail.com>
Fix a possible deadlock
* exwm-input.el (exwm-input--update-focus): Unlock before switching
workspace. Also make sure the correct Emacs window is chosen for the
target workspace.
2016-10-06 Chris Feng <chris.w.feng@gmail.com>
Avoid updating input focus when renaming buffers
* exwm-workspace.el (exwm-workspace-switch-to-buffer)
(exwm-workspace-rename-buffer): Do not update input focus.
2016-10-06 Chris Feng <chris.w.feng@gmail.com>
Fix problems with active minibuffer
* exwm-floating.el (exwm-floating--unset-floating): Never use the
minibuffer window to display an `exwm-mode' buffer.
* exwm-input.el (exwm-input--on-buffer-list-update)
(exwm-input--update-focus): Allow updating input focus when the
minibuffer is active.
(exwm-input--update-focus): Handle the case when an auto-hiding
minibuffer is active.
(exwm-input--during-key-sequence): Renamed to
`exwm-input--line-mode-passthrough'.
(exwm-input--line-mode-passthrough): New variable for forcing all events
to be passed to Emacs in line-mode.
(exwm-input--on-KeyPress-line-mode, exwm-input-send-next-key): Use it.
(exwm-input--finish-key-sequence, exwm-input--init, exwm-input--exit):
Drop `exwm-input--finish-key-sequence'.
(exwm-input--line-mode-cache): New variable for caching incomplete key
sequences.
(exwm-input--cache-event): New function for handling new key events.
(exwm-input--on-KeyPress-line-mode, exwm-input--on-KeyPress-char-mode):
Use it.
2016-10-01 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.11
2016-09-30 Felix Lange <fjl@twurst.com>
Use read-buffer-to-switch in exwm-workspace-switch-to-buffer
read-buffer-to-switch elides the current buffer from the list of
completions and selects a sane default.
2016-09-25 Chris Feng <chris.w.feng@gmail.com>
Fix a frame resizing problem for Lucid build
* exwm-manage.el (exwm-manage--frame-outer-id-list): New variable for
storing frame window-outer-id's.
(exwm-manage--add-frame, exwm-manage--remove-frame): New functions for
adding/removing ids to/from the variable.
(exwm-manage--init): Add the functions to the corresponding hooks.
(exwm-manage--on-ConfigureRequest): Check for frames and avoid handling
them.
2016-09-25 Chris Feng <chris.w.feng@gmail.com>
Fix `exwm-manage--kill-buffer-query-function'
* exwm-manage.el (exwm-manage--kill-buffer-query-function): Check
buffer-local variables for destroyed X windows; Avoid force killing
clients that support WM_DELETE_WINDOW but not _NET_WM_PING; Use
`y-or-n-p' instead for querying.
2016-09-23 Chris Feng <chris.w.feng@gmail.com>
Use X window borders
; This commit replaces the internal borders of Emacs frames with X
; window borders. This should make the flickering issue of floating X
; windows less serious.
* exwm-floating.el (exwm-floating--border-pixel)
(exwm-floating--border-colormap): New variables for storing border pixel
and its colormap.
(exwm-floating--set-floating): Do not set the internal border (and
background color) of floating frames; do not take
`exwm-floating-border-width' into account when calculating geometries;
set the border of floating X window containers.
(exwm-floating--unset-floating): No need to restore the position of X
windows any more; hide the border of floating X window containers.
(exwm-floating--init): Initialize the border pixel.
* exwm-layout.el (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen): Show/Hide container border respectively.
* exwm-manage.el (exwm-manage--manage-window): Set the border pixel and
colormap of X window containers.
* exwm-workspace.el (exwm-workspace-move-window): Do not set the
internal border and background color of floating frames.
* exwm.el (exwm--on-ClientMessage): Simplify the code for calculating
_NET_REQUEST_FRAME_EXTENTS.
2016-09-23 Chris Feng <chris.w.feng@gmail.com>
Remember the geometries of floating X windows
* exwm-floating.el (exwm-floating--stop-moveresize):
* exwm-layout.el (exwm-layout-enlarge-window): Update the geometry after
resizing.
2016-09-23 Chris Feng <chris.w.feng@gmail.com>
Redirect KeyPress events sent to system tray icons
* exwm-systemtray.el (exwm-systemtray--embed): Select KeyPress events on
system tray icons.
(exwm-systemtray--on-KeyPress): New function for redirecting KeyPress
events.
(exwm-systemtray--init): Attach the event listener.
* exwm-systemtray.el (exwm-systemtray--init): Fix a typo.
2016-09-23 Chris Feng <chris.w.feng@gmail.com>
Allow selecting an X window from another workspace
* exwm-input.el (exwm-input--on-buffer-list-update): Filter out
switch-frame events.
(exwm-input--update-focus): Switch workspace to set input focus on an X
window from another workspace.
2016-09-22 Chris Feng <chris.w.feng@gmail.com>
Add support for keyboard macro
* exwm-core.el (exwm--kmacro-map): New keymap used when executing
keyboard macros.
(exwm-mode): Use `exwm--kmacro-map' to override the default keymap.
* exwm-input.el (exwm-input--on-KeyPress-line-mode): Send extra key
events when defining keyboard macros.
2016-09-22 Chris Feng <chris.w.feng@gmail.com>
Drop support for _NET_WM_STATE_MODAL
; Modal X windows are not necessarily floating.
* exwm.el (exwm--on-ClientMessage, exwm--init-icccm-ewmh): Drop support
for _NET_WM_STATE_MODAL.
2016-09-22 Chris Feng <chris.w.feng@gmail.com>
; Remove dead code
2016-08-31 Chris Feng <chris.w.feng@gmail.com>
Force using visible buffers in `other-buffer'
* exwm-floating.el (exwm-floating--set-floating):
* exwm-workspace.el (exwm-workspace-move-window): Buffers visible on
other frames should be treated as invisible. One side effect is visible
buffers on the current frame is also taken into account.
2016-08-30 Ved Vyas <ved@vyas.io>
Improve exwm-workspace-move-window behavior in specific case
This is a small change that improves the behavior of
`exwm-workspace-move-window` in the following situation:
0. `exwm-workspace-show-all-buffers` and `exwm-layout-show-all-buffers`
are `nil`*. 1. On active workspace `i`, there is X window `a` in the
selected Emacs window. 2. On workspace `j`, there is X window `b` in the
selected Emacs window on that workspace frame. 3. While workspace `i` is
active, use `exwm-workspace-move-window` to move `a` to workspace `j`.
4. Switch to workspace `j` and use `exwm-workspace-move-window` to move
`a` back to workspace `i`.
Expected behavior: X window `a` is once again shown in the selected
Emacs window on workspace `i` and X window `b` is once again shown in
the selected Emacs window on workspace `j`.
What is observed: `a` is OK but the selected Emacs window on workspace
`j` does not show `b`. However, `b` is the first candidate when doing a
`switch-to-buffer` in that Emacs window on workspace `j`.
I'm not sure if this is the correct and complete change required, but it
is working well so far.
*The expected behavior is observed with EXWM 0.10 if
exwm-{workspace,layout}-show-all-buffers are non-nil.
2016-08-28 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.10
2016-08-24 Chris Feng <chris.w.feng@gmail.com>
Add toggle commands
* exwm-input.el (exwm-input-toggle-keyboard): New command for toggling
keyboard mode.
* exwm-layout.el (exwm-layout-toggle-fullscreen): New command for
toggling fullscreen mode.
* exwm-core.el (exwm-mode-menu, exwm-mode-map): Use them.
2016-08-15 Chris Feng <chris.w.feng@gmail.com>
; Fix typos
2016-08-15 Chris Feng <chris.w.feng@gmail.com>
Do not set _NET_WORKAREA
* 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.
2016-08-14 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'feat/compositor' into externals/exwm
2016-08-14 Chris Feng <chris.w.feng@gmail.com>
Document the compositing manager module
* README.md:
* exwm.el: Mention this new feature.
2016-08-14 Chris Feng <chris.w.feng@gmail.com>
Implement compositing manager module
* exwm-cm.el: New compositing manager module.
2016-08-14 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.9
2016-08-14 Chris Feng <chris.w.feng@gmail.com>
Only check input focus for globally active model
* exwm-input.el (exwm-input--set-focus): Partly revert 810b471.
2016-08-12 Chris Feng <chris.w.feng@gmail.com>
Fix _NET_DESKTOP_VIEWPORT
* 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.
2016-08-12 Chris Feng <chris.w.feng@gmail.com>
Raise all docks/panels when switching workspace
* 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.
2016-08-12 Chris Feng <chris.w.feng@gmail.com>
Check for _NET_WM_STATE_FULLSCREEN on managing
* 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.
2016-08-12 Chris Feng <chris.w.feng@gmail.com>
* exwm-manage.el (exwm-manage--unmanage-window): Do not clear struts
when unmapping.
2016-08-12 Chris Feng <chris.w.feng@gmail.com>
Always put the desktop at bottom
* 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.
2016-08-12 Chris Feng <chris.w.feng@gmail.com>
* exwm-manage.el (exwm-manage--scan): Check for possibly destroyed
child.
2016-08-12 Chris Feng <chris.w.feng@gmail.com>
Fix CreateWindow attributes
; 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.
2016-08-10 Chris Feng <chris.w.feng@gmail.com>
Adapt for the changes in `window-configuration-change-hook'
* 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 Chris Feng <chris.w.feng@gmail.com>
Update timestamp for WM_TAKE_FOCUS ClientMessage
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix coordinates calculations concerning workspaces
* 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 Chris Feng <chris.w.feng@gmail.com>
Ensure floating hooks are run in the right context
* 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 Chris Feng <chris.w.feng@gmail.com>
Set background pixmap for system tray embedder
* 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 Chris Feng <chris.w.feng@gmail.com>
* exwm-layout.el (exwm-layout--show): Fix the position of floating X
windows.
2016-08-06 Chris Feng <chris.w.feng@gmail.com>
Avoid setting input focus on workspace containers
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix emacsclient issues
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix restarting issues
* 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 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.8
2016-07-31 Chris Feng <chris.w.feng@gmail.com>
; Eliminate compile warnings
2016-07-31 Chris Feng <chris.w.feng@gmail.com>
Fix restarting issues
* 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 Chris Feng <chris.w.feng@gmail.com>
Add restart support
* 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 Chris Feng <chris.w.feng@gmail.com>
; * exwm.el (exwm-enable): Ignore unrecognized command line arguments.
2016-07-30 Chris Feng <chris.w.feng@gmail.com>
; * exwm-workspace.el (exwm-workspace-switch): Input focus should be set
; on the frame where the target window resides.
2016-07-30 Taichi Uemura <t.uemura00@gmail.com>
set fullscreen-frame-count to 0 on exiting
2016-07-30 Chris Feng <chris.w.feng@gmail.com>
Fit the *Completions* buffer
* 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 Chris Feng <chris.w.feng@gmail.com>
Exit the active minibuffer on unmanaging X windows
* exwm-manage.el (exwm-manage--unmanage-window): Exit the minibuffer as
a precaution to prevent the "selecting deleted buffer" error.
2016-07-30 Chris Feng <chris.w.feng@gmail.com>
; * exwm-manage.el (exwm-manage--manage-window): Check the value range
; of _NET_WM_DESKTOP.
2016-07-30 Chris Feng <chris.w.feng@gmail.com>
Grab global keys on newly created workspaces
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix input focus transfer between workspaces
* 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 Chris Feng <chris.w.feng@gmail.com>
; * exwm-floating.el (exwm-floating--unset-floating): Reposition an X
; window when it changes from floating to tiling layout.
2016-07-29 Chris Feng <chris.w.feng@gmail.com>
Sync with XELB
* 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 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.7
2016-07-26 Chris Feng <chris.w.feng@gmail.com>
Always update input focus on entering minibuffer
* 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 Chris Feng <chris.w.feng@gmail.com>
Add an option to force using tiling layout
* 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 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.6
2016-07-25 Chris Feng <chris.w.feng@gmail.com>
Minor fixes for past few commits
* 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 Chris Feng <chris.w.feng@gmail.com>
; * exwm-input.el: Prevent moving/resizing a tiling X window.
2016-07-22 Chris Feng <chris.w.feng@gmail.com>
Fix issues with deleting the last workspace
* 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 Chris Feng <chris.w.feng@gmail.com>
Add minibuffer toggle command
* 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 Chris Feng <chris.w.feng@gmail.com>
Improve the performance of workspace creation
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix input focus issues revealed by recent commits
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix workspace creation and deletion
* 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 Chris Feng <chris.w.feng@gmail.com>
Minor fixes
* 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 Chris Feng <chris.w.feng@gmail.com>
Minor cleanups
; Eliminate compile warnings.
; Rename frame parameter 'exwm--urgency' to 'exwm-urgency'.
; Simplify expressions.
2016-07-19 Chris Feng <chris.w.feng@gmail.com>
Add support for attachable/detachable minibuffer
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix an bug for emacsclient
* exwm-workspace.el (exwm-workspace--init): Always create one initial
workspace by default.
2016-07-19 Chris Feng <chris.w.feng@gmail.com>
Fix a workspace switch issue
* exwm-workspace.el (exwm-workspace--switch-map-nth-prefix): Add more
checking conditions.
2016-07-19 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'medranocalvo/dynamic-workspaces' into externals/exwm
2016-07-19 Chris Feng <chris.w.feng@gmail.com>
Mention dynamic workspace in various places
* 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 Chris Feng <chris.w.feng@gmail.com>
Adapt dynamic workspace for RandR module
* 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 Chris Feng <chris.w.feng@gmail.com>
Adapt dynamic workspace for floating module
* 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 Chris Feng <chris.w.feng@gmail.com>
Improve the handling of workspaces
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix various minor issues
; 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 Chris Feng <chris.w.feng@gmail.com>
Fix 2 dock-related issues
* 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 Chris Feng <chris.w.feng@gmail.com>
* exwm-workspace.el (exwm-workspace--init): Rebalance parentheses.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Remove `exwm-worspace-number'
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 Adrián Medraño Calvo <adrian@medranocalvo.com>
Support adding and removing workspaces
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.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Support moving workspaces
* exwm-workspace.el (exwm-workspace-move-workspace): New
function
to move a workspace to a certain position.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Support swapping workspaces
* exwm-workspace.el (exwm-workspace-swap-workspaces): New
function to interchange the position of two workspaces.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Factor out prompt for workspace
* 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.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Work with workspace frames instead of indices
* 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.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Move defvars to the top
* exwm-workspace.el (exwm-workspace--current)
(exwm-workspace-current-index): Do it.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
New function exwm-workspace--workspace-p
* 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.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Add helper for counting number of workspaces
* 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.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Add `exwm-workspace--position' helper
* 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.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Apply minibuffer in own frame configuration to created frames
* 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.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Add missing declarations
* exwm-systemtray.el :
* exwm-manage.el :
* exwm-layout.el :
* exwm-input.el :
* exwm-floating.el :
* exwm-core.el : Add missing function declarations.
2016-07-17 Adrián Medraño Calvo <adrian@medranocalvo.com>
Minor cleanup
* exwm-workspace.el (exwm-workspace--update-workareas): Use
`make-list' instead of looping.
2016-07-16 Adrián Medraño Calvo <amcalvo@amclap>
2016-07-17 Chris Feng <chris.w.feng@gmail.com>
Add major mode menu
* 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.
2016-07-16 Chris Feng <chris.w.feng@gmail.com>
Add RandR support for docks and reuse workareas
* 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.
2016-07-15 Chris Feng <chris.w.feng@gmail.com>
Add multi-dock support and fix fullscreen issues with dock
* 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.
2016-07-15 Chris Feng <chris.w.feng@gmail.com>
Fix a `unread-command-events' issue for Emacs 24
* exwm-input.el (exwm-input--unread-event)
(exwm-input--on-KeyPress-line-mode): Use `unread-command-events'
differently on Emacs 24 and 25.
2016-07-14 Chris Feng <chris.w.feng@gmail.com>
Fix various stability issues
* 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.
2016-07-13 Chris Feng <chris.w.feng@gmail.com>
Add/improve some ICCCM/EWMH features
* 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.
2016-07-12 Chris Feng <chris.w.feng@gmail.com>
* exwm-input.el (exwm-input--on-KeyPress-char-mode): No need to force
events to be added to `this-command-keys' (and it causes problems).
2016-07-12 Chris Feng <chris.w.feng@gmail.com>
Add initial support for dock (panel) applications
* 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.
2016-07-12 Chris Feng <chris.w.feng@gmail.com>
* exwm-workspace.el (exwm-workspace--init): Remove possible internal
borders of workspace frames.
2016-07-12 Chris Feng <chris.w.feng@gmail.com>
Fix a bug of simulation keys
* 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).
2016-06-17 Chris Feng <chris.w.feng@gmail.com>
Allow buffer-local simulation keys
* 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.
2016-06-17 Chris Feng <chris.w.feng@gmail.com>
* exwm-layout.el (exwm-layout--show): Resize the X window if the
minibuffer is active but with line height 1.
2016-05-25 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.5
2016-05-24 Chris Feng <chris.w.feng@gmail.com>
* exwm-input.el (exwm-input--update-focus): Do not update input focus
when there's an active minibjffer
2016-05-24 Chris Feng <chris.w.feng@gmail.com>
Manage a certain type of undecorated X windows
* 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'.
2016-05-23 Chris Feng <chris.w.feng@gmail.com>
Add cleanup codes for Emacs daemon
* 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.
2016-05-21 Chris Feng <chris.w.feng@gmail.com>
Always add `exwm-workspace--on-focus-in'
* exwm-workspace.el (exwm-workspace--init):
`exwm-workspace--on-focus-in' should always be added to `focus-in-hook'.
2016-05-13 Chris Feng <chris.w.feng@gmail.com>
Use `xcb:connect' instead of `xcb:connect-to-socket'
* exwm.el (exwm-init):
* exwm-systemtray.el (exwm-systemtray--init): Use `xcb:connect' instead
of `xcb:connect-to-socket'.
2016-04-21 Chris Feng <chris.w.feng@gmail.com>
Announce manager selection with client message
* exwm-systemtray.el (exwm-systemtray--init): Send a client message to
announce the manager selection.
(xcb:systemtray:-ClientMessage): The client message.
2016-04-21 Chris Feng <chris.w.feng@gmail.com>
Properly place undecorated X windows
* exwm-manage.el (exwm-manage--manage-window): Convert absolute position
of undecorated X windows.
2016-04-07 Chris Feng <chris.w.feng@gmail.com>
Fix 2 multi-monitor issues
* 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.
2016-04-03 Chris Feng <chris.w.feng@gmail.com>
Some commands should be called interactively
* 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.
2016-03-25 Chris Feng <chris.w.feng@gmail.com>
Fix emacsclient issues
* 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'.
2016-03-19 Adrián Medraño Calvo <adrian@medranocalvo.com>
Restore a sensible buffer when replacing EXWM buffers
* 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).
2016-03-19 Adrián Medraño Calvo <adrian@medranocalvo.com>
Use `other-buffer' instead of "*scratch*"
* exwm-workspace.el (exwm-workspace-move-window): Display
`other-buffer' instead of "*scratch*" in the window whose buffer has
been made floating.
2016-03-19 Adrián Medraño Calvo <adrian@medranocalvo.com>
Use `buffer-predicate' frame parameter to prevent switching to visible
EXWM 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.
2016-03-19 Adrián Medraño Calvo <adrian@medranocalvo.com>
Set the correct buffer before checking the `major-mode'
* exwm-layout.el (exwm-layout--refresh): Make sure we test the
`major-mode' of the first buffer of the floating frame.
2016-03-19 Adrián Medraño Calvo <adrian@medranocalvo.com>
Minor cleanup
* exwm-layout.el (exwm-layout--refresh): Reuse car.
2016-03-16 Chris Feng <chris.w.feng@gmail.com>
Exclude unmanaged floating X windows when refreshing
* exwm-layout.el (exwm-layout--refresh): Do not show unmanaged floating
X windows.
2016-03-11 Chris Feng <chris.w.feng@gmail.com>
Neglect trivial resizing requests
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Neglect trivial
resizing requests since that cannot be done precisely.
2016-03-08 Chris Feng <chris.w.feng@gmail.com>
Use `cl-case' instead of `case'
2016-03-07 Adrián Medraño Calvo <adrian@medranocalvo.com>
Change input mode of window being clicked
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.
2016-03-07 Chris Feng <chris.w.feng@gmail.com>
Restack fullscreen X windows
* exwm-layout.el (exwm-layout-set-fullscreen)
(exwm-layout-unset-fullscreen): Raise and lower fullscreen X windows
respectively.
2016-03-06 Chris Feng <chris.w.feng@gmail.com>
Allow floating X windows to resize themselves
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Allow
(non-fullscreen) floating X windows to resize themselves.
2016-03-06 Chris Feng <chris.w.feng@gmail.com>
Untabify
2016-03-04 Chris Feng <chris.w.feng@gmail.com>
Allow moving/resizing undecorated X windows
* exwm-manage.el (exwm-manage--manage-window): Do not manage undecorated
floating X windows (set in _MOTIF_WM_HINTS).
* exwm-floating.el (exwm-floating--start-moveresize)
(exwm-floating--stop-moveresize, exwm-floating--do-moveresize): Allow
moving/resizing undecorated X windows with _NET_WM_MOVERESIZE client
message.
2016-03-03 Chris Feng <chris.w.feng@gmail.com>
Handle buffer change after a buffer is killed
* exwm-manage.el (exwm-manage--kill-buffer-query-function): Handle
buffer change.
* exwm-workspace.el (exwm-workspace--show-minibuffer): Revert the change
made in 93e42136 (the problem has not been fully resolved).
2016-03-01 Chris Feng <chris.w.feng@gmail.com>
Avoid unnecessary input focus changes in line-mode
* exwm-input.el (exwm-input--grab-keyboard,
exwm-input--release-keyboard): Grab keys on X windows instead to prevent
unexpected input focus changes.
* exwm-workspace.el (exwm-workspace--show-minibuffer): The workaround
for cursor flickering issue is no more needed.
2016-02-28 Chris Feng <chris.w.feng@gmail.com>
Simplify `exwm-workspace--display-buffer'
* exwm-workspace.el (exwm-workspace--display-buffer): Make it simpler
and more reliable.
2016-02-26 Chris Feng <chris.w.feng@gmail.com>
Do not wait for WM_STATE property events
* exwm-layout.el (exwm-layout--show, exwm-layout--hide): Save the state
directly.
2016-02-26 Chris Feng <chris.w.feng@gmail.com>
Minor fixes for layout and workspace
* exwm-layout.el (exwm-layout-show-mode-line): Force update mode-line.
* exwm-workspace.el (exwm-workspace--update-minibuffer): Treat nil as
empty string.
2016-02-25 Chris Feng <chris.w.feng@gmail.com>
Fix exwm-workspace-switch-to-buffer
* exwm-workspace.el (exwm-workspace-switch-to-buffer): Select the
floating frame when switching to a floating X window buffer.
2016-02-25 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.4
2016-02-25 Chris Feng <chris.w.feng@gmail.com>
Allow user to hide floating X windows
* exwm-core.el (exwm-mode-map): Add a new key to hide floating X
windows.
* exwm-floating.el (exwm-floating-hide): New command to hide a floating
X window.
* exwm-workspace.el: Fix a compile warning.
2016-02-24 Chris Feng <chris.w.feng@gmail.com>
Refresh the workspace after creating a floating X window
* exwm-floating.el (exwm-floating--set-floating): Refresh the workspace
(since auto-refresh was disabled).
2016-02-24 Chris Feng <chris.w.feng@gmail.com>
Fix issues with moving X windows between workspaces
* exwm-workspace.el (exwm-workspace-move-window): Select the moved
floating X window. Update the 'exwm-selected-window' frame parameter.
(exwm-workspace-switch): Check 'exwm-selected-window' for dead windows.
(exwm-workspace-switch-to-buffer): Allow non-interactive call.
2016-02-23 Chris Feng <chris.w.feng@gmail.com>
Make input focus revert to pointer root
* exwm-input.el (exwm-input--set-focus): Input focus should not revert
to parent (which was the Emacs frame) any more.
2016-02-22 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.3
2016-02-21 Chris Feng <chris.w.feng@gmail.com>
Fix emacsclient related issues
* exwm-systemtray.el (exwm-systemtray-height): The value is not
available when emacsclient has just loaded the library (and it crashes
emacsclient).
* exwm-workspace.el (exwm-workspace--init): Set
`default-minibuffer-frame' later to prevent it from being modified when
using emacsclient.
* exwm-floating.el:
* exwm-randr.el:
* exwm-systemtray.el:
* exwm-workspace.el:
* exwm.el: Use `exwm-workspace--minibuffer-own-frame-p' instead of the
raw variable.
2016-02-21 Chris Feng <chris.w.feng@gmail.com>
Various fixes for floating X windows
* exwm-floating.el (exwm-floating--set-floating): Always create floating
X windows on current workspace.
* exwm-workspace.el (exwm-workspace-switch): Restore selected floating
frames.
* exwm-workspace.el (exwm-workspace-move-window): Restore the position
of floating X windows. Recreate floating frames when using fixed
minibuffer. Restack tiling X windows.
2016-02-21 Chris Feng <chris.w.feng@gmail.com>
Fix the advice function for ido-buffer-window-other-frame
* exwm-config.el (exwm-config--ido-buffer-window-other-frame)
(exwm-config--fix/ido-buffer-window-other-frame): Do not use advice. Fix
issues when switching form/to floating frames.
2016-02-20 Chris Feng <chris.w.feng@gmail.com>
Prevent Emacs frames from restacking themselves
Putting Emacs frames (workspace frames, floating frames) into dedicated
containers greatly simplifies the stacking order management and totally
fixes relevant issues.
* exwm-floating.el (exwm-floating--set-floating): Create floating frame
container. Remove redundant stacking order modification code.
(exwm-floating--unset-floating): Destroy the floating frame container.
No need to reparent the X window container.
(exwm-floating--do-moveresize): Resize the floating frame container.
* exwm-input.el (exwm-input--update-focus): No need to restack frames.
* exwm-layout.el (exwm-layout--show, exwm-layout--set-frame-fullscreen)
(exwm-layout-enlarge-window): Resize the floating frame container.
* exwm-manage.el (exwm-manage--on-ConfigureRequest): Re-enable stacking
order modification on ConfigureRequest.
* exwm-workspace.el (exwm-workspace--confirm-kill-emacs): Reparent out
all frames on exit. No need to remove selected events or created
resources.
(exwm-workspace--init): Create workspace frame containers.
* exwm-layout.el (exwm-layout-set-fullscreen):
* exwm-manage.el (exwm-manage--unmanage-window): Remove a redundant call
to
`xcb:flush'.
* exwm-manage.el (exwm-manage--unmanage-window): Force unmap the X
window. Unmap the floating frame before reparent it.
2016-02-20 Chris Feng <chris.w.feng@gmail.com>
Prevent/Reduce flickering issues with floating X windows
* exwm-floating.el (exwm-floating--set-floating)
(exwm-floating--unset-floating): Prevent flickering when
creating/removing a floating X window.
* exwm-layout.el (exwm-layout--show): Show X windows after resizing to
prevent flickering.
* exwm-manage.el (exwm-manage--unmanage-window): Reduce flickering by
hiding the container.
(exwm-manage--kill-buffer-query-function): Prevent flickering by hiding
the container (except that the X window destroys itself after receiving
the WM_DELETE_WINDOW client message).
2016-02-20 Chris Feng <chris.w.feng@gmail.com>
Redefine mode-specific keys
* exwm-core.el (exwm-mode-map): Redefine mode-specific keys to comply
with the key binding conventions.
2016-02-19 Chris Feng <chris.w.feng@gmail.com>
Minor fixes for system tray
* exwm-systemtray.el (exwm-systemtray--embed): Default to visible if the
XEMBED_MAPPED flag is not set.
(exwm-systemtray--on-ClientMessage): Only embed new icons. Ignore
balloon messages.
2016-02-19 Chris Feng <chris.w.feng@gmail.com>
Fix system tray issues after updating workspaces
* exwm-workspace.el (exwm-workspace-switch-hook): New hook run by
`exwm-workspace-switch'.
* exwm-randr.el (exwm-randr-refresh-hook): New hook run by
`exwm-randr--refresh'.
* exwm-systemtray.el (exwm-systemtray--on-randr-refresh)
(exwm-systemtray--on-workspace-switch, exwm-systemtray--init): Update
the system tray in `exwm-randr-refresh-hook' and
`exwm-workspace-switch-hook'.
* exwm-layout.el (exwm-layout--set-frame-fullscreen):
* exwm-workspace.el (exwm-workspace--post-init): Wait until all
workspace frames are set fullscreen.
* exwm-workspace.el (exwm-workspace--current-width)
(exwm-workspace--current-height): New functions for retrieving the width
and height of the current workspace.
* exwm-layout.el (exwm-layout-set-fullscreen):
* exwm-manage.el (exwm-manage--manage-window)
(exwm-manage--on-ConfigureRequest):
* exwm-systemtray.el (exwm-systemtray--refresh, exwm-systemtray--init):
* exwm-workspace.le (exwm-workspace--resize-minibuffer-frame)
(exwm-workspace--on-ConfigureNotify): Switch to
`exwm-workspace--current-width' and `exwm-workspace--current-height'.
* exwm-core.el:
* exwm-floating.el:
* exwm-floating.el:
* exwm-input.el:
* exwm-layout.el:
* exwm-manage.el:
* exwm-randr.el:
* exwm-systemtray.el:
* exwm-workspace.el:
* exwm.el: Clean up loading file. Set/Unset some functions as commands.
* README.md: Add intro to system tray.
2016-02-19 Chris Feng <chris.w.feng@gmail.com>
Add system tray support
* 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.
2016-02-18 Chris Feng <chris.w.feng@gmail.com>
Fix floating X window bugs introduced by 9c95c03e
* exwm-floating.el (exwm-floating--set-floating): Make floating frames
invisible before resizing them.
(exwm-floating--fit-frame-to-window): Removed since unused.
* exwm-layout.el (exwm-layout-hide-mode-line,
exwm-layout-show-mode-line): Use set frame height instead of
exwm-floating--fit-frame-to-window.
* exwm-core.el (exwm-mode): Replace `exwm-manage--close-window' with
`exwm-manage--kill-buffer-query-function'.
* exwm-floating.el (exwm-floating--unset-floating): Reparent out
floating frames.
* exwm-manage.el (exwm-manage--unmanage-window): Reparent out floating
frames. Hide floating frames.
(exwm-manage--close-window, exwm-manage--kill-buffer-query-function):
Rename `exwm-manage--close-window' since it's only used in
`kill-buffer-query-functions'. Reparent out floating frames.
2016-02-12 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.2
2016-02-12 Chris Feng <chris.w.feng@gmail.com>
Postpone making workspace frames fullscreen
* 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`.
2016-02-09 Chris Feng <chris.w.feng@gmail.com>
Fix bugs on managing/unmanaging X windows
* 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.
2016-02-07 Chris Feng <chris.w.feng@gmail.com>
Eliminate compilation warnings
2016-02-07 Chris Feng <chris.w.feng@gmail.com>
Unmanage X windows on exit
* 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.
2016-02-07 Chris Feng <chris.w.feng@gmail.com>
Add some useful key bindings
* exwm-core.el (exwm--floating-mode-line-format, exwm--mode-line-format)
(exwm-mode-map):
* exwm-floating.el (exwm-floating-hide-mode-line)
(exwm-floating-show-mode-line):
* exwm-layout.el (exwm-layout-hide-mode-line,
exwm-layout-show-mode-line)
(exwm-layout-toggle-mode-line): Allow hide/show mode-line for all
`exwm-mode' buffers with 'C-c M'.
* exwm-config.el (exwm-config-default): Add simulation keys for 'C-d'
and
'C-k'.
2016-02-07 Chris Feng <chris.w.feng@gmail.com>
Remove an assertion
* exwm-randr.el (exwm-randr--refresh): There can be no valid output
sometimes.
2016-02-06 Felix Lange <fjl@twurst.com>
Resize minibuffer only when it's in its own frame
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.
2016-02-06 Chris Feng <chris.w.feng@gmail.com>
Improve bc80eefe
* 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.
2016-02-06 Chris Feng <chris.w.feng@gmail.com>
Fix multi-monitor/fullscreen issues
* exwm-randr.el (exwm-randr--refresh): Correct the _NET_WORKAREA
property. Reconfigure the current workspace when screen changes.
(exwm-randr--init): Run `exwm-randr-screen-change-hook' to take into
account already attached monitor(s),
* exwm.el (exwm--on-ClientMessage): Reconfigure the current workspace
when it's fullscreen.
2016-02-06 Chris Feng <chris.w.feng@gmail.com>
Add auto-hiding minibuffer support
* 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.
2016-02-03 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'feat/virtual-root'
2016-02-03 Chris Feng <chris.w.feng@gmail.com>
Avoid unnecessary changes of stacking order
* exwm-input.el (exwm-input--update-focus): Only restack a tiling X
window when it's not the last but one sibling. This should reduce
flickering.
2016-02-03 Chris Feng <chris.w.feng@gmail.com>
Rework the X windows hierarchy model
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.
2016-02-02 Chris Feng <chris.w.feng@gmail.com>
Update copyright year to 2016
2015-12-13 Chris Feng <chris.w.feng@gmail.com>
Remove the MappingNotify event listener
* exwm-input.el (exwm-input--on-MappingNotify, exwm-input--init): Remove
the event listener for MappingNotify event (it should be handled in the
underling library instead).
2015-12-11 Chris Feng <chris.w.feng@gmail.com>
Add support for desktop and dock
* exwm-manage.el (exwm-manage--manage-window): Add support for
_NET_WM_WINDOW_TYPE_DESKTOP and _NET_WM_WINDOW_TYPE_DOCK (they are not
reparented).
2015-11-15 W. Greenhouse <wgreenhouse@riseup.net>
Limit X host-based auth permissions.
We don't need more than the currently logged in user to have access to
the X session, so don't grant X host access to other users.
2015-11-10 Chris Feng <chris.w.feng@gmail.com>
Fix a typo
* exwm-manage.el (exwm-manage--on-MapRequest): Correct a wrong variable
name.
2015-11-03 Chris Feng <chris.w.feng@gmail.com>
Bump version to 0.1
2015-11-02 Chris Feng <chris.w.feng@gmail.com>
Disable some incompatible features
* exwm.el (exwm-init):
exwm-config.el (exwm-config-misc):
Disable dialog boxes and hourglass pointer by default.
2015-11-01 Chris Feng <chris.w.feng@gmail.com>
Add hook run when screen changes
* exwm-randr.el (exwm-randr-screen-change-hook): New hook.
(exwm-randr--init): Run the new hook in the event handler of
ScreenChangeNotify.
2015-10-30 Chris Feng <chris.w.feng@gmail.com>
Use new calling conventions of xcb:keysyms
* exwm-input.el: Use new calling conventions of xcb:keysyms
2015-10-29 Chris Feng <chris.w.feng@gmail.com>
Improve robustness of killing buffers
* exwm-core.el (exwm-mode): Use the return value of
exwm-manage--close-window.
* exwm-manage.el (exwm-manage--close-window): Kill empty buffers; Handle
X
windows that does not support _NET_WM_PING.
(exwm-manage--kill-client): Kill X windows supporting _NET_WM_PID with
both SIGKILL and KillClient.
2015-10-29 Chris Feng <chris.w.feng@gmail.com>
Avoid mapping managed X windows on MapRequest
* exwm-manage.el (exwm-manage--manage-window,
exwm-manage--on-MapRequest):
Check managed X windows in exwm-manage--on-MapRequest instead.
2015-10-28 Chris Feng <chris.w.feng@gmail.com>
Check KEYSYMs converted from events
* exwm-input.el (exwm-input--update-global-prefix-keys)
(exwm-input--fake-key, exwm-input--init): Check the return value of
xcb:keysyms:event->keysym.
2015-10-28 Chris Feng <chris.w.feng@gmail.com>
Add demo configurations
* exwm-config.el: Demo EXWM configurations.
* xinitrc: Demo xinitrc file.
* exwm.el (exwm-enable-ido-workaround, exwm-disable-ido-workaround):
Partly
moved to exwm-config.el.
2015-10-28 Chris Feng <chris.w.feng@gmail.com>
Make the creation/destruction of floating frames more silent
* 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 Chris Feng <chris.w.feng@gmail.com>
Minor input focus fix
* exwm-input.el (exwm-input--on-buffer-list-update): Schedule input
focus
switch with idle timer.
2015-10-27 Chris Feng <chris.w.feng@gmail.com>
Delay closing minibuffer
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix problems introduced/exposed by last commit
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix workspace switch issues
* 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 Chris Feng <chris.w.feng@gmail.com>
Close the (possible) active minibuffer when switching workspace
* 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 Chris Feng <chris.w.feng@gmail.com>
Allow certain commands to receive key events in line-mode
* 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 Chris Feng <chris.w.feng@gmail.com>
Improve robustness
* exwm-input.el (exwm-input--update-focus, exwm-input--on-ButtonPress):
Make sure Emacs windows are alive before manipulating them.
2015-10-10 Chris Feng <chris.w.feng@gmail.com>
Restrict the check of _MOTIF_WM_HINTS
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix a position calculation error on multi-monitor settings
* exwm-floating.el (exwm-floating--set-floating): Always use relative
positions.
2015-09-27 Chris Feng <chris.w.feng@gmail.com>
Work around subrs that block EXWM; other minor fixes
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 Chris Feng <chris.w.feng@gmail.com>
Fix click-to-focus on multi-monitor settings
* exwm-input.el (exwm-input--on-ButtonPress): [click-to-focus] Switch to
the corresponding workspace if necessary.
2015-09-24 Chris Feng <chris.w.feng@gmail.com>
Fix a calculation error of the position of a floating frame
* exwm-floating.el (exwm-floating--set-floating): The position of a
floating frame should be relative to its workspace.
2015-09-23 Chris Feng <chris.w.feng@gmail.com>
Adjust default prefix keys; advice x-create-frame
* 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 Chris Feng <chris.w.feng@gmail.com>
Minor fixes for packaging
* .gitignore: Add ELPA files.
* exwm-workspace.el: Autoload exwm-workspace-switch.
* README.org: Renamed from README.md; add an installation note.
2015-09-20 Chris Feng <chris.w.feng@gmail.com>
Fix input & input focus issues
* 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 Chris Feng <chris.w.feng@gmail.com>
Manage non-floating windows without decorations
* exwm-manage.el (exwm-manage--manage-window): Should manage
non-floating
windows without decorations.
2015-09-19 Chris Feng <chris.w.feng@gmail.com>
Check _MOTIF_WM_HINTS when attempting to manage an X window
* 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 Chris Feng <chris.w.feng@gmail.com>
Avoid autoloading variables
* 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 Chris Feng <chris.w.feng@gmail.com>
Prevent Emacs cursor style change when pointer is in an X window
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix a compilation warning
* exwm-floating.el: Autoload exwm-floating-border-width.
2015-09-18 Chris Feng <chris.w.feng@gmail.com>
Fix wrong/missing ConfigureNotify events
* 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 Chris Feng <chris.w.feng@gmail.com>
On-demand update exwm-workspace--switch-history
* 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 Chris Feng <chris.w.feng@gmail.com>
Allow showing buffers on other workspaces and moving an X window by
switching 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 Chris Feng <chris.w.feng@gmail.com>
Fix with-slots
* exwm-randr.el (exwm-randr--refresh): Could not set the name slot in
xcb:randr:GetOutputInfo~reply, turn to another variable.
2015-09-11 Chris Feng <chris.w.feng@gmail.com>
Minor fix for window move
* exwm-workspace.el (exwm-workspace-move-window): Move to selected
instead of
the first window of a frame (workspace).
2015-09-11 Chris Feng <chris.w.feng@gmail.com>
Implement move/resize with keyboard
* 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 Chris Feng <chris.w.feng@gmail.com>
Allow switch to normal buffers in exwm-workspace-switch-to-window
* exwm-workspace.el (exwm-workspace-switch-to-window): Allow switch to
normal
buffers.
2015-09-09 Chris Feng <chris.w.feng@gmail.com>
Add a command to interactively move X window to the current workspace
* 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 Chris Feng <chris.w.feng@gmail.com>
Add support for xcb:Atom:_NET_CLIENT_LIST_STACKING etc
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 Chris Feng <chris.w.feng@gmail.com>
Allow hide/show mode-line on floating frames
* 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 Chris Feng <chris.w.feng@gmail.com>
Code cleanups
* exwm-workspace.el (exwm-workspace--update-switch-history): use `aref'
instead
of `elt' to index vectors
* .elpaignore: ignore README.md
2015-09-04 Chris Feng <chris.w.feng@gmail.com>
Prepare for GNU ELPA release
* 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 Chris Feng <chris.w.feng@gmail.com>
Ungrab pointer timely when resizing is aborted
* exwm-floating.el (exwm-floating--start-moveresize): when resizing type
cannot
be decided, ungrab the previously grabbed pointer.
2015-08-28 Philip <pipcet@gmail.com>
Minor fix
2015-08-28 Chris Feng <chris.w.feng@gmail.com>
Drop intro to xelb-util
2015-08-27 Chris Feng <chris.w.feng@gmail.com>
Avoid deleting the frame created by Emacs client by accident
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 Chris Feng <chris.w.feng@gmail.com>
Re-enable complete refresh of keyboard mapping
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 Chris Feng <chris.w.feng@gmail.com>
Fix window size calculations
* 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 Chris Feng <chris.w.feng@gmail.com>
Fix `exwm-workspace-rename-buffer`
Ensure buffer names are unique.
2015-08-26 Chris Feng <chris.w.feng@gmail.com>
Correct several EWMH properties
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 Chris Feng <chris.w.feng@gmail.com>
Replay KeyPress events instead of fake them in line-mode
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-25 Chris Feng <chris.w.feng@gmail.com>
Merge pull request #42 from pipcet/ewmh-fullscreen
Avoid using the "no window manager" code in Emacs
2015-08-24 Philip <pipcet@gmail.com>
Avoid using the "no window manager" code in Emacs
* 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 Chris Feng <chris.w.feng@gmail.com>
Only manage windows mapped as the direct children of root window (close
#38)
Sometimes Emacs create child windows of virtual roots. This commit
ensures EXWM will not manage them.
2015-08-17 Chris Feng <chris.w.feng@gmail.com>
Merge branch 'move-window-fix' of https://github.com/pipcet/exwm into
pipcet-move-window-fix
2015-08-17 Philip <pipcet@gmail.com>
Improve code robustness.
* 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 Philip <pipcet@gmail.com>
fix buffer renaming
per https://github.com/ch11ng/exwm/pull/30
2015-08-16 Philip <pipcet@gmail.com>
Fix bug when moving a window to the current workspace
* exwm-workspace.el (exwm-workspace-move-window): Run
reparenting code when moving a window to the current workspace.
2015-08-16 Chris Feng <chris.w.feng@gmail.com>
Provide hooks run when the floating state of a window changes (close
#28)
2015-08-14 Chris Feng <chris.w.feng@gmail.com>
Honor `value-mask` field in ConfigureRequest event
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 Chris Feng <chris.w.feng@gmail.com>
Fix input focus stealing
This was fixed in b755296 but broken by 04e4269.
2015-08-13 Chris Feng <chris.w.feng@gmail.com>
Fix multi-screen bugs
* RandR module is now made optional; users can enable it with
`exwm-randr-enable`.
* Correct the calculation of sizes/coordinates at various places.
* Input focus is now tracked with (Emacs) window instead of buffer since
the
latter can be ambiguous in multi-screen settings.
2015-08-13 Chris Feng <chris.w.feng@gmail.com>
Minor fixes for emacsclient
2015-08-12 Chris Feng <chris.w.feng@gmail.com>
Improve input focus switch mechanism
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.
2015-08-11 Chris Feng <chris.w.feng@gmail.com>
Center floating windows by default
This commit makes a floating window centered to its leading window if it
has a valid WM_TRANSIENT_FOR property set. Other it's placed at the
center of the screen.
2015-08-11 Chris Feng <chris.w.feng@gmail.com>
Fix buffer switch problems
* Prevent switching to floating windows or windows on other workspaces
* Provide a workaround for `ido-mode` (can be enabled with
`(exwm-enable-ido-workaround)`)
2015-08-11 Chris Feng <chris.w.feng@gmail.com>
Remove redundant code caused by the concurrency of events (contd, 2)
* Remove locks that are no longer required
* Also fix #20 (inactive workspace frame steals input focus)
2015-08-10 Chris Feng <chris.w.feng@gmail.com>
Ignore repeated `MappingNotify` events
For some reason, `MappingNotify` events are generated quite frequently
and greatly impact the performance. This commit disables the complete
refresh of keyboard mapping.
2015-08-10 Chris Feng <chris.w.feng@gmail.com>
Remove redundant code caused by the concurrency of events (continued)
Remove `exwm--with-current-id`, which was introduced to as a wrapper to
`with-current-buffer` to do extra checks. Note that in functions run as
hooks, the validation of window ID is still required as they are not
synchronized with events.
2015-08-10 Chris Feng <chris.w.feng@gmail.com>
Fix emacsclient bugs
`emacsclient` started with `-c` or `-t` argument create a new frame that
shall not be used to manage X windows. Also fix some related input focus
issues (with some remaining unfixed). Close #17.
2015-08-09 Chris Feng <chris.w.feng@gmail.com>
Remove redundant code caused by the concurrency of events
With the introduction of ch11ng/xelb@6a7bccc, many weird behaviors
should disappear. These include by not limit to
* race conditions when managing a window (a workaround is provided in
@14628a9)
* race conditions when unmanaging a window This commit removes some
corresponding code.
2015-08-09 Chris Feng <chris.w.feng@gmail.com>
Refresh when minibuffer grows (fix #10)
The expansion of echo area is not handled however.
2015-08-08 Chris Feng <chris.w.feng@gmail.com>
Show moved window by default
2015-08-08 Chris Feng <chris.w.feng@gmail.com>
Correct layout refresh problems
* Relax the conditions to refresh layout; this may introduce some
overheads
though
* Fix the problem when `*scratch*` buffer is killed; close #12
* Enhance `exwm-reset` by forcing layout refresh in it. This should
allow users
to overcome some layout bugs
2015-08-08 Chris Feng <chris.w.feng@gmail.com>
Fix some input focus issues
* 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
2015-08-08 Chris Feng <chris.w.feng@gmail.com>
Fixes for manage/unmanage window
* Make sure `exwm-manage--manage-window-queue` is cleaned
* Improve input focus handling after unmanaging a window
* Remove a redundant call to `exwm-layout--show`
2015-08-07 Chris Feng <chris.w.feng@gmail.com>
Fix race conditions when managing a window
Since it takes some time for EXWM to create a buffer for a window (to do
some checking for example), the window may send several MapRequest
events before it's mapped. This commit should fix such issue.
2015-08-07 Chris Feng <chris.w.feng@gmail.com>
Fix input focus lost after closing window
Also insert some debug messages.
2015-08-07 Chris Feng <chris.w.feng@gmail.com>
Various input fixes
* 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
2015-08-06 Chris Feng <chris.w.feng@gmail.com>
Check buffer mode in exwm-reset
This should prevent users from misoperation.
2015-08-06 Chris Feng <chris.w.feng@gmail.com>
Fix fullscreen issues
* 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.
2015-08-05 Chris Feng <chris.w.feng@gmail.com>
Drop intro to EXIM
2015-08-05 Chris Feng <chris.w.feng@gmail.com>
Various fixes
* 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 '? '.
2015-08-05 Markus S. <kamikazow@web.de>
Fix typos
2015-08-03 Chris Feng <chris.w.feng@gmail.com>
Add basic RandR support
This implementation is analogous to that in i3-wm, which requires
external tools to properly configure RandR first.
2015-07-26 Chris Feng <chris.w.feng@gmail.com>
Fix potential naming conflicts
Buffers may share a same name (without the possible leading space) when
created in different workspaces.
2015-07-19 Chris Feng <chris.w.feng@gmail.com>
Various fixes
Remove wrong shift modifiers. Hide a Window when it's moved to another
workspace.
2015-07-18 Chris Feng <chris.w.feng@gmail.com>
Various fixes for workspace
Fixes for full screen, move window, etc.
2015-07-18 Chris Feng <chris.w.feng@gmail.com>
Add wiki link to README
2015-07-18 Chris Feng <chris.w.feng@gmail.com>
Improve move/resize
The type of move/resize is consistent during one complete operation. So
there is no need to judge it on every mouse motion.
2015-07-17 Chris Feng <chris.w.feng@gmail.com>
First commit