A Wayland kiosk
Find a file
Matthew Bauer 5d7ff9e64d
Don’t terminate display when no view is found (#132)
* Don’t terminate display when no view is found

Some apps like RetroArch will quit and fork itself to switch
modes (like from the menu to a loaded core). This means that for a
very short period of time we have no view available for Wayland. Right
now, Cage doesn’t actually exit when it does this terminate, so you
get this kind of zombie child process that is running but not showing
anything on the screen because there is no compositor.

The solution I have here is to just keep Cage’s Wayland server running
to avoid this issue. I’m open to other idea, but this seems sane to
me. Perhaps an alternative is to check if the process is still alive
when this happens, if not then we can do the quitting behavior. In
addition, we could make this an option if some users don’t want this
behavior.

* Remove "ever_been_mapped" from cg_wayland_view
2020-03-16 20:32:24 +01:00
.builds CI: add tasks that build without XWayland 2020-02-18 21:20:23 +01:00
.clang-format Add clang-format file 2020-02-18 21:20:23 +01:00
cage.c Cage: check for sigchld_source being NULL before removing it 2020-02-22 00:23:03 +01:00
config.h.in cage: add -v argument to print version 2020-01-26 18:18:49 +01:00
idle_inhibit_v1.c Apply clang-format 2020-02-18 21:20:23 +01:00
idle_inhibit_v1.h Replace all wayland-server.h includes with wayland-server-core.h 2019-12-20 17:16:53 +01:00
LICENSE Refactor surface damaging and rendering code 2020-01-11 17:07:33 +01:00
meson.build meson: fix snapshot builds 2020-02-17 19:34:54 +01:00
meson_options.txt Add XWayland support 2019-01-02 20:58:48 +01:00
output.c Begrudgingly format wl_list_* macros with a space before parameter list 2020-02-18 21:20:23 +01:00
output.h Apply clang-format 2020-02-18 21:20:23 +01:00
README.md README: update build instructions 2020-02-01 16:17:58 +01:00
render.c Begrudgingly format wl_list_* macros with a space before parameter list 2020-02-18 21:20:23 +01:00
render.h Refactor surface damaging and rendering code 2020-01-11 17:07:33 +01:00
seat.c seat: remove signals earlier in seat destroy handler (#130) 2020-02-27 20:39:15 +01:00
seat.h Implement support for wlr_keyboard_group (#123) 2020-02-21 21:19:12 +01:00
server.h server: remove backend pointer 2020-02-08 16:49:12 +01:00
util.c Refactor surface damaging and rendering code 2020-01-11 17:07:33 +01:00
util.h Refactor surface damaging and rendering code 2020-01-11 17:07:33 +01:00
view.c Don’t terminate display when no view is found (#132) 2020-03-16 20:32:24 +01:00
view.h Apply clang-format 2020-02-18 21:20:23 +01:00
xdg_shell.c Apply clang-format 2020-02-18 21:20:23 +01:00
xdg_shell.h Replace all wayland-server.h includes with wayland-server-core.h 2019-12-20 17:16:53 +01:00
xwayland.c Don’t terminate display when no view is found (#132) 2020-03-16 20:32:24 +01:00
xwayland.h Don’t terminate display when no view is found (#132) 2020-03-16 20:32:24 +01:00

Cage: a Wayland kiosk builds.sr.ht status

Cage's logo

This is Cage, a Wayland kiosk. A kiosk runs a single, maximized application.

This README is only relevant for development resources and instructions. For a description of Cage and installation instructions for end-users, please see its project page and the Wiki.

Release signatures

Releases are signed with 6EBC43B1 and published on GitHub.

Building and running Cage

You can build Cage with the meson build system. It requires wayland, wlroots and xkbcommon to be installed. Note that Cage is developed against the latest tag of wlroots, in order to not constantly chase breaking changes as soon as they occur.

Simply execute the following steps to build Cage:

$ meson build
$ ninja -C build

By default, this builds a debug build. To build a release build, use meson build --buildtype=release.

Cage comes with compile-time support for XWayland. To enable this, first make sure that your version of wlroots is compiled with this option. Then, add -Dxwayland=true to the meson command above. Note that you'll need to have the XWayland binary installed on your system for this to work.

You can run Cage by running ./build/cage APPLICATION. If you run it from within an existing X11 or Wayland session, it will open in a virtual output as a window in your existing session. If you run it at a TTY, it'll run with the KMS+DRM backend. In debug mode (default build type with Meson), press Alt+Esc to quit. For more configuration options, see Configuration.

Cage is based on the annotated source of tinywl and rootston.

Bugs

For any bug, please create an issue on GitHub.

License

Please see LICENSE on GitHub.

Copyright © 2018-2020 Jente Hidskes dev@hjdskes.nl