fireplace_lib 3.0.2

Modular wayland window manager library failed to build fireplace_lib-3.0.2
Please check the build logs for more information.
See Builds for ideas on how to fix a failed build, or Metadata for how to configure builds.
If you believe this is' fault, open an issue.

Fireplace Build Status Lines of Code

He who wants to warm himself in old age must build a fireplace in his youth.

A modular wayland window manager

Fireplace Library

This folder is about the modular fireplace_lib library for creating your own window manager / wayland compositor based the functionality provided by this library.

For information on the actual reference window manager "Fireplace" please go here.


Documentation is hosted on GitHub pages, because special build parameters are required - see "Usage" - which makes it unable to build on


In your Cargo.toml

fireplace_lib = "^1.0.0"

fireplace_lib offers multiple features, which are all enabled by default:

  • static - Compile wlc and link statically
  • render - Enable rendering at all
  • gl - Implies render, provides functionality for OpenGL ES rendering
  • graphics - Implies render and gl, provides functionality for rendering with piston2d-graphics
  • conrod_ui - Implies render, gl and graphics, provides functionality for rendering with conrod

E.g. to use only gl:

fireplace_lib = { version = "^1.0.0", default-features = false, features = ["gl"] }


Runtime and Build dependencies:

  • wlc (without static)
  • pixman
  • wayland 1.7+
  • wayland-protocols 1.7+
  • libxkbcommon
  • udev
  • libinput
  • libx11 (X11-xcb, Xfixes)
  • libxcb (xcb-ewmh, xcb-composite, xcb-xkb, xcb-image, xcb-xfixes)
  • libgbm (usually provided by mesa in most distros)
  • libdrm
  • libEGL (GPU drivers and mesa provide this)
  • libGLESv2 (GPU drivers and mesa provide this)
  • libfontconfig1 (with feature ui)
  • libfreetype6 (with feature ui)

And optionally:

  • dbus (for logind support)
  • systemd (for logind support)

Build-only Dependencies:

  • fontconfig (with feature ui)
  • libclang (>=3.8)

If you have libclang in another path then /usr/lib you have to provide it when building your binary:

LIBCLANG_PATH=/usr/lib64 cargo build --release



The most basic examples initializing all fireplace_lib features is keeped in fireplace_flavors/code


I will happily accept new features or bug fixes, given that they are:

  • easily configurable via a struct that implements Deserialize via serde
  • is split into a seperate feature if it increases compile time substancially and/or will most likely not be used by a large amount of users
  • passes cargo clippy except for well explained exceptions
  • was formated with rustfmt and the config in the repository's root
  • roughly follows the design of existing code

If you are not sure, if your contribution does match these rules, open an issue or a pull request and lets discuss the subject.

Also note you can easily keep your personal changes out-of-tree by creating another rust library crate, that can be included in other forks, if you still want to make it available to the public or if you just add your code directly into your personal binary.

Like this you will never need to modify fireplace_lib in the first place, you can easier maintain your fork and still be up to date with new functionality.