Nachdem ich angefangen hatte, Arch zu benutzen, wechselte ich zu xterm und urxvt terminal und genoss die Flexibilität von ihnen (insbesondere scaleHeight
Ressource). Ich verstehe jedoch nicht, warum manchmal Konfigurationen mit Xterm
und manchmal mit xterm
oder XTerm
( Klein- oder Großbuchstaben x
und t
) funktionieren .
Zum Beispiel habe ich diese seltsame Konfiguration, die unter Ubuntu funktioniert:
XTerm*faceName: terminus
XTerm*faceSize: 11
XTerm*saveLines: 16384
XTerm*loginShell: true
XTerm*charClass: 33:48,35:48,37:48,43:48,45-47:48,64:48,95:48,126:48
XTerm*termName: xterm-color
XTerm*eightBitInput: false
xterm*VT100.geometry: 100x80 ! <------ this line would not work with "Xterm" or "XTerm"
XTerm*scaleHeight: 1.3 ! <----- but all others work with "XTerm"
Meine Arch-Box läuft jedoch auf "xterm". Gleiches gilt für das URxvt-Terminal: Ich kann meine Arch .Xresources nicht einfach auf die Ubuntu14-Workbox portieren, da Teile davon nicht mehr funktionieren und ich nach dem Ausführen verschiedene Setups erhalte:
xrdb -merge .Xresources
X.org auf xterm hatte keine Beispiele (die Suche nach "xterm *" hat auf dieser Seite nichts zurückgegeben). Ich sehe Beispiele mit Xterm
, xterm
und XTerm
online ... Es verblüfft mich , dass die Config oben genannten Arbeiten , da es syntaktisch ausgeschaltet ist. Warum ist das so? Hat es vielleicht etwas mit neuen oder alten Ressourcen in X zu tun? Vielen Dank!
xterm auf Ubuntu ist Xterm (297). Ich habe momentan keinen Zugriff auf meine Arch-Box, aber sie wäre ziemlich aktuell. Ich weiß nicht, wie ich die Xterm-Version von Arch's Repos unterscheiden soll, aber vielleicht folgendes: https://www.archlinux.org/packages/extra/i686/xterm/ Wenn dieser Link also richtig ist, dann laufe ich verschiedene Xterm-Versionen.
Ich habe versucht, xterm zu aktualisieren, aber es ist immer noch 297.
apt-get update && apt-get install --only-upgrade xterm
Ich kann es jetzt nicht tun, aber ich könnte versuchen, die neueste Version neu zu kompilieren, um festzustellen, ob das Problem vorliegt.
Nach den Vorschlägen von ILMostro_7 habe ich versucht XTerm.vt100.geometry
, was immer noch nicht funktioniert hat. Dies ist Xterm (297) unter Ubuntu14. Also im Grunde, .
oder *
es scheint nur mit wenig zu funktionieren xt
.
Ergebnis des appres XTerm xterm | grep geometry
Dankes an Gilles. Ich dachte nicht daran nachzuschauen, was genau das xrdb -merge
bewirkt, was zu diesem Durcheinander geführt hat. Ich vermute also, dass eine davon Vorrang vor allem anderen hat?
xterm.VT100.geometry: 100x100
xterm*VT100.geometry: 100x80
xterm*VT100*geometry: 50x50
xterm.vt100.geometry: 160x40
xterm*vt100.geometry: 100x20
xterm.geometry: 5x5
xterm*geometry: 100x20
XTerm.VT100.geometry: 100x100
XTerm*VT100.geometry: 50x50
XTerm*VT100*geometry: 20x10
XTerm.vt100.geometry: 100x5
XTerm*vt100.geometry: 40x40
XTerm*geometry: 50x50
Tatsächlich sieht es so aus, als hätte es xterm.vt100.geometry: 160x40
Vorrang vor anderen, da die Instanz, die ich immer wieder bekomme. Außerdem habe ich es irgendwie geschafft, Xterm-Menüs (Strg + Mausklick) komplett zu vermasseln - sie erscheinen als kleine gelbe Linie. Hehe
quelle
XTerm
in Ihrem Fall) zwischen Groß- und Kleinschreibung unterscheidet . Ich weiß nicht, wie Xresources funktioniert, aber einige Spekulationen: Vielleicht führen Sie irgendwie verschiedene Versionen von xterm zwischen Ihren Boxen aus? (Postxterm -version
?) Vielleicht nennen verschiedene Distributionen das xterm-Programm unterschiedliche Klassennamen? (Ich weiß nicht, wie ich das überprüfen soll.Antworten:
X11-Ressourcen haben einen Namen, der aus einer Reihe von Komponenten besteht, die durch einen Punkt getrennt sind, z
xterm.vt100.geometry
. Die erste Komponente ist der Name der Anwendung, die zweite Komponente ist ein Widget in dieser Anwendung und die letzte Komponente ist eine Eigenschaft des Widgets. Widgets können verschachtelt sein, sodass mehr als drei Komponenten oder nur zwei für eine Eigenschaft der Anwendung vorhanden sein können.Spezifikationen von X-Ressourcen können für eine einzelne Ressource oder für eine Reihe von Ressourcen gelten, die einem Muster entsprechen. Es gibt zwei Möglichkeiten, eine Spezifikation auf mehrere Ressourcen anzuwenden.
Sie können für jede Komponente einen Klassennamen anstelle eines Instanznamens verwenden. Herkömmlicherweise beginnen Instanznamen mit einem Kleinbuchstaben, während Klassennamen mit einem Großbuchstaben beginnen.
XTerm
,XCalc
,GV
,NetHack
, ... Anwendungen , die die Verwendung von X - Toolkit eine Option unterstützen-class
zu Set den Klassennamen sowie-name
den Instanznamen (standardmäßig den Basisnamen der ausführbaren Datei). Legt beispielsweiseXTerm.vt100.geometry
einen Wert dergeometry
Eigenschaft für dasvt100
Widget einer beliebigen Instanz derXTerm
Klasse fest. es giltxterm -name foo
aber nicht fürxterm -class Foo
.VT100
, genanntvt100
, die der Terminal - Emulator Teil ist , dass die gesamten Fensterabdeckungen. Andere Widgets sind die MenüsmainMenu
,fontMenu
undvtMenu
der KlasseSimpleMenu
.?
bedeutet "jedes Widget" und*
bedeutet "jede Widget-Sequenz".xterm*background
Definiert zum Beispiel einen Hintergrund für absolut alles im Xterm-Fenster.Sie können den Ressourcenbaum einer Anwendung untersuchen, mit der das Editres-Protokoll unterstützt wird
editres
. Nur wenige Anwendungen unterstützen dieses Protokoll, aber Xterm ist eine davon.Es ist möglich, dass eine bestimmte Ressource mit mehreren Mustern übereinstimmt. In diesem Fall gelten Vorrangregeln. Die vollständigen Regeln finden Sie im Handbuch .
In Ihrem Fall ist es wahrscheinlich, dass es irgendwo einen anderen Eintrag gibt, für den eine engere Übereinstimmung
xterm.vt100.geometry
vorliegtxterm*VT100.geometry
, und diese Übereinstimmung überschreibt Ihre Einstellung. Die anderen haben keine andere Einstellung, also gewinnt alles, was Sie tun.quelle
XTerm*geometry
zXTerm.VT100.geometry
.appres XTerm xterm |grep geometry
?Einige der Kommentare usw. sind nicht korrekt. Die Beschreibung der X-Ressourcen finden Sie übrigens auf der X (7) -Handbuchseite im Abschnitt Ressourcen . Das ist der beste Ort, um mit dem Lesen zu beginnen, und es macht wenig Sinn, es hier zu wiederholen.
Hier sind einige Punkte übersehen:
XTerm
ist nicht dasselbe wieXterm
nicht dasselbe wiexterm
usw.X
, gibt es eine Konvention , um den zweiten Buchstaben groß zu schreiben. Also bekommen wirXTerm
. Weitere Beispiele sindXCalc
,XClock
,XConsole
,XLoad
,XLogo
.Xedit
(kleinee
)Xfd
,Xmag
,Xman
,Xmessage
,Xvidtune
. Die Konvention ist also keine Regel .xterm
) verwendenXtOpenApplication
oderXtAppInitialize
initialisieren ihre Anwendungsressourcen. Diese Aufrufe haben einen Instanz- und Klassennamen .xterm.real
), ändert sich der Name. Das Programm nicht haben , um dies zu tun, aber es ist oft getan.xterm
macht es.xterm
, weil es eine von zwei Klassen erwartet:XTerm
oderUXTerm
(3 führende Hauptstädte). Letzteres wird für dasuxterm
Skript verwendet, um die Angabe der Schriftarten zu vereinfachen. Dies stammt aus dem Jahr 2000 und ist damit ungefähr in der Mitte der Geschichte von X. Eine schnelle Überprüfung der 30 Programme im X-Quellbaum aus den frühen / mittleren 2000er Jahren, die verwendet werdenXtAppInitialize
, zeigt keine anderen Programme, die eine Variable für den Klassennamen verwenden.-class
Option ist xterm-spezifisch. Akzeptiert tatsächlichdbedizzy
eine-class
Option für die visuelle Klasse. Das ist anders. X Toolkit hat keine solche Option. Eine Liste der allgemeinen Optionen für X Toolkit finden Sie auf der X (7) -Handbuchseite unter Optionen . Im xterm-Handbuch werden diese in den X Toolkit-Optionen ausführlicher dargestellt .editres
funktioniert, wie auf der Handbuchseite angegeben, für jedes Programm, das das X Toolkit verwendet. Es gibt 36 Programme im X-Quellbaum, die den einen oder anderen der beiden genannten Initialisierungsaufrufe verwenden. Es sind also nicht "wenige Programme", für die dies gelten würde.xterm
ist eine der wenigen, für dieeditres
nicht sehr nützlich ist. Es hat zu viele Ressourceneinstellungen.Die App-Standarddateien, die für
xterm
und andere Anwendungen installiert werden, geben üblicherweise ihre Ressourceneinstellungen an, beginnend mit asterisk (*
). Das macht sie unabhängig vom Instanznamen . Ein Sternchen entspricht einer beliebigen Anzahl von Ebenen der Widget-Hierarchie, was häufig zu Verwirrung führt, z. B. die xterm-FAQ. Warum sind die Menüs winzig? , wo es möglich ist, dass eine Geometrieressource, die für dasVT100
Widget vorgesehen ist, (falsch) auf die Menüs angewendet wird. Es gibt ähnliche Probleme mit zu großzügigen Übereinstimmungen, die auf diefont
Ressource angewendet werden. Die Lösung für beide besteht darin, spezifischere Übereinstimmungen zu verwenden, die auf dasVT100
Widget (spezifisch) verweisen , dot (.
) usw. verwenden.Da die Standarddateien der App eine unnötige Verwendung vermeiden
'.'
, können sie in Ihrer eigenen Konfiguration relativ einfach überschrieben werden. Wenn Sie Probleme haben, eine Ressource wie zUm sich zu bewerben, gibt es nur wenige Stellen zu suchen:
xterm.VT100.geometry
Überschreiben weniger spezifischer Einstellungen mithilfe von Platzhaltern*
und?
.quelle