An obstinate, asymmetric, tiling, window manager for X.
Clone or download
Latest commit d7de4ff Jun 30, 2016
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Makefile simple titlebars; split source up Sep 24, 2012
PKGBUILD-git man page Sep 1, 2012
README.md readme tweaks Dec 31, 2014
action.c support more complex monitor layouts with move/focus actions using le… Jun 29, 2016
atom.c support NET_WM_STATE_ABOVE in spot 3 Dec 11, 2015
client.c support NET_WM_STATE_ABOVE in spot 3 Dec 11, 2015
config.c support more complex monitor layouts with move/focus actions using le… Jun 29, 2016
config.h support more complex monitor layouts with move/focus actions using le… Jun 29, 2016
event.c don't warp pointer on client message Mar 28, 2015
ewmh.c sane typedef names Dec 29, 2014
menu.c menu start position 0 Jan 12, 2015
menubox.c allow fitering spot menus Jan 10, 2015
monitor.c support more complex monitor layouts with move/focus actions using le… Jun 29, 2016
regex.c do not hold regex memory after config Dec 31, 2014
setup.c initialize current_spot and current_mon Feb 11, 2016
spot.c window list per spot Jan 10, 2015
status simpler defaults Dec 29, 2014
textbox.c partial utf8 support (works in titles; not in menu input) Dec 11, 2015
window.c don't warp pointer on client message Mar 28, 2015
xinitrc laptop xinitrc May 7, 2013
xoat.1 show X root window name in spot1 title for a custom status bar Apr 27, 2013
xoat.c support more complex monitor layouts with move/focus actions using le… Jun 29, 2016
xoat.md docs Nov 7, 2012
xoatrc support more complex monitor layouts with move/focus actions using le… Jun 29, 2016

README.md

xoat

X Obstinate Asymmetric Tiler

  • Designed for wide screens, including multi-head support.
  • Static tiling! Just configure sizes of the three fixed tiles.
  • Windows never move between tiles without user input.
  • Basic EWMH to support panels and simpleswitcher.
  • A few keyboard controls for moving, focusing, cycling, closing, and finding windows.
  • Transient windows and dialogs are centered on parent, not tiled.
  • Splash screens and notification popups are displayed as requested, not tiled.
  • Pointer warps appropriately when keyboard controls and EWMH affect focus.
  • .xoatrc or config.h for customization.

The Layout

  • Tile proportions can be adjusted.
  • Layout can be flipped horizontally.
  • Xrandr rotated monitor also rotates the layout (always 90 degrees, right).
  • Fullscreen (no borders, above panels) windows suported normally.
  • Maximized windows (with borders and panels) supported in spot 1.
  • Maximized-vertically windows supportted in spot 2.
  • Maximized-horizontally windows supported in spot 3.

...

---------------------------------     ---------------------------------
|                     |         |     |         |                     |
|                     |         |     |         |                     |
|                     |    2    |     |    2    |                     |
|          1          |         |     |         |           1         |
|                     |---------|     |---------|                     |
|                     |         |     |         |                     |
|                     |    3    |     |    3    |                     |
---------------------------------     ---------------------------------

---------------------     ---------------------
|                   |     |       |           |
|                   |     |   3   |     2     |
|                   |     |       |           |
|         1         |     |-------------------|
|                   |     |                   |
|                   |     |                   |
|                   |     |                   |
|                   |     |                   |
|-------------------|     |         1         |
|       |           |     |                   |
|   3   |     2     |     |                   |
|       |           |     |                   |
---------------------     ---------------------

Philosophy

  • Asymmetric tiling layouts are more useful than symmetric ones.
    • A master/stack layout is fine but only if the stack is itself asymmetric.
  • Static tiling is more practical than dynamic tiling or floating.
    • Windows moving and resizing without user input is bad.
    • Having a choice of tiling layouts at run time is distracting.
    • Apps that remember their size can handily be placed back in the correct tile.
  • Three tiles suffice because:
    • App windows are always one of four types:
      1. Large work-being-done apps
      2. Medium monitoring-something apps
      3. Small background-chat-music apps
      4. Apps people should not use ;-)
    • Want more tiles? Buy more monitors!
  • Keyboard controls generally preferred over the mouse, when practical.
    • Faster. Muscle memory.
  • Click-to-focus model preferred over focus-follows-mouse.
    • CtF is harder to get wrong in all cases.
    • FfM means mentally keeping track of the mouse pointer.
    • Avoiding the mouse entirely should just work, and not unexpectedly affect focus.
  • 60:40 is a nice ratio.

config.h

All customization happens in config.h or .xoatrc; see in-line comments. The former is tracked, so use a local git branch or a merge tool to protect any customization.