Setup and Running

Building with Meson

Install the following prerequisities:

  • XCB libraries (core window management and X server interaction)

  • Vulkan SDK (compositor)

  • glm (compositor maths)

  • Python 3.6+ and boost modules (configuration API layer)

  • python-xlib (configuration script, keysyms)

  • meson and ninja (build system)

  • (git)

  • shaderc Shader compiler (shader compiler)

Clone the source tree:

git clone

Inside the source tree, create a build directory and run Meson to configure the build:

mkdir build
meson --buildtype=release build

Move to the build directory and build:

cd build

Once compiled, the build directory will contain the executable and shader objects (.spv files). Put the following line to your .xinitrc, with /path/to/ replaced with the real location in filesystem.

exec /path/to/build/chamfer --config=/path/to/config/ --shader-path=/path/to/spv/shaders/

Installing from AUR

For Arch Linux, a PKGBUILD is available from AUR. The package from AUR will install a default configuration and the precompiled shaders to /usr/share/chamfer/. Copy the configuration to another location to make modifications. Once ready, put the following line to your .xinitrc:

exec chamfer --config=/usr/share/chamfer/config/ --shader-path=/usr/share/chamfer/shaders/

where the path to should be changed if configuration was copied for modifications.


With the exec line in place in .xinitrc, X server together with Chamferwm may be started by running startx.


When multiple rendering devices are available, make the choice with --device-index=n, where n is the zero-based index of the device (default = 0).


NVIDIA users may have to add Option "AllowSHMPixmaps" "1" to their Xorg configuration.

To run the window manager without the integrated compositor, use

exec chamfer --config=/path/to/config/ -n

In this case, any other external compositor may be used.

Command line Arguments

-h, --help

Display this help menu

-c path, --config=path

Configuration Python script


-d, --debug-backend

Create a test environment for the compositor engine without redirection. The application will not act as a window manager.


-n, --no-compositor

Disable compositor.

-e, --experimental

Enable experimental features


GPU to use by its index. By default the first device in the list of enumerated GPUs will be used.

-l, --debug-layers

Enable Vulkan debug layers.


Disable scissoring optimization.


Disable host shared memory import.


Unredirect a fullscreen window bypassing the compositor to improve performance.


Shader lookup path. SPIR-V shader objects are identified by an '.spv' extension. Multiple paths may be specified.