Note
This is a minimal GNOME 50 application template using TypeScript, GJS, GTK 4, and libadwaita.
Fast-iterating, easy-to-read, and developer-friendly, it helps you bootstrap new GNOME 50 projects with modern tooling and technology.
Hello World features intro:
- TypeScript-first β Source code written in TypeScript, providing type safety and modern language features.
- GNOME 50 Ready β Integrates with GJS, GTK 4, libadwaita and follows up-to-date GNOME 50 application architecture.
- Bundled UI β Uses GResource for UI templates and assets.
- Hot-reloading Dev Setup β Rapid development with auto-rebuild and restart on file changes.
- Easy Distribution β Meson integration for simple install, bundle, and packaging.
You can add Hello World by preparing your system and running:
- Bun
- GJS (GNOME JavaScript runtime)
- Meson and Ninja
- GTK 4 and libadwaita development packages
On Fedora:
sudo dnf install gjs gtk4 libadwaita meson ninja-buildbun installbun run dev_dev compiles TypeScript, rebuilds GResource bundles, launches the app, and restarts it whenever src/\*\*/_.tsorsrc/\*_/_.ui files change.*
bun run runbun run setup
bun run install-appThis will install to ~/.local. Launch with org.gnome.HelloWorld or from the application menu.
src/β TypeScript sources, UI templates, and GResource definitionsdist/β compiled JavaScript output (viatsc)build/β development GResource bundles (generated)data/β desktop entry, metadata, icons, GSettings schemasscripts/β development launcher and resource build helpers
tsccompilessrc/*.tstodist/*.jsglib-compile-resourcesbundles JS and UI intobuild/*.gresourcescripts/launcher.mjsregisters the bundles and importsmain.jsfrom the GResource- On file change, steps 1β3 rerun and the app restarts
Production installs use Meson, which compiles the same GResource XML files and installs the org.gnome.HelloWorld launcher.
Here's a working and expected screenshot of Hello World
| Preview |
|---|
![]() |
Tip
We welcome contributions to improve Hello World! If you have suggestions, bug fixes, or new feature ideas, follow these steps:
-
Fork the Repository
Click the Fork button at the top-right of the repo page. -
Clone Your Fork
Clone the repo locally:git clone https://github.com/ArnavK-09/gnome-typescript-app-template.git
-
Create a Branch
Create a new branch for your changes:git checkout -b your-feature-branch
-
Make Changes
Implement your changes (bug fixes, features, etc.). -
Commit and Push
Commit your changes and push the branch:git commit -m "feat(scope): description" git push origin your-feature-branch -
Open a Pull Request
Open a PR with a detailed description of your changes. -
Collaborate and Merge
The maintainers will review your PR, request changes if needed, and merge it once approved.
Found a bug or need help? Please create an issue on the GitHub repository with a detailed description.
![]() |
Hello World is licensed under the Unlicense License. See the LICENSE file for more details.
π If you find this project helpful, please give it a star on GitHub! π

