js-gnome-apps

Build GNOME apps in JavaScript with GJS, GTK4, Libadwaita, and Meson/Flatpak workflows.

Updated Aug 23, 2026
One-click install
npx skills add https://github.com/padparadscho/skills --skill js-gnome-apps
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: js-gnome-apps
Source: https://github.com/padparadscho/skills/tree/main/skills/js-gnome-apps
Command: npx skills add https://github.com/padparadscho/skills --skill js-gnome-apps

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides templates, patterns, and guidance to build native GNOME desktop applications using JavaScript (GJS) with GTK 4, Libadwaita, and the GNOME platform. It helps developers adopt UI design with XML or Blueprint, use GObject subclassing, configure Meson builds, and package apps with Flatpak, while leveraging GJS bindings for GLib/GIO/GTK4/Adw libraries.

Core Features & Use Cases

  • UI development with GTK 4 and Libadwaita, including UI XML templates and GResource integration.
  • GObject subclassing patterns and modern GJS best practices for robust, reusable widgets.
  • Build, package, and distribute GNOME apps using Meson and Flatpak, plus guidance for desktop files, schemas, and resources.

Quick Start

Scaffold a GNOME app in JavaScript: create a basic window, wire up actions, and build/run with Meson/Flatpak workflows.

Frequently Asked Questions about js-gnome-apps

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I build GNOME apps with JavaScript and GTK 4?

To build GNOME apps with JavaScript, use GJS bindings for GTK 4 and Libadwaita, configure Meson builds, and package with Flatpak. This provides templates and patterns for UI design, GObject subclassing, and app distribution.

What is the best way to create native GNOME desktop applications using GJS?

Creating native GNOME desktop applications with GJS involves using GObject subclassing for reusable widgets, designing UIs with XML or Blueprint, and integrating GResource. Meson and Flatpak handle the build and packaging workflows.

Can I use Libadwaita and Meson for JavaScript GNOME app development?

Yes, you can use Libadwaita and Meson for JavaScript GNOME app development. GJS provides the bindings for GLib, GIO, GTK4, and Adw libraries, while Meson manages the build system and Flatpak handles distribution.

How do I package and distribute a GJS application using Flatpak?

Package and distribute a GJS application by configuring Flatpak alongside Meson builds. This workflow includes setting up desktop files, schemas, and resources to ensure the GTK 4 application is properly bundled for GNOME.

How does GObject subclassing work when building GTK4 widgets in JavaScript?

GObject subclassing in JavaScript allows you to build robust, reusable GTK4 widgets by leveraging GJS bindings. It provides modern best practices and patterns for defining custom widget behavior and integrating them with Libadwaita.

Do I need Blueprint or XML for UI design in GNOME JavaScript apps?

You can use either Blueprint or XML for UI design in GNOME JavaScript apps. Both methods integrate with GResource to define GTK 4 and Libadwaita interfaces, allowing you to structure native GNOME application windows and actions efficiently.