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 shouldn’t be a `choice` type; Move the
	"User-defined" key value to the top, since that’s the one someone is 
	most likely to want).

	* exwm-config.el (exwm-config-default): Only set custom vars if there 
	isn’t 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

