Skip to content

Latest commit

Β 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸͺ› Hello World πŸͺ›

A minimal TypeScript GNOME 50 app template

hero

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.

🌟 Features

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.

πŸ’» Installation

You can add Hello World by preparing your system and running:

Prerequisites
  • Bun
  • GJS (GNOME JavaScript runtime)
  • Meson and Ninja
  • GTK 4 and libadwaita development packages

On Fedora:

sudo dnf install gjs gtk4 libadwaita meson ninja-build
Setup
bun install

πŸ—οΈ Development

bun run dev

_dev compiles TypeScript, rebuilds GResource bundles, launches the app, and restarts it whenever src/\*\*/_.tsorsrc/\*_/_.ui files change.*

πŸš€ Build and run (manual / no watch)

bun run run

πŸ“¦ Install locally

bun run setup
bun run install-app

This will install to ~/.local. Launch with org.gnome.HelloWorld or from the application menu.

πŸ—‚οΈ Project layout

  • src/ β€” TypeScript sources, UI templates, and GResource definitions
  • dist/ β€” compiled JavaScript output (via tsc)
  • build/ β€” development GResource bundles (generated)
  • data/ β€” desktop entry, metadata, icons, GSettings schemas
  • scripts/ β€” development launcher and resource build helpers

πŸ› οΈ How dev mode works

  1. tsc compiles src/*.ts to dist/*.js
  2. glib-compile-resources bundles JS and UI into build/*.gresource
  3. scripts/launcher.mjs registers the bundles and imports main.js from the GResource
  4. 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.

πŸ“· Screenshots

Here's a working and expected screenshot of Hello World

Preview
Demo

πŸ’» Contributing

Tip

We welcome contributions to improve Hello World! If you have suggestions, bug fixes, or new feature ideas, follow these steps:

  1. Fork the Repository
    Click the Fork button at the top-right of the repo page.

  2. Clone Your Fork
    Clone the repo locally:

    git clone https://github.com/ArnavK-09/gnome-typescript-app-template.git
  3. Create a Branch
    Create a new branch for your changes:

    git checkout -b your-feature-branch
  4. Make Changes
    Implement your changes (bug fixes, features, etc.).

  5. Commit and Push
    Commit your changes and push the branch:

    git commit -m "feat(scope): description"
    git push origin your-feature-branch
  6. Open a Pull Request
    Open a PR with a detailed description of your changes.

  7. Collaborate and Merge
    The maintainers will review your PR, request changes if needed, and merge it once approved.

πŸ™‹β€β™‚οΈ Issues

Found a bug or need help? Please create an issue on the GitHub repository with a detailed description.

πŸ‘€ Author

Arnav K

πŸ“„ License

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! 🌟

About

πŸͺ› A minimal Typescript GNOME 50 app template...

Topics

Resources

Stars

0 stars

Watchers

0 watching

Forks

Contributors

Languages