Amber Linux Amber Linux

Amber Linux

A collection of applications, services, themes, and tutorials for sharing AI agents on top of Linux Mint Cinnamon on X11.

Applications

Native Linux Mint Cinnamon apps designed around the stable X11 desktop people actually use.

Services

DBus and system services that expose your machine's context — clipboard, notes, files — to local agents.

Themes

Cohesive desktop themes that respect Mint's slower, steadier visual language instead of fighting it.

Libraries

New Odin libraries and package surfaces for building modern native tools on an older, reliable Mint base.

Linux Mint Pace

Built For The Desktop That Stays Useful

Amber Linux celebrates Linux Mint's pace. Cinnamon on X11 is not old-fashioned here; it is the stable target that makes native tools worth finishing. Amberlin is the current proof: a new GTK4/Odin app using shared Amber libraries, packaged for the Mint desktop that already works.

Stable desktop target

Linux Mint Cinnamon on X11 gives Amber Linux a desktop contract that changes slowly enough to build against seriously.

Modern libraries, older base

Amberlin uses the newer Amber LIB and GTK4/Odin bindings while still fitting the older, dependable Mint desktop people already run.

Native over novelty

The point is not to chase every display-server or toolkit trend. The point is to make local AI tools feel native on a real Mint machine.

Programming Language

Odin — The Amber Linux Language

Amber Linux is written in Odin — a systems programming language created by Ginger Bill over the last ten years. Every tool in the stack — Kat800, KatKlips, Amberlin, Amber Phosphorus, and Amber LIB — is built with a predictable Amber Odin compiler package and shared Odin collections. Amberlin now uses those newer libraries on the same steady Linux Mint Cinnamon X11 base the rest of the stack targets. Together they make the case for Odin as the first choice when writing native Linux Mint applications: near-C performance, effortless C bindings, and code that is genuinely a pleasure to read and write.

Near-C performance

Odin compiles to native machine code with no garbage collector and no hidden allocations. Memory is managed through explicit allocators — arenas, pools, stacks — that you choose per-subsystem. Linux Mint applications written in Odin have the same runtime profile as their C equivalents, with none of the footguns.

Effortless C bindings

The foreign keyword makes calling any C library a matter of a single declaration. GTK4, libvte, GLib, DBus-GLib — the entire Linux desktop stack is immediately available. No wrapper generators, no FFI scaffolding, no C header translation scripts. Declare it, call it, ship it.

Beautiful syntax

Odin reads like the language you always wished C would become. Procedures, packages, distinct types, multiple return values, tagged unions, and a context system for allocators and logging — all expressed without boilerplate. Code that is easy to read is code that is easy to maintain. Odin takes that seriously.

Linux-native by design

Odin's core library includes POSIX bindings, a core:sys/linux package for direct syscalls, and first-class support for building shared libraries. Everything you need to write applications that integrate with the operating system rather than working around it.

odin A GTK4 window with a KatKlips clipboard binding — Amber Linux style
package amber_app

import "core:fmt"
import gtk "vendor:gtk/gtk4"

// C bindings: declare with the foreign keyword and call immediately.
// No scaffolding. No wrapper generation.
@(default_calling_convention = "c")
foreign gtk.lib {
    gtk_window_set_title :: proc(win: ^gtk.Window, title: cstring) ---
    gtk_window_present   :: proc(win: ^gtk.Window) ---
}

// Multiple return values instead of exceptions or error types.
// The caller decides what to do with the failure case.
read_clipboard :: proc() -> (text: string, ok: bool) {
    raw := katklips_get_current()   // DBus call via foreign binding
    if raw == nil { return "", false }
    return string(raw), true
}

activate :: proc(app: ^gtk.Application, _: rawptr) {
    win := gtk.application_window_new(app)
    gtk_window_set_title(win, "Amber App")

    if clip, ok := read_clipboard(); ok {
        fmt.printfln("Clipboard context loaded: %s", clip)
    }

    gtk_window_present(win)
}

main :: proc() {
    app := gtk.application_new("com.amberlinux.example", .FLAGS_NONE)
    defer gtk.g_object_unref(app)   // defer: cleanup on scope exit

    gtk.g_signal_connect(app, "activate", activate, nil)
    gtk.application_run(app, 0, nil)
}

Ginger Bill's ten-year achievement

Odin is the work of Ginger Bill (Bill Hall), who began the language around 2016 with a conviction that systems programmers deserved something better than C — not a language that hid what it did behind abstractions, but one that was honest, fast by default, and genuinely pleasant to write. No hidden allocations. No surprise garbage collection pauses. No boilerplate inherited from decades of backwards compatibility decisions nobody wanted to own.

Ten years later, Odin is a mature, production-ready language with a comprehensive core and vendor library, a compiler that produces excellent code, and a reputation in the game development and systems programming communities for being the language people actually enjoy coming back to. That is a rare thing. Most languages are tools you tolerate. Odin is a language you look forward to working in.

Amber Linux bets on Odin as the right foundation for native Linux Mint software. The vision is simple: Odin should be the first language a developer reaches for when they want to write a Linux Mint application — not because there is no choice, but because it is the best one.