Joshua-Ashton / labwc

A Wayland stacking compositor

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

labwc

1. What is this?

Labwc stands for Lab Wayland Compositor, with lab indicating a sense of experimentation and treading new ground.

It is a wlroots-based stacking compositor aiming to be light-weight and independent, with a focus on simply stacking windows well and rendering some window decorations. It relies on clients for wall-paper, panels, screenshots, and so on to create a full desktop environment.

Labwc tries to stay in keeping with wlroots and sway in terms of general approach and coding style.

In order to avoid re-inventing configuration & theme syntax, openbox-3.4 specification is used. This does not mean that labwc is an openbox clone but rather that configuration files will look and feel familiar.

video link date content
Video (1:10) 05-Aug-2021 window gymnastics, theming and waybar
Video (3:42) 25-Feb-2021 setting background and themes; xwayland/xdg-shell windows

So far, labwc supports the following:

  • Config files (rc.xml, autostart, environment)
  • Theme files and xbm icons
  • Damage tracking to reduce CPU usage
  • A basic root-menu (configured with menu.xml)
  • HiDPI
  • wlr-output-management protocol
  • layer-shell protocol
  • foreign-toplevel protocol (e.g. to integrate with panels and bars)
  • Optionally xwayland

2. Build

meson build/
ninja -C build/

Dependencies include:

  • meson, ninja, gcc/clang
  • wlroots (master)
  • wayland (>=1.19)
  • wayland-protocols
  • libinput (>=1.14)
  • libxml2
  • cairo, pango, glib-2.0
  • xkbcommon
  • xwayland, xcb (optional)

Disable xwayland with meson -Dxwayland=disabled build/

For further details see wiki/Build.

3. Install

See wiki/Install.

4. Configure

Labwc uses the files listed below for configuration and theming.

file user over-ride location man page
rc.xml ~/.config/labwc/ labwc-config(5), labwc-actions(5)
menu.xml ~/.config/labwc/ labwc-menu(5)
autostart ~/.config/labwc/ labwc(1)
environment ~/.config/labwc/ labwc-environment(5)
themerc ~/.local/share/themes/<theme-name>/openbox-3/ labwc-theme(5)

The example rc.xml has been kept simple. For all options and default values, see rc.xml.all

Configuration and theme files are re-loaded on receiving SIGHUP (e.g. killall -SIGHUP labwc)

For keyboard settings, see environment and xkeyboard-config(7)

For themes, search the internet for "openbox themes" and place them in ~/.local/share/themes/. Some good starting points include:

5. Run

./build/labwc [-s <command>]

Click on the background to launch a menu.

If you have not created an rc.xml config file, default binds will be:

combination action
alt-tab activate next window
alt-escape exit
super-return alacritty
alt-F3 bemenu
alt-F4 close window
super-a toggle maximize
alt-mouse-left move window
alt-mouse-right resize window
alt-arrow move window to edge
XF86_AudioLowerVolume amixer sset Master 5%-
XF86_AudioRaiseVolume amixer sset Master 5%+
XF86_AudioMute amixer sset Master toggle
XF86_MonBrightnessUp brightnessctl set +10%
XF86_MonBrightnessDown brightnessctl set 10%-

6. Integrate

Suggested apps to use with labwc:

7. Roadmap

A lot of emphasis is put on code simplicy when considering features.

The main development effort if focused on producing a solid foundation for a stacking compositor rather than adding configuration and theming options.

See acceptance criteria for details.

High-level summary of items which are not inteded to be implemented:

  • Icons (except window buttons)
  • Animations
  • Gradients for decoration and menus
  • Any theme option not required to reasonably render common themes (it's amazing how few options are actually required).

8. Contribute

Let's try to stick to this coding style

About

A Wayland stacking compositor

License:GNU General Public License v2.0


Languages

Language:C 98.0%Language:Meson 2.0%