Ncurses und CDK
Hey Coder! 🖥️ Textbasierte Interfaces rocken – so baust du sie mit Ncurses, CDK & Urwid
Du hast Bock auf retro-modernes Coding? Textbasierte Benutzeroberflächen (TUIs) sind nicht nur nostalgisch cool, sondern auch superpraktisch für Tools, die im Terminal laufen. Kein Browser-Overhead, keine GUI-Bibliotheken – nur purer Code, der deine Users begeistert. Hier zeig ich dir, wie du mit Ncurses, CDK (in C) und Urwid (in Python) richtig ablieferst. Let’s go!
Warum TUIs?
Stell dir vor: Dein Tool läuft auf jedem Linux-Server, braucht kaum Ressourcen und sieht trotzdem clean aus – mit Menüs, Farben und sogar Mausunterstützung. TUIs sind wie die Ninjas der Benutzeroberflächen: schnell, effizient und verdammt stylisch.
Step 1: Installation – Ncurses & CDK auf Debian
Auf Debian-basierten Systemen geht’s fix:
# Ncurses installieren (Grundlage für alles)
sudo apt-get update
sudo apt-get install libncurses5-dev libncursesw5-dev
# CDK draufpacken (Widgets wie Menüs & Textfelder)
sudo apt-get install libcdk5-dev libcdk5-doc
Checke mit pkg-config --modversion ncurses
und pkg-config --modversion cdk
, ob alles sitzt. Wenn Versionen wie 6.4 (Ncurses) oder 5.0.20240619 (CDK) erscheinen – alles gut!
Step 2: Dein erstes TUI-Programm in C
CDK liefert Widgets, die an den alten SAA-Standard erinnern – klar, benutzerfreundlich und mit Maussupport. Hier ein Mini-Beispiel für ein Menü + Textfeld:
#include <cdk.h>
int main() {
// Curses initialisieren
WINDOW *cursesWin = initscr();
CDKSCREEN *cdkscreen = initCDKScreen(cursesWin);
initCDKColor();
// Menü erstellen
const char *menulist[3][4] = {
{"Datei", "Öffnen", "Speichern", "Beenden"},
{"Bearbeiten", "Ausschneiden", "Kopieren", "Einfügen"},
{"Hilfe", "Über", "", ""}
};
CDKMENU *menu = newCDKMenu(cdkscreen, CENTER, TOP, 0, 0, "Hauptmenü");
// Textfeld hinzufügen
CDKENTRY *entry = newCDKEntry(cdkscreen, CENTER, CENTER, "Eingabe:", NULL);
// Navigation zwischen Menü und Textfeld
int focus = 0;
while (1) {
if (focus == 0) {
activateCDKMenu(menu, NULL); // Menü steuern
focus = 1; // Bei Tab zum Textfeld
} else {
activateCDKEntry(entry, NULL); // Text eingeben
focus = 0; // Zurück zum Menü
}
}
// Aufräumen nicht vergessen!
destroyCDKEntry(entry);
destroyCDKMenu(menu);
endCDK();
return 0;
}
Kompilieren und ausführen:
gcc -o tui_programm tui_programm.c -lcdk -lncurses
./tui_programm
Features:
- Maus- und Tastaturnavigation
- Farben, Untermenüs, Textfelder
- SAA-ähnliches Design 💫
Step 3: Python? Klar, aber mit Urwid!
Die alte pyCDK-Binding ist verstaubt 😬. Für Python nutzen wir deshalb Urwid – modern, aktiv und mega-flexibel.
Installation von Urwid: Es wird empfohlen als normaler User (nicht als root), eine virtuelle Umgebung zu verwenden, um Abhängigkeitskonflikte zu vermeiden:
python3 -m venv venv
source venv/bin/activate
pip install urwid # sudo apt install python3-urwid python-urwid-doc
import urwid
def menu_click(button):
printf("Klick auf {button.get_label()}!")
# Menü erstellen
menu = urwid.Pile([
urwid.Button("Öffnen", on_press=menu_click),
urwid.Button("Speichern", on_press=menu_click),
urwid.Button("Beenden", on_press=urwid.ExitMainLoop),
])
# Textfeld hinzufügen
edit = urwid.Edit("Eingabe: ")
# Alles kombinieren
layout = urwid.Filler(urwid.Pile([menu, edit]))
urwid.MainLoop(layout, palette=[("reversed", "black", "white")]).run()
Features:
- Tab-Navigation zwischen Widgets
- Einfache Event-Handling mit Lambdas
- Custom Styles via Palette 🎨
Warum SAA-Standard?
Der SAA-Standard war in den 80ern der Burner für konsistente Oberflächen. CDK und Urwid holen diesen Spirit ins Heute:
- Klare Menüs mit Pfeiltasten/Maus
- Textfelder, die sich wie GUI-Elemente anfühlen
- Farben & Hervorhebungen für bessere UX
Einschränkungen? Klar, kein Tool ist perfekt
- C/CDK: Du musst die Navigation zwischen Widgets selbst coden.
- Python/Urwid: Kein 1:1-SAA-Look – aber nah dran.
- Maus-Support: Funktioniert, aber bei komplexen Layouts wird’s tricky.
Empfehlungen für deine Projekte
- C + CDK: Wenn du performante, native TUIs willst.
- Python + Urwid: Für schnelle Prototypen oder wenn du Python liebst.
- Docs: Schau bei Urwid.org und der CDK-Doku vorbei.
Fazit: Retro-Charm meets Modern Coding
TUIs sind kein alter Hut – sie sind effizient, ressourcensparend und machen einfach Spaß! Mit CDK (C) oder Urwid (Python) baust du Oberflächen, die deine Users lieben werden. Also: Terminal auf, Code schreiben und die Console rocken lassen! 🚀
Über den Autor
Du willst mehr über TUIs, Linux-Tools oder Coding-Hacks erfahren? Folge recode.at für Tutorials, News und Community-Events! 👨💻
Log dich kostenlos ein und lies den Artikel weiter im Memberbereich: