jaelpark / chamferwm

A tiling X11 window manager with Vulkan compositor.
https://jaelpark.github.io/chamferwm-docs/
BSD 3-Clause "New" or "Revised" License
249 stars 11 forks source link
compositor vulkan x11 x11-wm xcb xorg

chamferwm

A tiling window manager with Vulkan based compositor. Vulkan compositor for external X11 window managers. Documentation

Note Support for DMA-buf import has been added, and has been made default. This can be disabled with --memory-import-mode=1, which will revert to host pointer import method.

Note Initial support for standalone compositor feature has been merged. The program can now be configured to run the Vulkan compositor on external X11 window managers. See below for instructions.

Preview

Features

Window manager:

Compositor:

Installing

Prerequisites
General setup

Currently a PKGBUILD is available for testing purposes. Install from AUR, or run meson to build manually. 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. Put the following line to your .xinitrc:

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

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). The ordering follows the list reported by vulkaninfo utility. Launch Xorg with startx.

To run the WM without the integrated compositor, use

exec chamfer --config=/usr/share/chamfer/config/config.py -n

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

Compositor mode for other WMs

The Vulkan compositor can be used together with external X11 window managers. To launch the program in this mode, run

chamfer -C --config=/usr/share/chamfer/config/config.py --shader-path=/usr/share/chamfer/shaders/
Style and decorations

The default "demo" style draws rounded borders around the windows, as well as shadows. The style can be changed by editing the shaders section of the config. Changing the style attributes (color, borders etc.) of the stock shaders is at the moment only possible by editing the values in the fragment shader itself, and then rebuilding. For a complete custom look, the shaders can be replaced entirely. Shaders can be specified on per-window basis, enabling some interesting looks for your desktop.