No description
Find a file
Andrew Hamilton 6a6cd20392 Compositor: track pressed keys and route lost key releases to their owner
wlr_seat_keyboard_notify_key() forwards events to the focused surface but
does not maintain the seat keyboard's keycode state, so a key released on a
different compositor than it was pressed on (GTK focus moved mid-gesture,
e.g. the Enter that creates a new tab) was never delivered and left the
client with a stuck key.  Track pressed keycodes ourselves on press and
release, and on release fan the event out to every compositor that still
tracks the key so no seat is left with a stale pressed key.
2026-08-13 12:36:24 +10:00
docs docs/casilda.toml.in: add docs base url. 2025-09-11 01:16:30 -07:00
examples Examples: make global vars static to avoid symbol conflicts 2026-04-13 03:30:38 -03:00
src Compositor: track pressed keys and route lost key releases to their owner 2026-08-13 12:36:24 +10:00
tests CasildaCompositor: add clipboard integration support 2026-07-24 19:02:39 -04:00
.gitlab-ci.yml Fix documentation CI dependencies 2026-04-03 15:49:29 -04:00
CHANGELOG.md Bump version to 1.5 2026-07-24 19:05:58 -04:00
COPYING Change namespace from cambalache to casilda 2024-08-05 11:48:40 -04:00
meson.build Bump version to 1.5 2026-07-24 19:05:58 -04:00
meson.options Rename meson options file to new name 2026-07-11 04:33:09 -03:00
README.md docs/casilda.toml.in: add docs base url. 2025-09-11 01:16:30 -07:00

Casilda

A simple Wayland compositor widget for Gtk 4 which can be used to embed other processes windows in your Gtk 4 application.

It was originally created for Cambalache's workspace using wlroots, a modular library to create Wayland compositors.

Following Wayland tradition, this library is named after my hometown in Santa Fe, Argentina.

License

Casilda is distributed under the GNU Lesser General Public License, version 2.1 only (LGPL) as described in the COPYING file.

Source code

Source code lives on GNOME gitlab here

git clone https://gitlab.gnome.org/jpu/casilda.git

Dependencies

  • Meson build system
  • GTK Version 4
  • wlroots - Library to create Wayland compositors

Manual installation

This is a regular meson package and can be installed the usual way.

# Configure project in _build directory
meson setup --wipe --prefix=~/.local _build .

# Build and install in ~/.local
ninja -C _build install

How to use it

To add a Wayland compositor to your application all you have to do is create a CasildaCompositor widget and pack it as any other widget.

compositor = casilda_compositor_new (NULL);
gtk_window_set_child (GTK_WINDOW (window), GTK_WIDGET (compositor));
gtk_window_present (GTK_WINDOW (window));

The easiest way to show another process window in the compositor is to spawn the process using the helper function provided by Casilda

gchar *argv[] = { "/usr/bin/gtk4-demo", NULL };
casilda_compositor_spawn_async (compositor, NULL, argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, NULL, NULL);

API

Casilda uses gi-docgen to generate it's API reference documentation and is available online.

Contributing

If you are interested in contributing you can open an issue here and/or a merge request here

Contact

You can hang with us and ask us questions on Cambalache Matrix at #cambalache:gnome.org

Matrix