#!/usr/bin/env -S GI_TYPELIB_PATH=${PWD}/build/gtk:${GI_TYPELIB_PATH} LD_PRELOAD=${LD_PRELOAD}:${PWD}/build/gtk/libgtk-4.so gjs imports.gi.versions['Gtk'] = '4.0'; const GObject = imports.gi.GObject; const Gtk = imports.gi.Gtk; const DemoWidget = GObject.registerClass({ GTypeName: 'DemoWidget', }, class DemoWidget extends Gtk.Widget { _init(params = {}) { super._init(params); let layout_manager = new Gtk.GridLayout (); this.set_layout_manager (layout_manager); this.label1 = new Gtk.Label({ label: "Red", hexpand: true, vexpand: true }); this.label1.set_parent (this); let child1 = layout_manager.get_layout_child (this.label1); child1.set_row (0); child1.set_column (0); this.label2 = new Gtk.Label({ label: "Green", hexpand: true, vexpand: true }); this.label2.set_parent (this); let child2 = layout_manager.get_layout_child (this.label2); child2.set_row (0); child2.set_column (1); } }); // Create a new application let app = new Gtk.Application({ application_id: 'org.gtk.exampleapp' }); // When the application is launched… app.connect('activate', () => { // … create a new window … let win = new Gtk.ApplicationWindow({ application: app }); // … with a button in it … let widget = new DemoWidget(); win.set_child(widget); win.present(); }); // Run the application app.run([]);