[Tustep-Liste] TUSTEP & Linux 1: Anpassen der Fenstergröße

Thomas Meyer thomhilmeyer at vr-web.de
Do Nov 4 13:48:47 CET 2004


Liebe Tustep-Liste,

gemäß den Ergebnissen der Diskussion auf der ITUG-Tagung in Tübingen, möchte 
ich hiermit eine kleine mail-Serie beginnen, die eine Reihe kleiner 
praktikabler Pröblemlösungen besonders für die Linux-Nutzer innerhalb der 
Tustep-"Gemeinde" bespricht. Möglicherweise schließen sich ja andere an, und 
es entsteht eine kleine Makrodatei für alle "GNUstepper"?

Herzliche Grüße, Ihr / Euer
Thomas Meyer.


(1.) Problem

Anders als unter Windoofs lässt sich in Linux die Größe des Konsolenfensters 
bequem mit der Maus einstellen. Andererseits: Vielleicht arbeitet man im 
Textmodus (Strg + Alt + F1...) und möchte nun natürlich die ganze 
Bildschirmgröße für sein Tustep-Window nutzen. Schließlich sollen in 
Remotesitzungen passende Spalten- und Zeilenwerte übergeben werden, um die 
Fenstergröße auf versch. Client-PCs jeweils optimal einzustellen.


(2.) Lösungsansatz

Der Linuxbefehl "resize" liefert Informationen über die Ausmaße des 
derzeitigen Fensters, die an #DEFINIERE übergeben werden können. In 
Remotesitzungen sollten die passenden Werte mit #*DESI als Variablen 
WIN_ZEILEN und WIN_SPALTEN gerätespezifisch eingestellt werden.
Der Aufruf des vorgestellten Makros #$RESIZE empfiehlt sich innerhalb von 
TUSTEP.INI (Segment CONT) sowie manuell nach jeder Größenveränderung des 
TUSTEP-Windows.


(3.) Verbesserungsmöglichkeiten

Gibt es eine Möglichkeit, das Makro bei jeder Größenveränderung des Fensters 
(etwa im Sinne eines 'Interrupt') automatisch zu rufen?


(4.) Dokumentiertes Programm

$$-
$$- $RESIZE: Zeilen- und Spaltenzahl automatisch an Fenster anpassen
$$-
$$!
$$= $ <> *
$$ set system = system()
$$ fetch tustep_mds = TUSTEP_MDS
$$ fetch tustep_dsk = TUSTEP_DSK
$$ fetch tustep_prj = TUSTEP_PRJ
$$
$$ if ("<system>"    .eq. "linux" .and.
$$     "<tustep_mds>" .eq. "DIALOG") then
$$- 1. Möglichkeit: Linux lokal
$$-    -> Bildgröße einstellen.
$$     execute "resize > <tustep_dsk>/<tustep_prj>/scr_sdf"
$$     execute #anm,,<tustep_prj>*scr_sdf
$$     set a = file "<tustep_prj>*scr_sdf"
$$     set mirakel = join(a,";")
$$
$$-    Zeilenzahl feststellen
$$     build x_table nur_zeilen = "~<><%lines '<>>/'<><%~>=09~"
$$     set zeilen = exchange (mirakel, nur_zeilen)
$$
$$-    Spaltenzahl feststellen
$$     build x_table nur_spalten = "~<><%columns '<>>/'<><%~>=11~"
$$     set spalten = exchange (mirakel, nur_spalten)
$$
$$- Wegen des möglicherweise zu großen Bildschirms 
$$-   (keine Anführungszeichen, sonst werden aus Zahlen Zeichenfolgen...)
$$ if (<zeilen> .gt. 60) then
$$+ Maximalwert: zeilen = 60 !
$$    set zeilen = 60
$$ endif
$$ if (<spalten> .gt. 160) then
$$+ Maximalwert: spalten = 160 !
$$    set spalten = 160
$$ endif
$$ execute #def,zei=<zeilen>, spa=<spalten>
$$ execute #loesche,,<tustep_prj>*scr_sdf
$$ else
$$
$$- 2. Möglichkeit: Remote-Session
$$     fetch win_zeilen = WIN_ZEILEN
$$     fetch win_spalten = WIN_SPALTEN
$$     execute #defi,spa=<win_spalten>,zei=<win_zeilen>
$$     endif
$$ endif


Mehr Informationen über die Mailingliste Tustep-Liste