monochromatic blog:
git clone git://
Log | Files | Refs

commit 01fabfd1131cdbad090cdc6724244f3464ebbabf
parent e97aa66e857d3934fab42a40a077db5d98b7e8b6
Author: z3bra <>
Date:   Thu,  8 Jan 2015 21:41:23 +0100

New article released !

2015/01/you-are-the-wm.txt | 87+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | 3++-
index.txt | 1+
3 files changed, 90 insertions(+), 1 deletion(-)

diff --git a/2015/01/you-are-the-wm.txt b/2015/01/you-are-the-wm.txt @@ -0,0 +1,87 @@ +# [You are the WM](#) +## &mdash; 08 January, 2015 + +A window manager is a program that runs in the background, and give you keybinds +and/or mouse moves to move/resize and arrange your windows on your screen. + +Abbreviated "WM", the window manager is an important part of your system, +because without it, you'd probably end up with all your windows pop in the +bottom left hand-corner of your screen, unable to switch between them. + +But guess what... + +### You don't need it ! + +It's a fact. A +[study]( determined that +some rat could be able to determine which language you are speaking. But that's +totally unrelated here, I agree. + +What is a window manager ? + +<q>It's a program !</q> woah. Thank you Timmy. + +A window manager is a program (thank you Timmy) that runs in the background, and +wait for X events (I wont talk about wayland here). Those X events can be of +any form: key press, window creation/deletion, mouse move, and so on. + +The most used events being the keypress events, because the window manager will +perform different actions to arrange you windows. + +With [dcat](, we realized that some programs (sxhkd, +xbindkeys and others) already handle those events, and could start programs when +receiving them. Following the Ô so true Unix way, we decided to create a set of +small tools to perform all the task a window manager is supposed to do. + +We ended up with [wmutils]( + +### Coreutils, for Xorg + +This project aims to provide all the tools needed to manage a list of X windows, +while keeping each tool as simple as possible, so that they can easily be glued +together to create complex behaviors. + +Using wmutils, you can list windows, move/resize/teleport them, change their +borders, change their visibility, stacking order, ignore them, focus them, and +more... + +It's power reside in its simplicity. As you can chain commands together, you +could easily perform some action that other WM can't even do. + +For example, here is how you kill all the windows that are not shown on screen +(eg, attached to other workspaces): + + lsw -u | xargs killw + +Put a window in the top-left corner ? pff. easy: + + wtp 0 0 $(wattr whi `$pfw`) + +bottom-left corner ? + + wid=$(pfw) + w=$(wattr w $wid) + h=$(wattr h $wid) + fh=$(wattr h `lsw -r`) + + wtp 0 $((fh - h)) $(wattr whi $wid)) + +You get the idea. As a matter of fact, the following as been done using ONLY\* +wmutils tools: + +[![gif showing floating +mode](]( +[![gif showing tiling +mode](]( + +<span class="caption">\*only exception is the use of x-move-resize from +[no-wm](, which is planned to be added to +wmutils anyway)</span> + +Check out the "[contrib](" repo. There are +some nice scripts in there ! + +Now throw your window manager away, you don't need it anymore. **YOU ARE THE WM +!** + +<!-- vim: set ft=markdown ts=4 et tw=80: --> diff --git a/ b/ @@ -22,7 +22,8 @@ PAGES = index.html \ 2014/08/shred-configh.html \ 2014/09/backup-someone.html \ 2014/11/avoid-workspaces.html \ - 2014/12/so-tox-me-maybe.html + 2014/12/so-tox-me-maybe.html \ + 2015/01/you-are-the-wm.html FEEDS = rss/feed.xml EXTRA = css img vid errors favicon.ico diff --git a/index.txt b/index.txt @@ -1,3 +1,4 @@ +* 0x0013 - [You are the WM](/2015/01/you-are-the-wm.html) * 0x0012 - [So tox me maybe](/2014/12/so-tox-me-maybe.html) * 0x0011 - [Avoid workspaces](/2014/11/avoid-workspaces.html) * 0x0010 - [Backup, someone ?](/2014/09/backup-someone.html)