Welcome to GNOME – Programming
Contribute to existing apps
Below, you can find instructions on how to build and work on specific apps. If you are not sure where to contribute, consider choosing an app that you use yourself or select a programming language with which you are already familiar. Try to solve a problem or implement a feature that is important to you or where you feel an inner motivation.
Random suggestions out of available apps.
No apps matching the given search found.
Creating a new app
Creating your own app will not only allow you to implement your own ideas at will. It is also an opportunity to understand how all the pieces in the GNOME ecosystem fit together.
It is possible to write apps for GNOME in several different programming languages. You can check our list of the
most frequently used languages
You can publish your app on
Flathub
to make it easily available to many people. If your app is polished and ready for everyday usage, you can consider submitting it to
GNOME Circle
. The Circle membership makes your project eligible for support through the GNOME Foundation.
Programming Languages
Explore which languages can be used to write GNOME apps
Publish on Flathub
Learn how you can publish your app on Flathub
GNOME GitLab
Use GNOME’s infrastructure to host your project
#newcomers:gnome.org
The “GNOME Newcomers” chat can help you get started
Programming languages
Below, you can find an overview of the most popular languages for writing GNOME apps.
To get started with developing GNOME apps with C we recommend the
Beginners Tutorial
that also covers the C language. You can find other important resources below.
GTK 4 Docs
GTK is the underlying library for the user interface
Libadwaita Docs
Building blocks for modern GNOME apps
More API References
More documentation for GObject libraries
We recommend the
GJS Developer Guide
to get started with JavaScript in GNOME. You can find other important resources below.
JavaScript Bindings Reference
How to use GTK, the underlying library for user interfaces, and other libraries
#javascript:gnome.org
Matrix channel for all questions related to JavaScript in GNOME
If you are familiar with the basics of the
Python language
, we recommend the
Beginners Tutorial
which also covers the Python language. You can find other important resources below.
GTK 4 docs
GTK is the underlying library for the user interface
Libadwaita docs
Building blocks for modern GNOME apps
#python:gnome.org
Matrix channel for all questions related to Python in GNOME
If you are familiar with the basics of the
Rust language
, we recommend the online book
GUI development with Rust and GTK 4
. This book explains how Rust can be used to create apps in the GNOME ecosystem. You can find other important resources below.
Rust GTK 4 docs
GTK is the underlying library for the user interface
Rust libadwaita docs
Building blocks for modern GNOME apps
Rust GTK Core docs
GTK is built on libraries like GLib and GIO
#rust:gnome.org
The “Rust ❤️ GNOME” Matrix channel: All about using Rust in GNOME
For getting started with the
Vala language
, we recommend the
Vala Tutorial
or the
Beginners Tutorial
, which also covers Vala. You can find other important resources below.
Official Vala Documentation
All information about the Vala programming language for users, its syntax, tooling, and many code examples
Vala Bindings API References
How to use GTK, the underlying library for user interfaces, and other libraries
Development Platform
Main development repository of the Vala language and compiler, issue tracker and contribution platform
#vala:gnome.org
Matrix channel for all Vala related questions
Useful apps
The following apps are worth trying out to get started with development within GNOME. For more apps you can check the
Development Tools section
on
Apps for GNOME
Adwaita Demo
Builder
Workbench
US