#window-manager #x11 #control #ipc

app mars-relay

Utility to control and automate a window manager

9 unstable releases (3 breaking)

0.5.3 Dec 19, 2023
0.5.2 Nov 29, 2023
0.5.0 Jun 23, 2023
0.4.1 Apr 20, 2023
0.2.0 Feb 10, 2023

#304 in GUI

37 downloads per month

Custom license

170KB
3.5K SLoC

MARSWM Project

marswm aims to be the rusty successor to moonwm. In addition to the window manager this repository also contains the library it is built on, an accompanying status bar and an ipc client to control the window manager from external scripts.

You can find documentation on how to configure the window manger on crates.io or in the Github repo

DISCLAIMER: Although already usable this is still in development. The library API as well as the window manager itself might be subject to frequent changes.

The Components

marswm

marswm's goal is to have a simple tiling window manager with tiling and workspaces for myself.

Features:

  • dwm-style layouts
  • workspaces (similar to i3 or bspwm)
  • IPC using X11 atoms (mars-relay)
  • YAML for configuration and key bindings

libmars

libmars aims expose xlib's ugly sides through a nice rusty interface that makes it easier to implement custom window managers. It is still not very mature and mainly targeted to suit marswm's needs, but it should be great for writing simple, personal window managers once the API is somewhat stable and documented. Although not currently planned a wayland backend (as well as other backends) would be possible to implement due to the libraries modular concept.

mars-relay

mars-relay lets you control EWMH-compliant X11 window managers and can be used as an IPC-client for marswm and a lot of other window managers.

Installation (with package manager)

See installation.md.

For a guide on how to setup a working desktop environment with marswm as base take a look at the quickstart guide.

Building from Source

You have to install the following libraries natively: libX11, libXft, libXinerama, libXrandr.

Then you can use cargo to build the binaries.

# development build
cargo build
# release build
cargo build --release

The binary files will be in target/debug or target/release depending on your build type.

Dependencies

~1.5–2.1MB
~42K SLoC