AppCenter icon

Publish in AppCenterBETA

An open, pay-what-you-want app store for indie developers

Log In with GitHub

Version 0.3.0

Documentation

Get a basic app running, built, and ready for distribution with our Getting Started guide

Design

Learn about the design principles that make up apps on elementary OS.

Reference

Get more info about code style, reporting issues, and proposing design changes


Build for

Loki brings a new API for Wingpanel, Launcher API support in Slingshot, new widgets like AlertView, new CSS style classes and icons, and tons more. Build feature-full apps easier than ever with Gtk 3.18 & Vala 0.32, running atop Linux 4.4

Contractor

A desktop-wide extension service that allows apps to use functionality exposed by other apps — without prior coordination.

HIG for Contractor

Reference for Contractor

Granite

The foundation library for elementary OS apps. Provides powerful widgets like DynamicNotebook, utilities, convenience functions, and more.

Reference for Granite

GDA

Simple, flexible database management. Supports remote and on-disk SQL databases, including SQLite. Comes with graphical and in-console SQL data browsers, a metadata extractor enabling object auto-discovery, and more.

Reference for GDA

Soup

An HTTP client/server library with synchronous and async APIs. Comes with SSL/TLS, cookies, caching, WebSockets, proxy and tunneling support, and more. Goes great with JSON-GLib.

Reference for Soup

Reference for JSON-GLib

Vala. A Modern, Fast, Open Source Language.

Familiar to anyone who's seen C#, but maintains API/ABI compatibility with C

Low memory requirements, native execution, and purpose-built for GObject

Signals, properties, generics, lambdas, assisted memory management, exception handling, type inference, async/yield & more

public class MyApp : Gtk.Application {

    public MyApp () {
        Object (application_id: "com.github.myteam.myapp",
        flags: ApplicationFlags.FLAGS_NONE);
    }

    protected override void activate () {
        var window = new Gtk.ApplicationWindow (this);
        window.title = "MyApp";
        window.set_default_size (1024, 768);
        window.show_all ();
    }

    public static int main (string[] args) {
        var app = new MyApp ();
        return app.run (args);
    }
}