SimpleWC (Simple Wayland Compositor)
It is a simple wlroots-based compositor (window manager) written to fit my specific needs, and a way
to teach myself the basics of window management. (formerly SimpleWay).
Description
- Minimal stacking window manager for Wayland using wlroots (currently based on wlroots v0.17)
- Not meant to be tiny or fast, but aims for simplicity in design and coding
- Written in C
- Built upon tinywl, inspirations from dwl and labwc
- Features:
- No frills (menu, titlebar, icons, pixmap themes, etc...)
- Text config file (default $HOME/.config/simplewc/configrc)
- Simple tiling (manual left-right tiling or auto-tile like DWL/DWM)
- simplewc-msg: IPC messenger using dwl ipc protocol(dwl-ipc-unstable-v2.xml, adopted from dwlmsg)
Screenshots
v0.1
Usage
> simplewc [--config file][--start cmd][--debug][--version][--help]
> simplewc-msg --set [--tag .+-^][--client tag_n][--output (on|off)]
(--get|--watch) [--output][--tag][--client (title|appid)]
--action (quit|reconfig|lock)
Build
> meson setup [-Dxwayland=enabled|disabled] build
> ninja -C build || exit 1
> sudo ninja -C build install
- Build dependencies:
- wlroots-0.18
- libxkbcommon (usually a dependency of wlroots)
- libinput (usually a dependency of wlroots)
- xwayland (optional)
Configuration
Default configuration file read from $HOME/.config/simplewc/configrc
, and allows users to customize:
- window management behaviour: ( # of tags, tile gaps, movement steps etc )
- window border width and colour
- lock command
- autostart script (e.g. set background, invoke status-bar, launch idle-inhibitor)
- keyboard layout and options
- keybinds
- mouse binds
Status
Please use Github Issues Tracker to report bugs and issues.
Still a work in progress, and not in a working state yet. Stay tuned...
Version Log
- 0.3 (Work in progress)
- Goal: Continue to improve the compositor
- Uses wlroots v0.18
- 0.2 (2024-08-29) (download)
- Goal: add in additional features
- Uses wlroots v0.17
- Added visibility toggle (a.k.a. iconify) and maximize functionality
- Added support for wlr_idle_notifier_v1, wlr_idle_inhibit_v1, and wlr_session_lock_manager_v1 (e.g. swaylock)
- Added support for wlr_output_power_management_v1 (e.g. wlopm)
- Added support for wlr_gamma_control_manager_v1
- Added feature to send action via simplewc-msg
- Added support for dragging icons
- Improve client cycling function
- See ChangeLog for fixed bugs
- 0.1 (2023-12-23) (download)
- Goal: get the base code in working order
- Uses wlroots v0.17