This branch is 5 commits behind brl/citadel-realms:master
dma 522441e66b colorSchemes: construct ListStores with an explicit item_type
fix for another gnome 51 breaking api change: Gio.ListStore was
constructed with a bare GObject class as its sole argument. that was
never the supported form: old GJS silently built a GObject-typed store
instead, which happened to work because everything appended is a
GObject. the GJS that ships with gnome-shell 51 (1.90, mozjs 128 -> 140,
citadel commit 7241305, Oct 7) now treats a non-object constructor
argument as a property bag, and every GObject class exposes an
enumerable inherited "implements" static, so construction throws "No
property implements on GListStore" and the realms window fails to build.
Pass { item_type } instead, the documented form that works on every GJS
version.
2026-10-16 01:31:15 -04:00
2024-11-12 17:26:26 -05:00
2024-11-12 17:26:26 -05:00
2024-11-12 17:26:26 -05:00
2024-11-12 17:26:26 -05:00
2024-11-12 17:26:26 -05:00
2024-11-12 17:26:26 -05:00
2024-11-12 17:26:26 -05:00

Development

There are some dependencies that you might need.

$ sudo apt install npm meson gjs gettext libgtk-4-dev libadwaita-1-dev

Clone the repository with --recursive to also check out a submodule containing GNOME typescript definitions.

$ git clone --recursive https://git.subgraph.com/brl/citadel-realms.git

Run npm install to install the typescript compiler.

$ cd citadel-realms
$ npm install

Building

You don't need to run these commands individually since the Makefile described in the next section already does all of this.

Set up a meson build with a --prefix so that you can install to somewhere convenient.

$ meson setup --prefix=${PWD}/install build

After making any changes, you need to run the following commands to produce a build to test.

The typescript -> javascript step must be run manually rather than as part of the meson build because the javascript files are also committed to the repository.

This is to avoid doing this during the Citadel build which would require first building nodejs.

$ npm run build
$ meson compile -C build
$ meson install -C build

Makefile

A Makefile is included that is meant to be used only for development.

Besides running the meson build it will also:

  1. Configure Meson to install application to $PWD/install
  2. Compile all blueprint files (.blp) to XML files
  3. Compile all typescript files to javascript.

Testing changes

The Makefile will build the realms UI and install it in a subdirectory of this repository ($PWD/install). To run the build installed in this directory you will first need to create a symlink at /home/user pointing to the home directory of the realm you are using for development:

$ sudo ln -s /realms/realm-main/home/ /home/user

$ ls -l /home/user
lrwxrwxrwx 1 root root 23 Aug 25 10:49 /home/user -> /realms/realm-main/home

Now you can run the application from either the symlink path or from the direct path to realm home directory.

$ /home/user/citadel-realms/install/bin/com.subgraph.citadel.Realms

This works too:

$ /realms/realm-main/home/citadel-realms/install/bin/com.subgraph.citadel.Realms
S
Description
No description provided
Readme
266 KiB
0 Stars 1 Watchers 0 Forks
Languages
TypeScript 51.2%
JavaScript 48.2%
Meson 0.4%
Makefile 0.2%