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