Mathias hat geschrieben: Do 20. Aug 2020, 08:31
Im Grunde sind diess alles spielerreien, oder wisst ihr eine sinvolle Anwendung dafür ?
Ich persönlich mag ein TUI lieber als ein GUI (wo es angebracht ist, ein grafik editor als TUI is nicht das wahre).
Grund dafür: identisches aussehen und verhalten unter windows, linux und mac, benutzbar über SSH und wenn man wieder der DE unter linux abstürzt (man muss cinamon einfach mögen, sonst würden einem die ständigen abstürze noch den letzten nerv rauben).
Und ein ganz wichtiger punkt: Terminal editoren wie vim. grad wenn man einfach nur dateien schnell bearbeiten will, z.b. config files, ist man mit vim mit dem editieren meist schon fertig bevor die meisten GUI editoren überhaupt geladen sind
Ich dachte die "escape sequences" gingen schon immer, mit einer art ANSY.SYS ?
Hätte nie gedacht, das man bei eine M$ Konsole Bold und Unterline darstellen kann.
Es gibt für windows 10 jetzt sogar (im windows store) die "Terminal" anwendung, die eine art vernünftiger terminal emulator ist, mit richtig modernen features wie tabs und hotkeys.
ANSI.SYS ist halt ein kompatibilitätslayer, gibt was das angeht auch andere ähnliche programme die sowas können, aber mittlerweile kann windows den ganzen kram nativ, man muss nur eine option über SetConsoleMode setzen und dann verhält sich die windows konsole wie xterm.
Bei meiner lib ist der komplette kompatibilitätscode nur so 200 zeilen rum (also windows + linux code):
https://github.com/Warfley/LazTermUtils ... bility.pas
Gibt zwar noch ein paar sachen bei denen man auf Low-Level API calls zurückgreifen muss (z.b. fenstergröße ermitteln), aber ansonsten kann man mittlerweile ne ganze menge schweinerein mit dem kram machen.
Zu Linux zurück.
Sobald man mit "initscr;" in den ncurses Modus schaltet, arbeitet das Terminal ganz anders. Das sieht man, da nicht mal "Writeln" eine Ausgabe produziert.
Wen man Writeln nutzen will, gibt es eine Unit "nCrt", die ist in der Handhabung dann ähnlich wie "Crt".
Ja ab dem punkt übernimmt ncurses halt die filedeskriptoren.
Man kann auch andere lustige spielereien mit sowas machen, so kann man unter Linux z.b. die aktuell offenen terminal sessions über pseudo files in /dev ansteuern. Meine lib unterstützt das benutzen dieser Terminal pseudo files, und so hab ich ein programm geschrieben mit dem ich einen restart für meinen server machen kann, der dann allen offenen terminals (ssh sessions) einen countdown in die konsole printed.
Um das ganze besser zu machen hab ich schon überlegt einzubauen um die aktuelle cursor position zu holen (um das dann wo hin zu schreiben und danach den cursor wieder zu reseten), leider ist das nicht so stabil möglich, weshalb es aktuell einfach an der aktuellen cursor position das hinschreibt und danach den cursor wieder resetted wo er vorher war.
Damit kann man einige späße treiben
PS: auch genial:
https://github.com/keroserene/rickrollrc/