#yoga #window-manager #x11 #wm #yogawm

nightly app yogawm

The flexible library for creating x window managers

1 unstable release

0.1.0 Aug 10, 2020

#6 in #window-manager

21 downloads per month

MIT license

16KB
206 lines

yogawm - the flexible window manager (library)

Yoga is a felxible library for creating x window managers. You can think of it a little bit like XMonad - altough it's a little less coupled to specific ideas. The goal is to take as much complexity as possible away while offering a full-featured framework for programming your "own" wm. Another important goal is to have a really easy to understand documentation which makes things alot more clear to users.

Yoga has no configuration file, like most other wm's. You write a standalone program which just uses the interfaces and ideas yoga offers you. yoga tries to be as declarative as possible. This way might be a little harder to get started with, but it has also some great benefits:

  • You pull in only the features you need.
  • You handle window events by yourself.
  • You build what you want.

Quickstart

Not possible right now. This lib is pre-alpha. Currently the primary development goal is to fully implement and test libx11 to have a good starting point for designing the internals of yoga.

Development Roadmap

This is a very very rough overview of the next steps for this library. Things might change, get removed or new stuff gets added along the way.

libx11

  • Establish a connection to X11
  • Retrieve data about screens
  • Retrieve data about windows
  • Implement a high level interface for working with windows (kill, spawn, move..)
  • Provide a solid event system
  • Provide io interfaces (keyboard/mice)
  • Provide highlevel drawing interfaces

yoga

  • Provide abstractions over libx11
  • Focus on window manager tasks (event handling, workspaces, layouts)
  • Provide traits to implement own Layouts
  • Handle internal event loop and interaction with libx (only pass events to client)
  • Have an easy to use API

Contributing

I'd love to get PR's or accept people as contributors. I'll write a rough technical overview in the next time to make it easier to get into writing code for this project.

Dependencies

~5.5MB
~127K SLoC