A modular Wayland compositor with Dwindle tiling layout and TOML-based runtime configuration.
  • C 65%
  • C++ 33.6%
  • CMake 1.4%
Find a file
2026-06-20 19:22:35 +01:00
extra refactor: improve IPC socket handling and update window geometry management logic 2026-05-19 14:08:44 +01:00
include fix: multimonitor, popups, suspend-resume, focus 2026-06-20 12:11:10 +01:00
LICENSES refactor: improve IPC socket handling and update window geometry management logic 2026-05-19 14:08:44 +01:00
protocols refactor: improve IPC socket handling and update window geometry management logic 2026-05-19 14:08:44 +01:00
src fix: dialog and popup z-order and positioning 2026-06-20 19:22:35 +01:00
.gitignore refactor: improve IPC socket handling and update window geometry management logic 2026-05-19 14:08:44 +01:00
CMakeLists.txt refactor: improve IPC socket handling and update window geometry management logic 2026-05-19 14:08:44 +01:00
config.toml fix: config reload crash, gesture forwarding to apps, 2-finger scroll, view_next/prev 2026-06-16 00:03:58 +01:00
LICENSE refactor: improve IPC socket handling and update window geometry management logic 2026-05-19 14:08:44 +01:00
README.md refactor: improve IPC socket handling and update window geometry management logic 2026-05-19 14:08:44 +01:00

Zurin

A modular Wayland compositor with Dwindle tiling layout and TOML-based runtime configuration.

Features

  • Dwindle Layout: Smart binary tree tiling with cursor-aware window placement
  • Runtime Configuration: TOML-based configuration with hot-reload support
  • Modular Architecture: Focus on scalability and customization

Dependencies

Required

Package Version Description
wlroots 0.19+ Wayland compositor library
wayland 1.21+ Wayland protocol libraries
wayland-protocols 1.32+ Wayland protocol definitions
xkbcommon 1.5+ Keyboard handling library
libinput 1.21+ Input device handling
pixman 0.42+ Pixel manipulation library
libdrm 2.4+ Direct Rendering Manager
libpipewire 0.3+ Audio/Video processing graph
libsystemd - System and Service Manager library

Optional

Package Description
xcb, xcb-icccm Required for XWayland support

Runtime

These tools are configured by default but can be changed in config.toml.

Tool Description
kitty Default terminal emulator

Build Tools

  • CMake 3.16+
  • pkg-config
  • GCC or Clang with C11 support
  • wayland-scanner

Building

# Create build directory
mkdir build && cd build

# Configure (RELEASE)
cmake ..

# Configure (DEBUG)
cmake -DDEBUG_MODE=ON ..

# Configure (with XWayland support)
cmake -DENABLE_XWAYLAND=ON ..

# Build
make -j$(nproc)

# Install
sudo make install

Running

zurin

Configuration

Edit config.toml in the project directory or ~/.config/zurin/config.toml.

Default Keybinds

Keybind Action
Super+Q Open terminal (kitty)
Super+D Open launcher (fuzzel)
Super+Tab Close window
Super+(1-0) Switch workspace
Super+Shift+(1-0) Move to workspace
Super+Shift+M Quit
Super+Mouse Left Move window
Super+Mouse Right Resize window

License

See LICENSES/ directory.

Contributing

Contributions are welcome! Please submit a pull request and open an issue for bug reports and feature requests.

Thanks to

  • Hyprland for the excellent work, which I have appreciated over the last two years as a Hyprland user ❤️
  • DWL for its simplicity, which taught me how to implement basic features of a Wayland compositor
  • wlroots for the modules that I have used to write this compositor