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 https://github.com/jaelpark/chamferwm.git

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
ninja

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/config.py --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/config.py --shader-path=/usr/share/chamfer/shaders/

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

Starting

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

Note

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).

Note

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/config.py -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

Backend

-d, --debug-backend

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

-C, --standalone-compositor

Use compositor for external window managers. (Work in progress)

Compositor

-n, --no-compositor

Disable compositor.

-e, --experimental

Enable experimental features

--device-index=id

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.

--no-scissoring

Disable scissoring optimization.

-m, --memory-import-mode=m

Memory import mode: 0: DMA-buf import, 1: Host memory import, 2: CPU import (slow, compatibility)

--unredir-on-fullscreen

Unredirect a fullscreen window bypassing the compositor to improve performance.

--shader-path=path

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