Add API reference generation using gi-docgen
This commit is contained in:
parent
4c0d5308ed
commit
7662c0e332
7 changed files with 113 additions and 74 deletions
42
CHANGELOG.md
42
CHANGELOG.md
|
|
@ -7,55 +7,33 @@ packaging changes like new dependencies or build system changes.
|
||||||
Casilda used even/odd minor numbers to differentiate between stable and
|
Casilda used even/odd minor numbers to differentiate between stable and
|
||||||
development releases.
|
development releases.
|
||||||
|
|
||||||
## 0.9.2
|
|
||||||
|
|
||||||
2025-07-27 - Scrollable Release!
|
## Unreleased
|
||||||
|
|
||||||
|
- Add dmabuf support (Val Packett)
|
||||||
|
- Added vapi generation (PaladinDev)
|
||||||
|
- Add library soname (Benson Muite
|
||||||
- Implement GtkScrollable iface
|
- Implement GtkScrollable iface
|
||||||
- Add casilda_compositor_get_client_socket_fd()
|
- Add casilda_compositor_get_client_socket_fd()
|
||||||
- Add casilda_compositor_spawn_async()
|
- Add casilda_compositor_spawn_async()
|
||||||
- Remove bg-color property
|
- Remove bg-color property
|
||||||
|
|
||||||
### Issues
|
|
||||||
|
|
||||||
- #8 "Investigate using WAYLAND_SOCKET"
|
|
||||||
- #7 "Implement GtkScrollable iface"
|
|
||||||
|
|
||||||
## Packaging
|
|
||||||
|
|
||||||
- API version changed from 0.1 to 0.2 because bg-color property was removed
|
|
||||||
- API version will be bumped to 1.0 in next stable release
|
|
||||||
|
|
||||||
## 0.9.0
|
|
||||||
|
|
||||||
2025-06-22 - Native rendering Release!
|
|
||||||
|
|
||||||
- Fix rendering glitch on resize
|
|
||||||
- Do not use wlr scene layout
|
|
||||||
- Render windows and popups directly in snapshot()
|
- Render windows and popups directly in snapshot()
|
||||||
- Position windows on center of widget
|
- Position windows on center of widget
|
||||||
- Position transient windows on center of parent
|
- Position transient windows on center of parent
|
||||||
- Fix unmaximize
|
- Fix unmaximize
|
||||||
|
|
||||||
### Issues
|
|
||||||
|
|
||||||
- #11 "Resource leak causing crash with dmabuf"
|
|
||||||
- #3 " Unmaximize not working properly"
|
|
||||||
|
|
||||||
## Packaging
|
## Packaging
|
||||||
|
|
||||||
|
- API/soname version bumped from 0.1 to 1.0
|
||||||
|
- Small API break (bg-color property was removed)
|
||||||
- Do not install private header casilda-wayland-source.h
|
- Do not install private header casilda-wayland-source.h
|
||||||
|
|
||||||
## 0.3.0
|
|
||||||
|
|
||||||
2025-05-27 - Dmabuf Release!
|
|
||||||
|
|
||||||
- Add dmabuf support (Val Packett)
|
|
||||||
- Added vapi generation (PaladinDev)
|
|
||||||
- Add library soname (Benson Muite)
|
|
||||||
|
|
||||||
### Issues
|
### Issues
|
||||||
|
|
||||||
|
- #8 "Investigate using WAYLAND_SOCKET"
|
||||||
|
- #7 "Implement GtkScrollable iface"
|
||||||
|
- #11 "Resource leak causing crash with dmabuf"
|
||||||
|
- #3 " Unmaximize not working properly"
|
||||||
- #2 "Add dmabuff support" (Val Packett)
|
- #2 "Add dmabuff support" (Val Packett)
|
||||||
- #9 "Bad performance"
|
- #9 "Bad performance"
|
||||||
- #10 "Add a soname to shared library" (Benson Muite)
|
- #10 "Add a soname to shared library" (Benson Muite)
|
||||||
|
|
|
||||||
49
README.md
49
README.md
|
|
@ -31,7 +31,7 @@ Source code lives on GNOME gitlab [here](https://gitlab.gnome.org/jpu/casilda)
|
||||||
|
|
||||||
This is a regular meson package and can be installed the usual way.
|
This is a regular meson package and can be installed the usual way.
|
||||||
|
|
||||||
```
|
```bash
|
||||||
# Configure project in _build directory
|
# Configure project in _build directory
|
||||||
meson setup --wipe --prefix=~/.local _build .
|
meson setup --wipe --prefix=~/.local _build .
|
||||||
|
|
||||||
|
|
@ -42,56 +42,25 @@ ninja -C _build install
|
||||||
## How to use it
|
## How to use it
|
||||||
|
|
||||||
To add a Wayland compositor to your application all you have to do is create a
|
To add a Wayland compositor to your application all you have to do is create a
|
||||||
CasildaCompositor widget.
|
CasildaCompositor widget and pack it as any other widget.
|
||||||
|
|
||||||
You can specify which UNIX socket the compositor will listen for clients
|
```c
|
||||||
connections or let it will choose one automatically.
|
|
||||||
|
|
||||||
```
|
|
||||||
compositor = casilda_compositor_new ("/tmp/casilda-example.sock");
|
|
||||||
gtk_window_set_child (GTK_WINDOW (window), GTK_WIDGET (compositor));
|
|
||||||
```
|
|
||||||
|
|
||||||
Once the compositor is running you can connect to it by specifying the socket
|
|
||||||
in WAYLAND_DISPLAY environment variable.
|
|
||||||
|
|
||||||
```
|
|
||||||
export GDK_BACKEND=wayland
|
|
||||||
export WAYLAND_DISPLAY=/tmp/casilda-example.sock
|
|
||||||
gtk4-demo
|
|
||||||
```
|
|
||||||
|
|
||||||
If you do not want any client being able to connect to the compositor you can
|
|
||||||
pass NULL as socket and spawn the client with casilda_compositor_spawn_async()
|
|
||||||
or get an already connected socket with casilda_compositor_get_client_socket_fd()
|
|
||||||
and pass it to the client on WAYLAND_SOCKET env variable.
|
|
||||||
|
|
||||||
```
|
|
||||||
compositor = casilda_compositor_new (NULL);
|
compositor = casilda_compositor_new (NULL);
|
||||||
gtk_window_set_child (GTK_WINDOW (window), GTK_WIDGET (compositor));
|
gtk_window_set_child (GTK_WINDOW (window), GTK_WIDGET (compositor));
|
||||||
gtk_window_present (GTK_WINDOW (window));
|
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
|
||||||
|
|
||||||
|
```c
|
||||||
gchar *argv[] = { "/usr/bin/gtk4-demo", NULL };
|
gchar *argv[] = { "/usr/bin/gtk4-demo", NULL };
|
||||||
casilda_compositor_spawn_async (compositor, NULL, argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, NULL, NULL);
|
casilda_compositor_spawn_async (compositor, NULL, argv, NULL, G_SPAWN_DEFAULT, NULL, NULL, NULL, NULL);
|
||||||
```
|
```
|
||||||
|
|
||||||
## API
|
## API
|
||||||
|
|
||||||
The api is pretty simple CasildaCompositor.
|
Casilda uses gi-docgen to generate it API reference documentation
|
||||||
|
|
||||||
Properties:
|
|
||||||
|
|
||||||
- socket: The unix socket file to connect to this compositor (string)
|
|
||||||
- scrollable: True to make widget scrollable.
|
|
||||||
|
|
||||||
Methods:
|
|
||||||
|
|
||||||
- `casilda_compositor_get_client_socket_fd ()`
|
|
||||||
Create a client socket file descriptor connected to this compositor ready to use by passing it to a client with
|
|
||||||
WAYLAND_SOCKET environment variable.
|
|
||||||
|
|
||||||
- `casilda_compositor_spawn_async ()`
|
|
||||||
Executes a child program asynchronously with the right environment to automatically connect to this compositor.
|
|
||||||
|
|
||||||
## Contributing
|
## Contributing
|
||||||
|
|
||||||
|
|
|
||||||
40
docs/casilda.toml.in
Normal file
40
docs/casilda.toml.in
Normal file
|
|
@ -0,0 +1,40 @@
|
||||||
|
# SPDX-FileCopyrightText: 2025 Juan Pablo Ugarte
|
||||||
|
# SPDX-License-Identifier: CC0-1.0
|
||||||
|
|
||||||
|
[library]
|
||||||
|
version = "@VERSION@"
|
||||||
|
description = "A simple Wayland compositor widget for Gtk 4"
|
||||||
|
authors = "Juan Pablo Ugarte"
|
||||||
|
license = "LGPL-2.1-only"
|
||||||
|
website_url = "https://gitlab.gnome.org/jpu/casilda"
|
||||||
|
browse_url = "https://gitlab.gnome.org/jpu/casilda"
|
||||||
|
repository_url = "https://gitlab.gnome.org/jpu/casilda.git"
|
||||||
|
devhelp = true
|
||||||
|
search_index = true
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
"Gtk-4.0",
|
||||||
|
"GLib-2.0",
|
||||||
|
"GObject-2.0"
|
||||||
|
]
|
||||||
|
|
||||||
|
[dependencies."Gtk-4.0"]
|
||||||
|
name = "Gtk"
|
||||||
|
description = "The GTK toolkit"
|
||||||
|
docs_url = "https://docs.gtk.org/gtk4/"
|
||||||
|
|
||||||
|
[dependencies."GLib-2.0"]
|
||||||
|
name = "GLib"
|
||||||
|
description = "The base utility library"
|
||||||
|
docs_url = "https://docs.gtk.org/glib/"
|
||||||
|
|
||||||
|
[dependencies."GObject-2.0"]
|
||||||
|
name = "GObject"
|
||||||
|
description = "The base type system library"
|
||||||
|
docs_url = "https://docs.gtk.org/gobject/"
|
||||||
|
|
||||||
|
[source-location]
|
||||||
|
base_url = "https://gitlab.gnome.org/jpu/casilda/-/blob/@VERSION@/"
|
||||||
|
|
||||||
|
[extra]
|
||||||
|
urlmap_file = "urlmap.js"
|
||||||
32
docs/meson.build
Normal file
32
docs/meson.build
Normal file
|
|
@ -0,0 +1,32 @@
|
||||||
|
toml_conf = configuration_data()
|
||||||
|
toml_conf.set('VERSION', meson.project_version())
|
||||||
|
|
||||||
|
docs_dir = get_option('datadir') / 'doc'
|
||||||
|
|
||||||
|
casilda_toml = configure_file(
|
||||||
|
input: 'casilda.toml.in',
|
||||||
|
output: 'casilda.toml',
|
||||||
|
configuration: toml_conf,
|
||||||
|
install: true,
|
||||||
|
install_dir: docs_dir / 'casilda',
|
||||||
|
)
|
||||||
|
|
||||||
|
custom_target('casilda-doc',
|
||||||
|
input: [ casilda_toml, casilda_gir[0] ],
|
||||||
|
output: 'casilda',
|
||||||
|
command: [
|
||||||
|
gidocgen,
|
||||||
|
'generate',
|
||||||
|
['--quiet', '--no-namespace-dir'],
|
||||||
|
'--add-include-path=@0@'.format(meson.current_source_dir() / '../src'),
|
||||||
|
'--add-include-path=@0@'.format(meson.current_build_dir() / '../src'),
|
||||||
|
'--config=@INPUT0@',
|
||||||
|
'--output-dir=@OUTPUT@',
|
||||||
|
'--content-dir=@0@'.format(meson.current_source_dir()),
|
||||||
|
'@INPUT1@',
|
||||||
|
],
|
||||||
|
build_by_default: true,
|
||||||
|
install: true,
|
||||||
|
install_dir: docs_dir,
|
||||||
|
install_tag: 'doc',
|
||||||
|
)
|
||||||
10
docs/urlmap.js
Normal file
10
docs/urlmap.js
Normal file
|
|
@ -0,0 +1,10 @@
|
||||||
|
// SPDX-FileCopyrightText: 2025 Juan Pablo Ugarte
|
||||||
|
// SPDX-License-Identifier: LGPL-2.1-only
|
||||||
|
|
||||||
|
baseURLs = [
|
||||||
|
[ 'GLib', 'https://docs.gtk.org/glib/' ],
|
||||||
|
[ 'GObject', 'https://docs.gtk.org/gobject/' ],
|
||||||
|
[ 'Gio', 'https://docs.gtk.org/gio/' ],
|
||||||
|
[ 'Gdk', 'https://docs.gtk.org/gdk4/' ],
|
||||||
|
[ 'Gtk', 'https://docs.gtk.org/gtk4/' ],
|
||||||
|
]
|
||||||
|
|
@ -42,5 +42,10 @@ config_h.set_quoted('PACKAGE_VERSION', meson.project_version())
|
||||||
configure_file(output: 'config.h', configuration: config_h)
|
configure_file(output: 'config.h', configuration: config_h)
|
||||||
add_project_arguments(['-I' + meson.project_build_root()], language: 'c')
|
add_project_arguments(['-I' + meson.project_build_root()], language: 'c')
|
||||||
|
|
||||||
|
gidocgen = find_program('gi-docgen', required: get_option('documentation'), native: true)
|
||||||
|
|
||||||
subdir('src')
|
subdir('src')
|
||||||
subdir('examples')
|
subdir('examples')
|
||||||
|
if get_option('documentation')
|
||||||
|
subdir('docs')
|
||||||
|
endif
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,12 @@
|
||||||
option(
|
option(
|
||||||
'vapi',
|
'vapi',
|
||||||
|
|
||||||
type: 'boolean',
|
type: 'boolean',
|
||||||
value: false,
|
value: false,
|
||||||
description: 'Whether to build vapi files'
|
description: 'Whether to build vapi files'
|
||||||
)
|
)
|
||||||
|
option(
|
||||||
|
'documentation',
|
||||||
|
type: 'boolean',
|
||||||
|
value: false,
|
||||||
|
description : 'Build API reference documentation'
|
||||||
|
)
|
||||||
Loading…
Add table
Add a link
Reference in a new issue