Wayland compositor library

Jari Vetoniemi c3671d800f wlc.c: Move activity trigger to wlc_run 8 years ago
CMake fd7b5f34c2 Quote replace, and check the VERSION_LIST 9 years ago
example 25f75e0097 example.c: Fix broken input handling. 8 years ago
include 8e036b1e74 wlc.h: Improve documentation of wlc_init 8 years ago
lib a6878274d3 Expose output connector name and id 8 years ago
protos baca47b0fc Refactor wlc 9 years ago
shared 75dc90f8a3 Rename the shared file to wipe the last remains of loliwm in wlc 9 years ago
src c3671d800f wlc.c: Move activity trigger to wlc_run 8 years ago
tests f65df87a4e Make all find modules use PkgConfig, and make stuff more consistent. 9 years ago
.gitmodules c2bcbc11f7 Make submodules track remote branch 9 years ago
CMakeLists.txt b9b739fc8d Make it possible to skip examples and tests 9 years ago
CONTRIBUTING.rst e6d60e25f3 Add contributing guideline 8 years ago
LICENSE 57be7a1c4b Add MIT license. 9 years ago
README.rst cbd52823a3 Remove DPMS handling from wlc. 8 years ago
uncrustify.conf e6d60e25f3 Add contributing guideline 8 years ago

README.rst

.. |build| image:: http://build.cloudef.pw/build/wlc/master/linux%20x86_64/current/status.svg
.. _build: http://build.cloudef.pw/build/wlc/master/linux%20x86_64

:IRC: #orbment @ freenode
:Build: |build|_

FEATURES
--------

+------------------+-----------------------+
| Backends | DRM, X11 |
+------------------+-----------------------+
| Renderers | EGL, GLESv2 |
+------------------+-----------------------+
| TTY session | logind, legacy (suid) |
+------------------+-----------------------+
| Input | libinput, xkb |
+------------------+-----------------------+
| Monitor | Multi-monitor, DPMS |
+------------------+-----------------------+
| Hotplugging | udev |
+------------------+-----------------------+
| Xwayland | Supported |
+------------------+-----------------------+
| Clipboard | Partially working |
+------------------+-----------------------+
| Drag'n'Drop | Not implemented |
+------------------+-----------------------+

EXAMPLE
-------

.. code:: c

// For more functional example see example/example.c

#include
#include

static bool
view_created(wlc_handle view)
{
wlc_view_bring_to_front(view);
wlc_view_focus(view);
return true;
}

static void
view_focus(wlc_handle view, bool focus)
{
wlc_view_set_state(view, WLC_BIT_ACTIVATED, focus);
}

int
main(int argc, char *argv[])
{
static struct wlc_interface interface = {
.view = {
.created = view_created,
.focus = view_focus,
},
};

if (!wlc_init(&interface, argc, argv))
return EXIT_FAILURE;

wlc_run();
return EXIT_SUCCESS;
}

OPTIONS
-------

``wlc`` reads the following options on init.

+-----------------------+------------------------------------------------+
| ``--log FILE`` | Logs output to specified ``FILE``. |
+-----------------------+------------------------------------------------+

ENV VARIABLES
-------------

``wlc`` reads the following env variables.

+----------------------+------------------------------------------------------+
| ``WLC_DRM_DEVICE`` | Device to use in DRM mode. (card0 default) |
+----------------------+------------------------------------------------------+
| ``WLC_SHM`` | Set 1 to force EGL clients to use shared memory. |
+----------------------+------------------------------------------------------+
| ``WLC_OUTPUTS`` | Number of fake outputs in X11 mode. |
+----------------------+------------------------------------------------------+
| ``WLC_BG`` | Set 0 to disable the background GLSL shader. |
+----------------------+------------------------------------------------------+
| ``WLC_XWAYLAND`` | Set 0 to disable Xwayland. |
+----------------------+------------------------------------------------------+
| ``WLC_DIM`` | Brightness multiplier for dimmed views (0.5 default) |
+----------------------+------------------------------------------------------+
| ``WLC_LIBINPUT`` | Set 1 to force libinput. (Even on X11) |
+----------------------+------------------------------------------------------+
| ``WLC_REPEAT_DELAY`` | Keyboard repeat delay. |
+----------------------+------------------------------------------------------+
| ``WLC_REPEAT_RATE`` | Keyboard repeat rate. |
+----------------------+------------------------------------------------------+
| ``WLC_DEBUG`` | Enable debug channels (comma separated) |
+----------------------+------------------------------------------------------+

KEYBOARD LAYOUT
---------------

You can set your preferred keyboard layout using ``XKB_DEFAULT_LAYOUT``.

See xkb documentation for more details.

RUNNING ON TTY
--------------

If you have ``logind``, you don't have to do anything.

Without ``logind`` you need to suid your binary to root user.
The permissions will be dropped runtime.

ISSUES
------

Submit issues on this repo if you are developing with ``wlc``.

As a user of compositor, report issues to their corresponding issue trackers.

BUILDING
--------

You will need following makedepends:

- cmake
- git

And the following depends:

- pixman
- wayland
- libxkbcommon
- udev
- libinput

You will also need these for building, but they are optional runtime:

- libx11
- libxcb
- mesa, nvidia, etc.. (GLESv2, EGL, DRM)

And optionally:

- dbus (for logind support)
- systemd (for logind support)

For weston-terminal and other wayland clients for testing, you might also want to build weston from git.

You can build bootstrapped version of ``wlc`` with the following steps.

.. code:: sh

git submodule update --init --recursive # - initialize and fetch submodules
mkdir target && cd target # - create build target directory
cmake -DCMAKE_BUILD_TYPE=Debug .. # - run CMake
make # - compile

# You can now run (Ctrl-Esc to quit)
./example/example

PACKAGING
---------

For now you can look at the `AUR recipe `_ for a example.

CONTRIBUTING
------------

See the `CONTRIBUTING `_ for more information.

BINDINGS
--------

- `ocaml-wlc `_ - OCaml (experimental)

SOFTWARE USING WLC
------------------

- `orbment `_ - Modular Wayland compositor
- `ocaml-loliwm `_ - Translation of loliwm to OCaml
- `sway `_ - i3-compatible window manager for Wayland

SIMILAR SOFTWARE
----------------

- `swc `_ - A library for making a simple Wayland compositor
- `libwlb `_ - A Wayland back-end library
- `libweston `_ - Weston as a library