Dopo aver iniziato a usare Arch, sono passato ai terminali xterm e urxvt e ho apprezzato la loro flessibilità (in particolare scaleHeight
risorsa). Tuttavia, non capisco perché a volte le configurazioni funzionano con Xterm
e talvolta con xterm
o XTerm
(minuscolo e maiuscolo x
e t
).
Ad esempio, ho questa strana configurazione che funziona su Ubuntu:
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"
Tuttavia, la mia scatola Arch funziona bene su "xterm". Lo stesso vale per il terminale URxvt:non posso semplicemente trasferire il mio Arch .Xresources su Ubuntu14 casella di lavoro perché parti di esso smettono di funzionare e ottengo configurazioni diverse dopo l'esecuzione:
xrdb -merge .Xresources
X.org su xterm non aveva esempi (la ricerca di "xterm*" non ha restituito nulla in quella pagina). Vedo esempi con Xterm
, xterm
e XTerm
online ... Mi sconcerta che la configurazione sopra funzioni poiché è sintatticamente disattivata. Perché è così? Ha forse qualcosa a che fare con risorse nuove o vecchie in X? Grazie!
xterm su Ubuntu è Xterm(297). Al momento non ho accesso alla mia casella Arch, ma sarebbe abbastanza aggiornato. Non so come distinguere la versione di Xterm dai repository di Arch, ma forse questo:https://www.archlinux.org/packages/extra/i686/xterm/
Quindi, se quel link è giusto, allora sì , sto eseguendo diverse versioni di Xterm.
Ho provato ad aggiornare xterm, ma è ancora 297.
apt-get update && apt-get install --only-upgrade xterm
Non posso farlo ora, ma potrei provare a ricompilare l'ultima versione per vedere se il problema è presente.
Seguendo i suggerimenti di ILMostro_7 di seguito ho provato XTerm.vt100.geometry
, che ancora non ha funzionato. Questo è Xterm (297) su Ubuntu14. Quindi, in pratica, .
o *
sembra funzionare solo con un piccolo xt
.
Risultato di appres XTerm xterm | grep geometry
grazie a Gilles. Non ho pensato di cercare cosa esattamente xrdb -merge
fa che ha provocato questo pasticcio. Quindi la mia ipotesi è che uno di questi abbia la precedenza su tutto il resto?
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
In effetti sembra xterm.vt100.geometry: 160x40
ha la precedenza su altri poiché l'istanza che continuo a ricevere. Inoltre, in qualche modo sono riuscito a rovinare completamente i menu di Xterm (Ctrl + clic del mouse) - vengono visualizzati come una piccola linea gialla. Ehi
Risposta accettata:
Le risorse X11 hanno un nome che consiste in una serie di componenti separati da un punto, come xterm.vt100.geometry
. Il primo componente è il nome dell'applicazione, il secondo componente è un widget nell'applicazione e l'ultimo componente è una proprietà del widget. I widget possono essere nidificati, quindi possono esserci più di tre componenti o solo due per una proprietà dell'applicazione.
Le specifiche delle risorse X possono essere applicate a una singola risorsa o a un insieme di risorse che corrispondono a un modello. Esistono due modi per applicare una specifica a più risorse.
-
È possibile utilizzare un nome di classe anziché un nome di istanza per qualsiasi componente. Convenzionalmente, i nomi delle istanze iniziano con una lettera minuscola mentre i nomi delle classi iniziano con una lettera maiuscola.
- A livello di applicazione, il nome della classe è solitamente fisso per una determinata applicazione, in genere sul nome dell'applicazione in maiuscolo, e talvolta anche altre lettere sono maiuscole, ad es.
XTerm
,XCalc
,GV
,NetHack
, … Le applicazioni che utilizzano il toolkit X supportano un'opzione-class
per impostare il nome della classe, anche-name
per impostare il nome dell'istanza (che per impostazione predefinita è il nome di base dell'eseguibile). Ad esempioXTerm.vt100.geometry
imposta un valore dellageometry
proprietà per ilvt100
widget di qualsiasi istanza diXTerm
classe; si applica axterm -name foo
ma non axterm -class Foo
. - A livello di widget, possono esserci più widget con la stessa classe, ad esempio più pulsanti nella stessa finestra. Xterm ha un singolo widget di classe
VT100
, chiamatovt100
, che è la parte dell'emulatore di terminale che copre l'intera finestra. Altri widget includono i menumainMenu
,fontMenu
evtMenu
della classeSimpleMenu
.
- A livello di applicazione, il nome della classe è solitamente fisso per una determinata applicazione, in genere sul nome dell'applicazione in maiuscolo, e talvolta anche altre lettere sono maiuscole, ad es.
- Ci sono caratteri jolly:
?
significa "qualsiasi widget" e*
significa "qualsiasi sequenza di widget". Ad esempioxterm*background
definisce uno sfondo per qualsiasi cosa all'interno della finestra di Xterm.
Puoi esplorare l'albero delle risorse di un'applicazione che supporta il protocollo editres con editres
. Poche applicazioni supportano questo protocollo, ma Xterm è una di queste.
È possibile che una determinata risorsa sia abbinata a più modelli. In questo caso si applicano le regole di precedenza. Consulta il manuale per le regole complete.
Nel tuo caso, è probabile che ci sia un'altra voce da qualche parte che corrisponde di più a xterm.vt100.geometry
di xterm*VT100.geometry
, e quella corrispondenza ha la precedenza sulla tua impostazione. Gli altri non hanno altre impostazioni, quindi qualunque cosa tu faccia vince.