i3a 2.0.0

I have released version 2.0.0 of i3a (i3 automation), a suite of programs which use IPC capabilities of i3 and sway window managers to provide some automation in layout management. It can be installed from a PyPI. Source code is available on git.

Backward incompatible rename

Change of the major version tells that this is a backward incompatible change. With this release I have resigned from a single i3a script which is responsible for maintaining master-stack layout. It is now called i3-master-stack. Please run it instead to continue using the old i3a.

This change was made to fit a new script for window swallowing: i3a-swallow.

Window swallowing

Window swallowing is an interesting technique which helps with cluttering of the screen which happens whenever we run a GUI program from a terminal. It works by hiding the original terminal (moving it to the scratchpad) and restoring it once the child process closes its window. I first learned about this technique by inspecting DWM patch for it, but by all means, DWM isn’t the first window manager which implements it (and certainly it isn’t the last one!).

In i3a, window swallowing is provided by i3a-swallow command. By default, it is enabled for some popular terminals, which are recognized by their class (X11 windows) or app_id (Wayland windows). However, it is easy to enable it for any terminal: i3a-swallow -p <regular-expression1> -p <regular-expression2>....

Swallowing can be also disabled for child windows (again, recognized by class/app_id): i3a-swallow -e <child1-re> -e <child2-re>...

Although swallowing was designed specifically to handle the mess of terminal spawn, it will happily work with any programs, provided that they are added with -p switch.

Full changelog

Backward incompatible changes
- Rename i3a -> i3a-master-stack. To continue using automatic
  master-stack layout, please invoke i3a-master-stack from now on
  (instead of simiple i3a). No more parameters change for it.

New features
- Added i3a-swallow, which allows automatic "swallowing" (or replacing)
  of child processes (e.g. GUI applications started from the terminal).

Bug fixes
- Fixed debug print
- validate --stack-size