Que fait ghostling-libghostty-terminal ?
Construisez des émulateurs de terminal minimalistes en utilisant l'API C libghostty-vt avec Raylib pour le fenêtrage et le rendu.
Aperçu
Ce skill vous permet de développer rapidement des émulateurs de terminal légers en combinant la bibliothèque Ghostty VT (Virtual Terminal) avec Raylib. Ghostty gère l'émulation complète du terminal (gestion des séquences d'échappement, modes VT100/ECMAScript, etc.), tandis que Raylib s'occupe du fenêtrage, du rendu des polices et de la gestion des entrées.
Prérequis
- Compilateur C (GCC, Clang ou MSVC)
- libghostty installé (en fonction de votre système)
- Raylib version 4.5 ou ultérieure
Installation
Sur macOS (Homebrew)
brew install ghostty
brew install raylib
Sur Linux (Debian/Ubuntu)
sudo apt install libghostty-dev
sudo apt install libraylib-dev
Sur Windows (vcpkg)
vcpkg install ghostty
vcpkg install raylib
Utilisation
- Créez un fichier source
main.c:
#include "ghostty/vt.h"
#include "raylib.h"
int main(void) {
// Initialisation du terminal Ghostty
ghostty_vt_t *vt = ghostty_vt_new();
if (!vt) return -1;
// Initialisation de Raylib (fenêtre de 800x600)
InitWindow(800, 600, "Terminal Minimal");
SetTargetFPS(60);
// Boucle principale
while (!WindowShouldClose()) {
// Gestion des entrées clavier/souris
if (IsKeyPressed(KEY_A)) {
ghostty_vt_input(vt, 'A');
}
// Rendu
BeginDrawing();
ClearBackground(BLACK);
// Dessiner le contenu du terminal
const char *screen = ghostty_vt_screen(vt);
DrawText(screen, 10, 10, 20, WHITE);
EndDrawing();
}
// Nettoyage
ghostty_vt_free(vt);
CloseWindow();
return 0;
}
- Compilez avec les flags appropriés :
gcc -o terminal main.c -lghostty -lraylib -lm
- Exécutez :
./terminal
API principale
ghostty_vt_t *ghostty_vt_new(void)
Crée une nouvelle instance VT Ghostty.
void ghostty_vt_free(ghostty_vt_t *vt)
Libère l'instance VT.
void ghostty_vt_input(ghostty_vt_t *vt, char c)
Envoie un caractère au terminal.
const char *ghostty_vt_screen(ghostty_vt_t *vt)
Retourne le contenu actuel de l'écran du terminal sous forme de chaîne.
Exemples avancés
Pour des exemples plus complets (gestion des couleurs, redimensionnement, défilement), consultez le dossier examples/ de ce dépôt.
Ressources
Licence
Ce projet est distribué sous la licence MIT. Voir le fichier LICENSE pour plus de détails.