<commit_before>Windowchef
==========

Disclaimer
----------

This software is constantly changing and
may [break your workflow](https://xkcd.com/1172/) (yeah, it's that one
xkcd comic, everyone
knows it).

Cooking windows since 2016
--------------------------

Windowchef is a stacking window manager that doesn't handle keyboard or
pointer inputs. A third party program (like `sxhkd`) is needed in order to
translate keyboard and pointer events to `waitron` commands.

Waitron is a program that sends commands to the window manager through X client
messages. It doesn't print anything on success. The commands and the
parameters are fed as program arguments and waitron delivers them to the
windowchef.

Windowchef is written in C with the help of the XCB library for
communicating with the X server. It supports randr and a subset of ewmh and
icccm.

Rationale
---------

Window managers are spreading like rats these days (I may be wrong). So what do you want to achieve with this one?

What I want to achieve by writing windowchef is a simple window manager that
provides basic functionality for a more minimal, yet comfortable workflow while
being easily extensible using the standard UNIX way: shell scripts. Cool
features like sorting windows by size on a specific monitor are not
included in windowchef. Instead, the user is encouraged to write a script that
does this using available tools like [wmutils](https://github.com/wmutils)
for window manipulation and [disputils](https://github.com/tudurom/disputils) for getting information regarding randr outputs.

Have fun!

Usage
-----

See the bundled `.sxhkdrc` and `.windowchefrc` for an example of a basic
configuration. Additionally, you can read the manual pages (`windowchef(1)` and `waitron(1)`).

The default configuration file is `~/.config/windowchef/windowchefrc`. It is usually
a shell script that calls `waitron wm_config` for configuration. See the
manual page for `waitron(1)` for details regarding this topic.

If you want to use window rules, a feature that windowchef lacks, you can use
[ruler](https://github.com/tudurom/ruler).

Dependencies
------------

* `xcb`
* `xcb-randr`
* `xcb-util-wm`
* `xcb-keysyms`
* `xproto`

Windowchef depends on `xcb` to communicate with the X11 server, `xcb-randr` to
gather information about connected displays and `xcb-util-wm` for ewmh and icccm helper functions.

`xcb-keysyms` and `xproto` are required for mouse support.

I couldn't find compiled documentation for `xcb-util-wm` so I compiled it and
put it on my website [here](https://tudorr.xyz/res/).

Building windowchef and installing it
-------------------------------------

Available in the AUR:

* [windowchef](https://aur.archlinux.org/packages/windowchef/)
* [windowchef-git](https://aur.archlinux.org/packages/windowchef-git/)<commit_msg>clarify xproto even more<commit_after>Windowchef
==========

Disclaimer
----------

This software is constantly changing and
may [break your workflow](https://xkcd.com/1172/) (yeah, it's that one
xkcd comic, everyone
knows it).

Cooking windows since 2016
--------------------------

Windowchef is a stacking window manager that doesn't handle keyboard or
pointer inputs. A third party program (like `sxhkd`) is needed in order to
translate keyboard and pointer events to `waitron` commands.

Waitron is a program that sends commands to the window manager through X client
messages. It doesn't print anything on success. The commands and the
parameters are fed as program arguments and waitron delivers them to the
windowchef.

Windowchef is written in C with the help of the XCB library for
communicating with the X server. It supports randr and a subset of ewmh and
icccm.

Rationale
---------

Window managers are spreading like rats these days (I may be wrong). So what do you want to achieve with this one?

What I want to achieve by writing windowchef is a simple window manager that
provides basic functionality for a more minimal, yet comfortable workflow while
being easily extensible using the standard UNIX way: shell scripts. Cool
features like sorting windows by size on a specific monitor are not
included in windowchef. Instead, the user is encouraged to write a script that
does this using available tools like [wmutils](https://github.com/wmutils)
for window manipulation and [disputils](https://github.com/tudurom/disputils) for getting information regarding randr outputs.

Have fun!

Usage
-----

See the bundled `.sxhkdrc` and `.windowchefrc` for an example of a basic
configuration. Additionally, you can read the manual pages (`windowchef(1)` and `waitron(1)`).

The default configuration file is `~/.config/windowchef/windowchefrc`. It is usually
a shell script that calls `waitron wm_config` for configuration. See the
manual page for `waitron(1)` for details regarding this topic.

If you want to use window rules, a feature that windowchef lacks, you can use
[ruler](https://github.com/tudurom/ruler).

Dependencies
------------

* `xcb`
* `xcb-randr`
* `xcb-util-wm`
* `xcb-keysyms`
* `xproto` (compile-time dependency)

Windowchef depends on `xcb` to communicate with the X11 server, `xcb-randr` to
gather information about connected displays and `xcb-util-wm` for ewmh and icccm helper functions.

`xcb-keysyms` and `xproto` are required for mouse support.

I couldn't find compiled documentation for `xcb-util-wm` so I compiled it and
put it on my website [here](https://tudorr.xyz/res/).

Building windowchef and installing it
-------------------------------------

Available in the AUR:

* [windowchef](https://aur.archlinux.org/packages/windowchef/)
* [windowchef-git](https://aur.archlinux.org/packages/windowchef-git/)
{'fraction_non_alphanumeric': 0.1070357961558808, 'fraction_numerical': 0.0045847293246341035, 'mean_word_length': 3.902333621434745, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 14, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1131702', 'n_tokens_mistral': 1635, 'n_tokens_neox': 1572, 'n_words': 732}