`ewmctrl' provides an Emacs interface to the `wmctrl' command-line window-management program.

## Table of Contents

- [Installation](#installation)
- [Usage](#usage)
- [Issues](#issues)
- [License](#license)

## Installation

Install [ewmctrl from MELPA](http://melpa.org/#/ewmctrl), or put `ewmctrl.el' in your load-path and do a `(require 'ewmctrl)'.

## Usage

Create an `ewmctrl' buffer with `M-x ewmctrl'.

The default keybindings are:

### Window actions

* RET - Switch to the selected desktop window (`ewmctrl-focus-window').

* D - Delete the selected desktop window (`ewmctrl-delete-window').

* I - Change the icon name of the selected desktop window (`ewmctrl-change-window-icon-name').

* m - Move the selected desktop window to a different desktop (`ewmctrl-move-window-to-other-desktop').

* M - Move the selected desktop window to the current desktop, raise it, and give it focus (`ewmctrl-move-window-to-current-desktop-and-focus').

* N - Change the name of the selected desktop window (`ewmctrl-change-window-name').

* r - Resize the selected desktop window by specifying dimensions in the minibuffer (`ewmctrl-resize-window'). Whilst in the minibuffer, use TAB and S-TAB to move within and between the width and height fields, and use C-RET to preview the currently specified dimensions.

* SPC [key] [action] - Select window specified by [key] and perform [action] on it, where [action] is an action keybinding. For example, SPC a RET will switch to the desktop window designated by 'a', whilst SPC c D will delete the desktop window designated by 'c'.

### Filtering

* fc - Remove all filtering (`ewmctrl-filters-clear').

* fd - Add a filter by desktop number (`ewmctrl-filter-by-desktop-number').

* fD - Remove all filtering by desktop number (`ewmctrl-filter-desktop-number-clear').

* fn - Add a filter by window name (`ewmctrl-filter-by-name').

* fN - Remove all filtering by window name (`ewmctrl-filter-name-clear').

* fp - Add a filter by PID (`ewmctrl-filter-by-pid').

* fP - Remove all filtering by PID (`ewmctrl-filter-pid-clear').

### Sorting

* Sd - Sort the list of desktop windows numerically by desktop number (`ewmctrl-sort-by-desktop-number').

* SD - Sort the list of desktop windows reverse-numerically by desktop number (`ewmctrl-sort-by-desktop-number-reversed').

* Sn - Sort the list of desktop windows lexicographically by name (`ewmctrl-sort-by-name').

* SN - Sort the list of desktop windows reverse-lexicographically by name (`ewmctrl-sort-by-name-reversed').

* Sp - Sort the list of desktop windows numerically by PID (`ewmctrl-sort-by-pid').

* SP - Sort the list of desktop windows reverse-numercially by PID (`ewmctrl-sort-by-pid-reversed').

### General

* g - Refresh the list of desktop windows (`ewmctrl-refresh').

* n - Move point to next line (`next-line').

* p - Move point to previous line (`previous-line').

* ; - Toggle single-key-to-focus (`ewmctrl-toggle-single-key-to-focus'). When enabled, a desktop window can be focused simply by pressing the designated key for that window.

Customisation options are available via the `ewmctrl' customize-group.

## Issues / bugs

Deletion of windows does not work in i3 4.8 and earlier due to [i3 bug #1396](http://bugs.i3wm.org/query/ticket/1396).

If you discover an issue or bug in `ewmctrl' not already noted:

* as a TODO item, or

* in [the project's "Issues" section on GitHub](https://github.com/flexibeast/ewmctrl/issues),

please create a new issue with as much detail as possible, including:

* which version of Emacs you're running on which operating system, and

* how you installed `ewmctrl'.

## License

[GNU General Public License version 3](http://www.gnu.org/licenses/gpl.html), or (at your option) any later version.