GithubHelp home page GithubHelp logo

apbryan / labwc Goto Github PK

View Code? Open in Web Editor NEW

This project forked from labwc/labwc

0.0 0.0 0.0 921 KB

Openbox alternative for Wayland

License: GNU General Public License v2.0

C 97.84% Meson 2.16%

labwc's Introduction

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

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

labwc's People

Contributors

johanmalm avatar telent avatar jbeich avatar apbryan avatar mechpen avatar tim77 avatar silentnoodlemaster avatar brodi1 avatar ezequielgarcia avatar mkshevetskiy avatar 0kalekale avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.