9 stable releases
Uses old Rust 2015
3.0.2 | Mar 2, 2017 |
---|---|
3.0.1 | Feb 21, 2017 |
2.0.1 | Feb 19, 2017 |
1.0.3 | Feb 15, 2017 |
#17 in #compositor
280KB
6K
SLoC
Fireplace
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
Documentation is hosted on GitHub pages, because special build parameters are required - see "Usage" - which makes it unable to build on docs.rs
Usage
In your Cargo.toml
fireplace_lib = "^1.0.0"
fireplace_lib offers multiple features, which are all enabled by default:
static
- Compilewlc
and link staticallyrender
- Enable rendering at allgl
- Impliesrender
, provides functionality for OpenGL ES renderinggraphics
- Impliesrender
andgl
, provides functionality for rendering withpiston2d-graphics
conrod_ui
- Impliesrender
,gl
andgraphics
, provides functionality for rendering withconrod
E.g. to use only gl
:
fireplace_lib = { version = "^1.0.0", default-features = false, features = ["gl"] }
Building
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
See https://github.com/KyleMayes/clang-sys#environment-variables
Examples
The most basic examples initializing all fireplace_lib
features is keeped in fireplace_flavors/code
Contributing
I will happily accept new features or bug fixes, given that they are:
- easily configurable via a struct that implements
Deserialize
viaserde
- 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.
Dependencies
~5–10MB
~170K SLoC