Need help with basic_wm?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

328 Stars 55 Forks 45 Commits 3 Opened issues


An example basic X11 window manager.

Services available


Need anything else?

Contributors list

# 46,934
45 commits

Basic Window Manager

basic_wm is a simple reparenting, non-compositing X window manager that demonstrates how to implement the fundamental functionality of a window manager:

  • Managing the life cycle of windows
  • Reparenting windows
  • Basic window operations (moving, resizing, closing)

It serves as a pedagogical example for my series of articles, How X Window Managers Work, And How To Write One.

Building and Running

To build this example window manager, you will need:

To run and test it, you will need:

  • Xephyr
  • xinit
  • Random X utilities such as
    , and
    to play with

On Ubuntu/Debian, you can install these dependencies with:

sudo apt-get install \
    build-essential libx11-dev libgoogle-glog-dev \
    xserver-xephyr xinit x11-apps xterm

On Fedora/CentOS, you can install these with:

sudo yum install \
    make gcc gcc-c++ libX11-devel glog-devel \
    xorg-x11-server-Xephyr xorg-x11-apps xterm

On Arch Linux, you can install these with:

yaourt -S base-devel libx11 google-glog \
    xorg-server-xephyr xorg-xinit xorg-xclock xorg-xeyes xterm

Consult your own distro's documentation for how to install these.

Once you have all the dependencies, building and running it is as simple as:


This will launch a simple Xephyr session like in the following screenshot: Screenshot


Supported keyboard shortcuts:

  • Alt + Left Click: Move window
  • Alt + Right Click: Resize window
  • Alt + F4: Close window
  • Alt + Tab: Switch window

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.