Größe eines Konsolenfensters ermitteln (Linux)

Warf
Beiträge: 1908
Registriert: Di 23. Sep 2014, 17:46
OS, Lazarus, FPC: Win10 | Linux
CPU-Target: x86_64

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Warf »

CRT ist generell sehr seltsam, und mMn. unbenutzbar. Die macht schweinerein mit den Dateidescriptoren von STDIN und STDOUT, und ist äußerst limitert (z.b. in dem farbspektrum) dardurch das es den kleinsten gemeinsamen nenner (alte windows versionen) unterstützen muss

Ncurses ist zwar grundsätzlich super, ist aber verdammt kompliziert, Linux gebunden und benötigt die dependency libncurses.

Daher hab ich mich auch entschieden diese Lib zu schreiben, denn ich wollte was haben was cross plattform funktioniert (zumindest auf den großen platformen Mac, Windows und Linux) und nicht durch die limitationen der CRT unit (wie z.b. die restriktion zu winapi statt escape sequences z.b. zum input lesen) eingeschränkt wird.

Man sollte halt nicht um nur ein bisschen farbig text auszugeben das verhalten von STDIN und STDOUT für das gesammte programm beeinflussen (was die crt macht)

Zu der video unit, die hat mMn. das selbe problem wie ncurses mit der komplexität. Die unterstüzt super viele verschiedene terminal typen und platformen, dabei sind praktisch alle terminals denen man heutzutage über den weg läuft xterm kompatible terminals, windows cmd und powershell fenster, KDE Konsole, Gnome terminal, xterm (obvious), Terminal und iTerm für mac.

Man muss schon ein sehr ausgefallenes system haben um mal was anderes als xterm kompatibilität zu brauchen.
Daher hab ich diese lib geschrieben, um eine möglichst einfache lib zu haben die auf den wichtigsten systemen funktioniert

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Mathias »

CRT ist generell sehr seltsam, und mMn. unbenutzbar. Die macht schweinerein mit den Dateidescriptoren von STDIN und STDOUT, und ist äußerst limitert (z.b. in dem farbspektrum) dardurch das es den kleinsten gemeinsamen nenner (alte windows versionen) unterstützen muss
Der kleinste Nenner ist MS-DOS. Somit konnte man unter DOS farbigen Text ausgeben, ohne direkt auf das VRAM zuzugreifen.
KeyPressed und ReadKey waren auch noch sehr wichtige Funktionen welche erst mit der unit Crt funktionierten.
Ncurses ist zwar grundsätzlich super, ist aber verdammt kompliziert, Linux gebunden und benötigt die dependency libncurses.
So wie es mir ist, ist ncurses eine sehr alte Sache. Bei meinen ersten Gehversuchen mit Linux wurde ncurses schon für die Kernel Konfiguration verwendet. Das war in den Anfängen von Linux in den 90er.

So nebenbei das Design sieht beim aktuellen Kernel immer noch gleich aus, siehe Anhang.
Dateianhänge
Bildschirmfoto vom 2020-08-19 15-20-09.png
Bildschirmfoto vom 2020-08-19 15-20-09.png (100.02 KiB) 2179 mal betrachtet
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

PascalDragon
Beiträge: 825
Registriert: Mi 3. Jun 2020, 07:18
OS, Lazarus, FPC: L 2.0.8, FPC Trunk, OS Win/Linux
CPU-Target: Aarch64 bis Z80 ;)
Wohnort: München

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von PascalDragon »

Warf hat geschrieben:
Mi 19. Aug 2020, 14:54
Zu der video unit, die hat mMn. das selbe problem wie ncurses mit der komplexität. Die unterstüzt super viele verschiedene terminal typen und platformen, dabei sind praktisch alle terminals denen man heutzutage über den weg läuft xterm kompatible terminals, windows cmd und powershell fenster, KDE Konsole, Gnome terminal, xterm (obvious), Terminal und iTerm für mac.
Es ist eben das Ziel der Video Unit (und auch der Crt Unit, wobei die auch TP kompatibel ist) ein möglichst breites Spektrum an Plattformen abzudecken. Und da FPC eben auch Ziele wie MS-DOS, OS/2 oder Amiga unterstützt, die eben nicht xterm kompatibel sind, ist ein gewisses Maß an Komplexität (und auch Einschränkung) notwendig. Wobei der Backendteil eh plattformspezifisch über Includedateien abgehandelt wird.
Mathias hat geschrieben:
Mi 19. Aug 2020, 15:21
So nebenbei das Design sieht beim aktuellen Kernel immer noch gleich aus, siehe Anhang.
If it ain't broken, don't fix it. ;) Ncurses erfüllt für solche Konfigurationen genau seinen Zweck und funktioniert (und es wird ja auch noch aktiv gepflegt und entwickelt).
FPC Compiler Entwickler

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Winni »

Hi!

Ncurses ist noch des öfteren im Einsatz und wird auch gepflegt.

Z.b. nutzt das Suse-Konfigurations-Tool Yast seit Anfang der 90er Ncurses.
Inzwischen gibt es Yast2 mit graphischer Oberfläche, aber wenn
man einen headless Server einrichten möchte oder KDE (oder eine
andere graphische Oberfläche) wieder temporär nicht will, kann man mit
der alten Version herrlich defekte Pakete deinstallieren oder fehlende installieren.

Außerdem bin ich alter Tasten-Mann deutlich schneller mit Yast als mit
Klicki-Bunti Yast2.

Winni

Socke
Lazarusforum e. V.
Beiträge: 3158
Registriert: Di 22. Jul 2008, 19:27
OS, Lazarus, FPC: Lazarus: SVN; FPC: svn; Win 10/Linux/Raspbian/openSUSE
CPU-Target: 32bit x86 armhf
Wohnort: Köln
Kontaktdaten:

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Socke »

Winni hat geschrieben:
Do 20. Aug 2020, 13:02
Außerdem bin ich alter Tasten-Mann deutlich schneller mit Yast als mit
Klicki-Bunti Yast2.
Alleine die Startzeiten und Latenzen wenn der Server nicht um die Ecke steht!
MfG Socke
Ein Gedicht braucht keinen Reim//Ich pack’ hier trotzdem einen rein

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Mathias »

Außerdem bin ich alter Tasten-Mann deutlich schneller mit Yast als mit
Klicki-Bunti Yast2.
Habe ich da etwas verpasst, ich dachte das Yast1 in der Konsole gibt es nicht mehr ?
Zumindest dieser Klassiker nicht mehr: https://www.linuxjournal.com/article/4409
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Winni »

Hi!

Jo, da hast Du was verpasst.

root Konsole öffnen, yast eintippen und dann blickst Du auf dieses blaue ,Wunder ....
(im Anhang).

Grüße
Winni
yast.png
yast.png (39.49 KiB) 2118 mal betrachtet

Mathias
Beiträge: 6164
Registriert: Do 2. Jan 2014, 17:21
OS, Lazarus, FPC: Linux (die neusten Trunk)
CPU-Target: 64Bit
Wohnort: Schweiz

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Mathias »

Jo, da hast Du was verpasst.

root Konsole öffnen, yast eintippen und dann blickst Du auf dieses blaue ,Wunder ....
(im Anhang).
Ist das nicht der YaST2 ?
Steht in der Kopfzeile.
Mit Lazarus sehe ich grün
Mit Java und C/C++ sehe ich rot

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Winni »

Hi!

Das ist das dumme Terminal und nicht yast.

Da steht auch noch "joe ...." wenn ich vor zwei Stunden das letzte Mal mit joe gearbeitet habe.
Und andere Scherze.

Winni

Benutzeravatar
Winni
Beiträge: 1577
Registriert: Mo 2. Mär 2009, 16:45
OS, Lazarus, FPC: Laz2.2.2, fpc 3.2.2
CPU-Target: 64Bit
Wohnort: Fast Dänemark

Re: Größe eines Konsolenfensters ermitteln (Linux)

Beitrag von Winni »

@Matthias:

Damit keine Verirrung aufkommt:
yast ist zur Bedienung am Terminal
Yast2 ist für die graphische Oberfläche

Yast wird genauso weiterentwickelt wie Yast2.

Insofern ist das heutige Yast der legitime Nachfahre von 1992 (?).
Als Suse gestartet ist.
Und Suse wesentlich besser bei der Installation zu bedienen war als Slackware.

Winni

Antworten