charm/bubbletea Go : guide complet avec exemples

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

charm/bubbletea pour Go : guide complet avec exemples

1. Qu'est-ce que Bubble Tea et pourquoi l'utiliser ?

Bubble Tea est un framework puissant, élégant et productif pour créer des interfaces utilisateur terminal (TUI) en langage Go. Inspiré par l'architecture de programmation fonctionnelle Elm, il propose un modèle simple mais incroyablement flexible basé sur trois concepts clés : Model (état), Update (fonction de mise à jour) et View (fonction d'affichage).

Pourquoi utiliser Bubble Tea ? Si vous en avez assez des utilitaires CLI monotones et que vous souhaitez créer des applications interactives, esthétiques et réactives directement dans le terminal, cet outil est fait pour vous. Bubble Tea permet de construire tout, des simples formulaires de saisie et listes de sélection aux gestionnaires de fichiers complexes, lecteurs musicaux, jeux et tableaux de bord. Il gère tout le travail bas niveau avec le terminal (traitement des signaux, gestion du curseur, rendu), permettant au développeur de se concentrer sur la logique applicative.

La bibliothèque fait partie de l'écosystème Charm, qui inclut également d'autres outils utiles comme Bubbles (un ensemble de composants prêts à l'emploi tels que des champs de texte, des spinners, des barres de progression) et Lip Gloss (une bibliothèque de stylisation de sortie). Ensemble, ils forment un ensemble complet pour créer des applications TUI professionnelles.

2. Installation

L'installation de la bibliothèque se fait de manière standard pour Go :

go get github.com/charmbracelet/bubbletea@latest

Pour utiliser les composants prêts à l'emploi (widgets), il est également recommandé d'installer le paquet bubbles :

go get github.com/charmbracelet/bubbles@latest

Et pour la stylisation :

go get github.com/charmbracelet/lipgloss@latest

3. Démarrage rapide — exemple minimal fonctionnel

Créez un fichier main.go et collez le code suivant. Cette application affiche le nombre de touches pressées. Appuyez sur Ctrl+C pour quitter.

package main

import (
    "fmt"
    "os"
    tea "github.com/charmbracelet/bubbletea"
)

// 1. Model — stocke l'état de l'application.
type model struct {
    count int
}

// 2. Init — retourne la commande initiale (généralement nil).
func (m model) Init() tea.Cmd {
    return nil
}

// 3. Update — traite les messages entrants et retourne un nouveau modèle et une commande.
func (m model) Update(msg tea.Msg) (tea.Model, tea.Cmd) {
    switch msg := msg.(type) {
    case tea.KeyMsg:
        switch msg.String() {
        case "ctrl+c":
            return m, tea.Quit // Commande pour quitter
        default:
            m.count++
            return m, nil
        }
    }
    return m, nil
}

// 4. View — retourne la chaîne qui sera affichée dans le terminal.
func (m model) View() string {
    return fmt.Sprintf("Touches pressées : %d\n\nAppuyez sur n'importe quelle touche. Pour quitter, appuyez sur Ctrl+C.", m.count)
}

func main() {
    p := tea.NewProgram(model{})
    if _, err := p.Run(); err != nil {
        fmt.Printf("Erreur : %v", err)
        os.Exit(1)
    }
}

Lancez l'application :

go run main.go

4. Méthodes et types principaux

Dans Bubble Tea, les éléments clés sont des interfaces et des fonctions, et non des classes. Voici les 8 éléments essentiels.

4.1. tea.NewProgram

Signature : func NewProgram(

Recommendations