1# chamferwm
2A tiling window manager with Vulkan based compositor. [Documentation](https://jaelpark.github.io/chamferwm-docs/)
3
4[![Preview](http://users.jyu.fi/~jaelpark/gitres/scrot-chamfer-1.jpg)](http://users.jyu.fi/~jaelpark/gitres/scrot-chamfer.png)
5
6## Prerequisites
7
8 - XCB libraries
9 - Vulkan SDK
10 - glm
11 - Python 3.6+ and boost modules
12 - python-xlib
13 - [shaderc Shader compiler](https://github.com/google/shaderc)
14 - FreeType2
15 - HarfBuzz
16 - fontconfig
17
18## Features
19Window manager:
20
21 - Dynamic horizontal and vertical tiling with gaps and stacking
22 - Specify container size restrictions, overlap when necessary
23 - Resize and translate individual containers in their place while keeping the surrounding layout
24 - Floating containers and automatic dialog, dock, widget etc. handling
25 - Multiple named workspaces
26 - Yank and paste containers to move them within the tree hierarchy along with typical move operations
27 - Configuration with python, scriptable behaviour with client and container specific callbacks
28 - Fully keyboard controllable
29
30Compositor:
31
32 - Vulkan renderer
33 - Arbitrary window decorations and borders with user supplied shaders
34 - Per-client materials
35 - Automatically disable for fullscreen applications
36 - Optional, alternatively use any other external compositor
37
38## Installing
39Currently a PKGBUILD is available for testing purposes. Install from [AUR](https://aur.archlinux.org/packages/chamfer-git/), 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. Once ready, put the following line to your .xinitrc:
40
41```sh
42exec chamfer --config=/usr/share/chamfer/config/config.py --shader-path=/usr/share/chamfer/shaders/
43```
44
45Adding `--experimental` to the line above can result in considerable performance improvements, but may not yet work properly on all drivers. 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). Launch Xorg with `startx`.
46
47 - To automatically let fullscreen applications bypass the compositor, use `--unredir-on-fullscreen`.
48 - NVIDIA users may have to add ``Option "AllowSHMPixmaps" "1"`` to their Xorg configuration.
49 - For compositor compatibility mode if encountering any issues, use `--no-host-memory-import` and `--no-scissoring`.
50
51To run the WM without the integrated compositor, use
52
53```sh
54exec chamfer --config=/usr/share/chamfer/config/config.py -n
55```
56
57In this case, any other external compositor may be used.
58