/Wmderland

🌳 X11 tiling window manager using space partitioning tree, featuring an easy-to-use configuration system

Primary LanguageC++MIT LicenseMIT

Wmderland

Modern, Minimal X11 Tiling Window Manager

Overview

Wmderland is a modern, minimal Tiling Window Manager written in C/C++ with Xlib

  • A lightweight i3, written from scratch
  • An easy-to-use config system (example)
  • Stable, simple and maintainable

Documentation available at its wiki page.


Philosophy / Why Use This?

i3wm

A versitile window manager which is shipped with i3bar, has a nice tiling alrogithm, several window layout modes (default, stacking, tabbed) and it is very stable. However, I think certain areas can be further improved:

  • config system is too complicated
  • there are many features that I've rarely used
  • ~44k lines of C code, which is a bit hard to trace and maintain

Wmderland

Wmderland, while derives from i3, is built with a different philosophy in mind. The plan for Wmderland is to become a modern but minimal tiling window manager which:

  • follows Unix philosophy - Do one thing and do it well
  • has an easy-to-use config
  • tiling behaviors are similar to that of i3
  • written in C++ OOP and Xlib. Only ~3k lines of C++11 code, hopefully it will be a lot easier to maintain.

What's Included?

  • Tree-based horizontal and vertical tiling (like i3)
  • Gaps and borders (like i3-gaps)
  • Statically allocated workspaces (i3 has dynamically allocated workspaces)
  • Smart floating (dialog windows will be floating by default, their pos/size will be cached)
  • Easy-to-use config with runtime reload support
  • Supports a subset of EWMH, see src/properties.cc
  • Error recovery mechanism
  • Has a tiny client which can interact/control Wmderland

Todo

  • Ability to resize tiling windows based on percentage (#16, #18)
  • Web browser windows should go fullscreen as video goes fullscreen
  • Window title bars
  • Rounded corners
  • Two borders

Build Requirements / Installation

Build Requirements

  • g++ (requires C++11)
  • CMake
  • Xlib headers
  • Optional - glog (Google's C++ logging library)

Installation

  1. Build and install project
$ git clone https://github.com/aesophor/Wmderland.git
$ cd Wmderland
$ ./build.sh -i
  1. Copy the config file (IMPORTANT)
$ mkdir -p ~/.config/Wmderland
$ cp example/config ~/.config/Wmderland/.
  1. If not using a Display Manager, add this to your ~/.xinitrc and execute startx
exec Wmderland

Special Thanks


License

Available under the MIT License