X11/xterm: X-Konfiguration für Anfänger

HJOrtmann

Aktives Mitglied
Thread Starter
Dabei seit
07.02.2006
Beiträge
712
Reaktionspunkte
126
Hallo,
auf welcher Seite muss man drehen, um bei einem xterm-Aufruf den auf OSX laufenden X-Server zu überzeugen, einen ähnlichen Output wie das Standard-Terminal zu erzeugen ? Ich vermute mal, es geht vor allem um den Font (Terminal: Monaco 11pt.) und die Textglättung ? Geht das, und wenn ja: wie würde ein Eintrag in welcher Konfigdatei ungefähr lauten ?

Ganz offen: bei dem X-Krempel bin ich froh, nur User zu sein - die X-Konfigurationsmöglichkeiten sind mir ein Buch mit 7 Siegeln, und ich denke immer: :confused:

Kann mir jemand zumindest den Weg weisen und die ersten Schritte zeigen - durchbeissen würde ich mich alleine (versuchen) ;)

Hans-Jürgen
 
Hiho,

um es ganz kurz zu machen:
Code:
xterm -fa Monaco -fs 12
xterm kann das natürlich, nur nicht ganz so schön. Alles was im nächsten Abschnitt folgt, kannst du getrost ignorieren, musst du aber nicht, da es zukünftig hilfreich sein kann.

xterm nutzt für das Weichzeichnen von Schriften andere Verfahren/Bibliotheken als die, die normalerweise Cocoa- oder Carbon-Programme unter Mac OS X benutzen (z. B. das Terminal welches unter /Applications/Utilities/ zu finden ist, der Finder, ...). Diese stehen ja bekanntlich unter anderen UNIX-Systemen nicht zur Verfügung. Nun kannst du einfach schauen, welche Bibliotheken ein Programm verwendet:
Code:
wave:TTF sean$ otool -L /usr/X11/bin/xterm
/usr/X11/bin/xterm:
	/usr/X11/lib/libXft.2.dylib (compatibility version 4.0.0, current version 4.2.0)
	/usr/X11/lib/libX11.6.dylib (compatibility version 9.0.0, current version 9.0.0)
	/System/Library/Frameworks/ApplicationServices.framework/Versions/A/ApplicationServices (compatibility version 1.0.0, current version 34.0.0)
	/usr/X11/lib/libfreetype.6.dylib (compatibility version 10.0.0, current version 10.16.0)
	/usr/lib/libz.1.dylib (compatibility version 1.0.0, current version 1.2.3)
	/usr/X11/lib/libfontconfig.1.dylib (compatibility version 3.0.0, current version 3.0.0)
	/usr/X11/lib/libXrender.1.dylib (compatibility version 5.0.0, current version 5.0.0)
	/usr/X11/lib/libXaw.8.dylib (compatibility version 9.0.0, current version 9.0.0)
	/usr/X11/lib/libXmu.6.dylib (compatibility version 9.0.0, current version 9.0.0)
	/usr/X11/lib/libXext.6.dylib (compatibility version 11.0.0, current version 11.0.0)
	/usr/X11/lib/libXt.6.dylib (compatibility version 7.0.0, current version 7.0.0)
	/usr/X11/lib/libSM.6.dylib (compatibility version 7.0.0, current version 7.0.0)
	/usr/X11/lib/libICE.6.dylib (compatibility version 10.0.0, current version 10.0.0)
	/usr/lib/libncurses.5.4.dylib (compatibility version 5.4.0, current version 5.4.0)
	/usr/lib/libgcc_s.1.dylib (compatibility version 1.0.0, current version 1.0.0)
	/usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 111.0.0)
wave:TTF sean$
siehe da, in der ersten und vierten Zeile steht was von Xft und freetype. Genau diese beiden werden unter anderem für die Schriftdarstellung und auch fürs Weichzeichnen der Schriften auf anderen (hauptsächlich UNIX-) Systemen verwendet. Wie findest du jetzt den richtigen Schalter um xterm zu sagen, dass er eben die Schriften weichzeichnen soll, oder überhaupt welche weichgezeichnete Schrift er benutzen soll? Das xterm-Manual im Terminal öffnen:
Code:
man xterm
und dann einfach "/" drücken und "freetype" eingeben. Hoch- und Runterscrollen funktioniert mit den Tasten "j" und "k", Seitenweise mit der Leertaste. Das Manual schließt du mitels "q".

Mit freundlichem Gruß
 
Danke - aber langsam bin ich etwas verwirrt. Ich schreib deshalb lieber erst mal etwas mehr zu meiner Umgebung:

ich logge mich via ssh auf einem Linux-Rechner ein (meistens im LAN, mitunter aber auch via VPN-Verbindung von aussen) und muss dort auf diesem Host arbeiten. Kein Problem mit Terminal. Nun muss ich "dort" eine Menge auf cmdline-Ebene tun (in mehreren Fenstern/sessions), und zwischendurch auch immer mal X-Programme nutzen, bzw. Scripte, die X-Fenster aufmachen; und zwischen allem Texte austauschen. Um eine Menge Unannehmlichkeiten zu vermeiden, würde ich "dort" nun gerne komplett in xterm-Fenstern arbeiten, obwohl die cmdline natürlich auch im Terminal zur Verfügung steht. Es nervt z.B. unendlich, wenn neue X-Fenster aufklappen, und der Fokus weiter im Terminal hängt, und man beim blinden Voraustippen im falschen Fenster arbeitet... deshalb der Wunsch nach dem "dortigen" xterm. Allein das dortige xterm sieht - verglichen zu der Darstellung im Terminal - beschissen aus (Font und vor allem fehlende Schriftglättung, an die man sich als OSX-Nutzer nun wirklich gewöhnt hat).

Ein lokales xterm -fa funktioniert wunderbar (wenn auch die Schriftglättung offensichtlich leider nicht den OSX Mechanismen entspricht), aber beim remote xterm führt ein -fa zwar zu einem Unterschied, aber zu keinem Erfolg.

Auf dem Host ist kein otools installiert, aber ein strings xterm | grep lib zeigt 'ne Menge libs, aber keine libfreetype. Kann es sein, dass libfreetype dort nicht unterstützt wird ? Ich dachte bis jetzt sowieso, dass der X-Server für die Anzeige zuständig ist - und der läuft doch lokal in "meinem" OSX (und kann mit lokalen xterms -fa wunderbar arbeiten) ?

Verwirrung komplett: ich könnte nun natürlich für jede Session ein (lokales) xterm starten, und in jedem diesem Fenster ein ssh zum Host machen - wie würde sich das denn auf die zu übertragenen Daten auswirken :confused:

Ich bin gespannt...
Hans-Jürgen
 
Hiho,

das liegt höchstwahrscheinlich daran, dass das Linux-System auf dem du arbeitest die Schrift Monaco gar nicht besitzt. Versuch dann einfach mal:
Code:
xterm -fa Monospace

Mit freundlichem Gruß
 
Da kommt dasselbe raus wie bei -fa monaco. Was anderes als ohne -fa, aber das hilft mir auch nicht weiter...

Wenn ich es richtig verstehe, muss der Font auf beiden Seiten (lokal und remote) für xterm und den X-Server bekannt sein ? Das ist ja irgendwie pervers...

Wäre es dann nicht richtiger, lokal ein xterm pro session zu starten, und in jedem xterm eine ssh-Verbindung zum Host aufzubauen ? Dann würden zumindest XServer und Xterm zueinander passen.

Das bringt mich dann aber auf die Frage zurück: wie würde sich das denn auf die zu übertragenen Daten auswirken :confused: Was wird da in beiden Fällen übertragen :confused:
 
Die Schriftart muss natürlich nicht auf beiden Systemen vorhanden sein. Es ist prinzipell egal ob du nun bei dir auf der Kiste xterm startest und dich daraus über SSH mit dem anderen Host verbindest, oder mit dem Terminal.app von Mac OS X. Falls du natürlich X-Forwarding über SSH benutzt (also ssh host -X) und dann auf dem Linux-System weitere xterms startest, hat die grafische Darstellung auf deinem Bildschirm dieser keinen Zusammenhang (außer eben die 1:1 grafische Weiterleitung) zu deinem System. Ob das xterm auf dem entfernten Rechner überhaupt Weichzeichnen von Schriften unterstützt, kannst mit dem Programm ldd (Pendant zu otool) überprüfen, oder ob überhaupt der Schalter "-fa" vorhanden ist. Also z. B.
Code:
ldd $(which xterm)
und schauen ob Xft benutzt wird.

Die Frage wie sich das alles auf die übertragenen Daten auswirken soll, versteh ich nicht.
 
ok, langsam fang ich an, zu verstehen.
Ja, mir ging es vor allem um "ssh -X" und beliebige remote gestartete xterms.
ldd liefert da
Code:
	libXft.so.2 => /usr/lib/libXft.so.2 (0x00002b6c46ca5000)
	libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00002b6c46eb9000)
	libXaw.so.7 => /usr/lib/libXaw.so.7 (0x00002b6c470ed000)
	libXmu.so.6 => /usr/lib/libXmu.so.6 (0x00002b6c4735a000)
	libXext.so.6 => /usr/lib/libXext.so.6 (0x00002b6c47574000)
	libXt.so.6 => /usr/lib/libXt.so.6 (0x00002b6c47785000)
	libSM.so.6 => /usr/lib/libSM.so.6 (0x00002b6c479e7000)
	libICE.so.6 => /usr/lib/libICE.so.6 (0x00002b6c47bf2000)
	libX11.so.6 => /usr/lib/libX11.so.6 (0x00002b6c47e0d000)
	libncurses.so.5 => /lib/libncurses.so.5 (0x00002b6c4811a000)
	libc.so.6 => /lib/libc.so.6 (0x00002b6c48377000)
	libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00002b6c486c8000)
	libz.so.1 => /usr/lib/libz.so.1 (0x00002b6c48941000)
	libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00002b6c48b58000)
	libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00002b6c48d61000)
	libXpm.so.4 => /usr/lib/libXpm.so.4 (0x00002b6c48f84000)
	libXau.so.6 => /usr/lib/libXau.so.6 (0x00002b6c49196000)
	libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00002b6c49398000)
	libdl.so.2 => /lib/libdl.so.2 (0x00002b6c4959d000)
	/lib64/ld-linux-x86-64.so.2 (0x0000555555554000)
	libpthread.so.0 => /lib/libpthread.so.0 (0x00002b6c497a2000)
, daraus schliesse ich, dass ich mit diesem xterm schlechte Karten habe.
Aber da lokale xterms mit jeweils einzelnen ssh Verbindungen ja keine Probleme machen, reicht mir diese Lösung vollkommen aus.

Danke !

HansJürgen

PS: ich hatte mich nur gefragt, welche Daten eigentlich zwischen iMac und Host ausgetauscht werden; dass muss ja in beiden Fällen unterschiedlich sein (einmal findet die Kommunikation xterm<-->XServer lokal statt, ein anderes Mal übers LAN resp. WAN) Aber wenn ich X-Anwendungen starte, spielt es ja wohl keine Rolle, ob die aus einem lokalen oder einem remote xterm gestartet wurden. Von daher brauchst du da einfach nicht weiter drüber nachdenken :)
 
Die benötigten Bibliotheken sind doch in der Ausgabe vorhanden. Jetzt müsstest du schauen welche Schriftarten verfügbar sind, und unter welchen Namen und zusätzlichen Aliasen diese ansprechbar sind. Das ist aber eine andere Baustelle. :)
 
ok, ich hatte die libfreetype glatt übersehen... :rolleyes:

Da hab' ich dann noch eine abschliessende Frage:

wenn ich das xterm auf dem Host starte: muss also der gewählte Font dann nur auf dem Host (also fürs xterm) zur Verfügung stehen, und der XServer muss da nichts von wissen ? Oder muss der XServer auf denselben Font (mit demselben Namen) zugreifen können ?

HansJürgen


PS: obwohl: einen hab' ich noch:
Jetzt müsstest du schauen welche Schriftarten verfügbar sind, und unter welchen Namen und zusätzlichen Aliasen diese ansprechbar sind
gibst du mir noch einen Tipp dazu ? :)
 
Zurück
Oben Unten