---
title: "Présentation — Docs zenit Zig UI"
description: "Créez en Zig des interfaces de bureau macOS réellement natives. zenit réunit fenêtres, rendu GPU, texte, méthodes de saisie et accessibilité dans un modèle…"
url: https://zenit.z.express/fr/docs
language: fr
alternate_en: https://zenit.z.express/docs.md
alternate_zh: https://zenit.z.express/zh/docs.md
alternate_es: https://zenit.z.express/es/docs.md
alternate_ja: https://zenit.z.express/ja/docs.md
alternate_ko: https://zenit.z.express/ko/docs.md
alternate_de: https://zenit.z.express/de/docs.md
project: zenit v0.1.0-alpha (Zig 0.15.2, macOS)
source: https://github.com/version-next/zenit
---

# Le manuel zenit

Créez en Zig des interfaces de bureau macOS réellement natives. zenit réunit fenêtres, rendu GPU, texte, méthodes de saisie et accessibilité dans un modèle d'UI clair ; ce manuel vous mène de votre première fenêtre à une application de production maintenable.

[Démarrer en 5 minutes](https://zenit.z.express/fr/docs/guide/getting-started)

$zig build run

**0.15.2**Version de Zig

**Metal**Backend GPU actuel

**2 tiers**API publique : ui.X et ui.<group>.X

`src/main.zig`

```zig
const std = @import("std");
const ui = @import("ui");
const App = @import("zenit_app").App;

fn mountUi(cx: *ui.Cx, _: *ui.Scope) anyerror!*ui.Node {
    return ui.text(cx, "Hello, zenit!", .{
        .font_size = cx.tokens.font_size.xxxl,
        .color = cx.tokens.color.fg_primary,
    });
}

pub fn main() !void {
    var gpa = std.heap.GeneralPurposeAllocator(.{}){};
    defer _ = gpa.deinit();

    const app = try App.init(gpa.allocator(), .{
        .window = .{ .title = "Hello" },
    });
    defer app.deinit();
    try app.runWith(mountUi);
}
```

Vous développez avec Claude Code ou un autre agent ? Installez d’abord la zenit UI dev Skill.

Elle regroupe ce manuel, la table de choix des composants et les pièges de projets réels en instructions que votre agent charge à la demande, pour que le code qu’il écrit suive les conventions de zenit.

[Télécharger la Skill.zip · 54 KB](https://zenit.z.express/downloads/zenit-ui-dev.zip)[Guide d’installation](https://zenit.z.express/fr/docs/guide/ai-skill)

## Parcours d'apprentissage

Parcourez-le une fois, dans l'ordre — environ 45 minutes — et vous aurez tout le modèle mental pour créer des applications zenit en autonomie.

[01Lancer votre première fenêtreBranchez la dépendance, montez l'UI, compilez et lancez.10 min →](https://zenit.z.express/fr/docs/guide/getting-started)[02Nœuds et mise en pageComposez avec box, stack et text.12 min →](https://zenit.z.express/fr/docs/guide/ui-tree)[03UI pilotée par les donnéesSignal, Memo et Effect ensemble.12 min →](https://zenit.z.express/fr/docs/guide/reactivity)[04Un système de stylesTokens, styles nommés et Recipes.11 min →](https://zenit.z.express/fr/docs/guide/styling)

## L'architecture que vous utilisez

Les applications ne dépendent que de la couche publique stable ; zenit gère la plateforme et le rendu.

LAYERS

`zenit.attach(dep, exe)` ajoute exactement deux imports de module à votre exécutable — `ui` et `zenit_app` — puis compile les ponts natifs et lie les frameworks système. Les modules internes ne figurent pas du tout dans votre graphe de build : ce n’est pas « évitez », c’est « impossible ».

## Plus qu'un ensemble d'API

Ces trois capacités traversent le runtime, la pile texte et l'outillage — chacune appuyée par une démo exécutable et des preuves en fenêtre réelle.

[DATA FLOWMises à jour Signal précisesPas de reconstruction d'arbre virtuel, pas de diff de tout l'arbre : une dépendance va droit au nœud abonné.Voir l'animation →](https://zenit.z.express/fr/docs/guide/reactivity#signal-not-diffing)[TEXT ENGINEUnicode 17 + IMEBidi UAX #9, limites de graphèmes UAX #29 et un chemin de saisie preedit / commit de bout en bout.Voir les données de conformité →](https://zenit.z.express/fr/docs/guide/text-engine)[TOOLINGE2E en fenêtre réelle, observableRecherche sémantique de nœuds, curseur virtuel, captures PNG Retina et MP4 enregistrés directement depuis le drawable.Voir les enregistrements →](https://zenit.z.express/fr/docs/advanced/e2e)

## Trois principes

Suivez-les et votre code restera clair pendant que zenit évolue encore rapidement.

**N'importer que depuis la couche publique**

Utilisez `ui.*`, `ui.<group>.*` et `zenit_app.App` — n’allez jamais piocher dans les répertoires internes.

**Laisser les données piloter l'UI**

L'état persistant vit dans des Signals ou un état lié ; dérivez avec Memo, gérez les effets de bord avec Effect.

**Tokens d'abord**

Couleurs, typographie, espacements et rayons viennent du thème ; si vous devez sortir de l’échelle, dites-le avec `ui.arb`.
