Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/jaelpark/chamferwm
A tiling X11 window manager with Vulkan compositor.
https://github.com/jaelpark/chamferwm
compositor vulkan x11 x11-wm xcb xorg
Last synced: 3 months ago
JSON representation
A tiling X11 window manager with Vulkan compositor.
- Host: GitHub
- URL: https://github.com/jaelpark/chamferwm
- Owner: jaelpark
- License: bsd-3-clause
- Created: 2018-09-12T16:21:59.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2024-05-11T20:42:26.000Z (6 months ago)
- Last Synced: 2024-05-12T10:32:56.870Z (6 months ago)
- Topics: compositor, vulkan, x11, x11-wm, xcb, xorg
- Language: C++
- Homepage: https://jaelpark.github.io/chamferwm-docs/
- Size: 1.44 MB
- Stars: 246
- Watchers: 19
- Forks: 11
- Open Issues: 7
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-repositories - jaelpark/chamferwm - A tiling X11 window manager with Vulkan compositor. (C++)
README
# chamferwm
A tiling window manager with Vulkan based compositor. Vulkan compositor for external X11 window managers. [Documentation](https://jaelpark.github.io/chamferwm-docs/)> **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](http://users.jyu.fi/~jaelpark/gitres/scrot-chamfer-1.jpg)](http://users.jyu.fi/~jaelpark/gitres/scrot-chamfer.png)
## Features
Window manager:- Dynamic horizontal and vertical tiling with gaps and stacking
- Specify container size restrictions, overlap when necessary
- Resize and translate individual containers in their place while keeping the surrounding layout
- Floating containers and automatic dialog, dock, widget etc. handling
- Multiple named workspaces
- Yank and paste containers to move them within the tree hierarchy along with typical move operations
- Configuration with python, scriptable behaviour with client and container specific callbacks
- Fully keyboard controllableCompositor:
- Vulkan renderer
- Arbitrary window decorations and borders with user supplied shaders
- Per-client materials
- Automatically disable for fullscreen applications
- Optional, alternatively use any other external compositor
- Standalone compositor mode (beta) to be used in combination with any other window manager## Installing
##### Prerequisites- XCB libraries
- Vulkan SDK
- glm
- Python 3.6+ and boost modules
- python-xlib
- [shaderc Shader compiler](https://github.com/google/shaderc)
- FreeType2
- HarfBuzz
- fontconfig##### General setup
Currently 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. Put the following line to your .xinitrc:
```sh
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 automatically let fullscreen applications bypass the compositor, use `--unredir-on-fullscreen`. A dedicated workspace with the compositor always disabled is provided, and by default bound to Meta+0.
- NVIDIA users may have to add ``Option "AllowSHMPixmaps" "1"`` to their Xorg configuration, if shared memory import is used (`--memory-import-mode=1`).
- For compositor compatibility mode if encountering any issues, use `--memory-import-mode=1` or `2` and/or `--no-scissoring`.To run the WM without the integrated compositor, use
```sh
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
```sh
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](https://github.com/jaelpark/chamferwm/blob/5ed340fece89eda381f25a8354a8c2dc18dd8787/config/config.py#L53-L71). 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.