Arch를 사용하기 시작한 후 xterm 및 urxvt 터미널로 전환했고 유연성(특히 scaleHeight
리소스)을 즐겼습니다. 그러나 구성이 때때로 Xterm
또는 (소문자 대 대문자 합계)과 함께 작동하는 이유를 이해하지 못합니다 .xterm
XTerm
x
t
예를 들어 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"
그러나 내 Arch 상자는 "xterm"으로 잘 작동합니다. URxvt 터미널에서도 마찬가지입니다. 단순히 Arch를 포팅할 수는 없습니다.
xrdb -merge .Xresources
X.org에는 xterm에 대한 예제가 없습니다("xterm*"을 검색하면 해당 페이지에 아무것도 반환되지 않습니다). 나는 온라인에서 Xterm
, 그리고 ...의 xterm
예를 본 적이 있습니다 XTerm
. 나를 혼란스럽게 하는 것은 위의 구성이 구문론적으로 닫혀 있기 때문에 작동할 수 있다는 것입니다. 왜 그럴까요? 이것이 X의 새로운 리소스나 기존 리소스와 관련이 있을 수 있습니까? 감사해요!
우분투의 xterm은 Xterm(297)입니다. 현재 내 Arch 박스에 접근할 수 없지만 최신 상태로 유지될 것입니다. Xterm 버전을 Arch 저장소와 구별하는 방법을 모르겠지만 아마도 다음과 같을 것입니다.https://www.archlinux.org/packages/extra/i686/xterm/ 따라서 해당 링크가 정확하다면 예, 저는 다른 Xterm 버전을 실행하고 있는 것입니다.
xterm을 업그레이드하려고 시도했지만 여전히 297입니다.
apt-get update && apt-get install --only-upgrade xterm
지금은 이 작업을 수행할 수 없지만 문제가 지속되는지 확인하기 위해 최신 버전을 다시 컴파일해 볼 수 있습니다.
아래 ILMostro_7의 제안을 따라해 보았지만 XTerm.vt100.geometry
여전히 작동하지 않습니다. Ubuntu14의 Xterm(297)입니다. 따라서 기본적으로 .
또는 *
매우 소수의 경우에만 작동하는 것 같습니다 xt
.
appres XTerm xterm | grep geometry
결과에 대해 Giles에게 감사드립니다. xrdb -merge
이 혼란의 원인이 무엇인지 알아내는 것은 나에게 일어나지 않았습니다 . 그렇다면 내 생각엔 그 중 하나가 다른 모든 것보다 우선한다는 것인가요?
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
사실 xterm.vt100.geometry: 160x40
인스턴스가 계속 나오다 보니 다른 인스턴스보다 우선순위가 높은 것 같습니다. 또한 Xterm 메뉴(Ctrl+마우스 클릭)를 완전히 망쳐 놓았습니다. 작은 노란색 선으로 나타납니다. 헤헤
답변1
X11 리소스점으로 구분된 일련의 구성 요소로 구성된 이름을 갖습니다 xterm.vt100.geometry
. 첫 번째 구성 요소는 애플리케이션의 이름이고, 두 번째 구성 요소는 해당 애플리케이션 내의 위젯이며, 마지막 구성 요소는 위젯의 속성입니다. 위젯은 중첩될 수 있으므로 3개 이상의 구성 요소가 있을 수 있거나 애플리케이션 속성의 경우 2개만 있을 수 있습니다.
X 리소스에 대한 사양은 단일 리소스 또는 패턴과 일치하는 리소스 그룹에 적용될 수 있습니다. 여러 리소스에 사양을 적용하는 방법에는 두 가지가 있습니다.
모든 구성 요소에 대해 인스턴스 이름 대신 클래스 이름을 사용할 수 있습니다. 관례적으로 인스턴스 이름은 소문자로 시작하고 클래스 이름은 대문자로 시작합니다.
- 애플리케이션 수준에서 특정 애플리케이션의 클래스 이름은 일반적으로 고정되어 있으며 일반적으로 애플리케이션 이름은 대문자이고 때로는 다른 문자도 대문자입니다(예:
XTerm
,XCalc
,GV
,NetHack
, ... 사용).X 툴킷-class
-name
클래스 이름과 인스턴스 이름을 설정하는 옵션을 지원합니다 (기본값은 실행 파일의 기본 이름). 예를 들어, 이 클래스의 인스턴스에 대한 위젯의 속성 값 설정은XTerm.vt100.geometry
적용되지만 적용되지는 않습니다.geometry
vt100
XTerm
xterm -name foo
xterm -class Foo
- 위젯 수준에서는 동일한 창에 여러 개의 버튼이 있는 것처럼 동일한 클래스를 가진 여러 위젯이 있을 수 있습니다. Xterm에는 전체 창을 덮는 터미널 에뮬레이터의 일부인
VT100
위젯이라는 클래스가 있습니다.vt100
다른 위젯에는 메뉴 및mainMenu
클래스 가 포함됩니다 .fontMenu
vtMenu
SimpleMenu
- 애플리케이션 수준에서 특정 애플리케이션의 클래스 이름은 일반적으로 고정되어 있으며 일반적으로 애플리케이션 이름은 대문자이고 때로는 다른 문자도 대문자입니다(예:
- 와일드카드가 있습니다.
?
"모든 위젯"을 의미하고*
"모든 위젯 시퀀스"를 의미합니다. 예를 들어,xterm*background
Xterm 창 내의 모든 것에 대한 배경을 정의하십시오.
다음 명령을 사용하여 editres 프로토콜을 지원하는 애플리케이션의 리소스 트리를 탐색할 수 있습니다.editres
. 이 프로토콜을 지원하는 응용 프로그램은 거의 없지만 Xterm은 그 중 하나입니다.
특정 리소스는 여러 패턴과 일치할 수 있습니다. 이 경우 우선순위 규칙이 적용됩니다. 보다수동전체 규칙을 알아보세요.
귀하의 경우에는 not 에 더 가까운 어딘가에 다른 항목이 있을 가능성이 높으며 xterm.vt100.geometry
해당 xterm*VT100.geometry
일치 항목이 설정을 재정의합니다. 누구도 다른 설정을 갖고 있지 않으므로 무엇을 하든 승리할 수 있습니다.
답변2
일부 리뷰 등은 정확하지 않습니다. 그런데 X 리소스에 대한 설명은 다음과 같습니다.X(7) 매뉴얼 페이지, 제목에자원. 이것은최고당신이 읽기 시작한 부분을 여기서 반복하는 것은 별 의미가 없습니다.
다음은 간과된 몇 가지 사항입니다.
- 리소스 이름은 다음과 같습니다.대소문자 구분:
XTerm
그리고 다르고Xterm
다른 등등xterm
. - 관례에 따르면X 리소스 이름은 앞에 대문자를 사용합니다.수업이름.
- 클래스 이름의 첫 글자가 다음
X
과 같을 때관습두 번째 문자를 대문자로 만듭니다. 그래서 우리는 를 얻 습니다XTerm
.XCalc
XClock
XConsole
XLoad
XLogo
- 반면에 (
Xedit
소문자e
)Xfd
, , , , 가 있습니다. 따라서 이 컨벤션은Xmag
Xman
Xmessage
Xvidtune
규칙. - X 툴킷 애플리케이션(예
xterm
: ) 사용XtOpenApplication
또는XtAppInitialize
애플리케이션 리소스를 초기화합니다. 이러한 호출에는예그리고수업이름. - 일반적으로 인스턴스 이름은 프로그램의 실제 이름(파일 이름)입니다. 프로그램 이름을 바꾸는 경우(예: 가끔 발생함
xterm.real
) 이름도 변경됩니다. 이 프로그램은 그렇지 않습니다가지다하세요. 하지만 자주 하세요.xterm
할 수 있다. - 대개수업이름은 상수입니다. 또는 (대문자 3개)
xterm
두 가지 범주 중 하나가 필요하기 때문에 포함되지 않습니다 . 후자는 스크립트에 사용되며 글꼴 지정 방법을 단순화합니다. 이것XTerm
UXTerm
uxterm
날짜는 2000년부터 시작됩니다., X 역사의 중간쯤이 되었습니다. 2000년 초/중반의 X 소스 트리에서 30개 프로그램을 빠르게 검사해 보면XtAppInitialize
클래스 이름 변수를 사용하는 다른 프로그램은 표시되지 않습니다. - 이
-class
옵션은 xterm에 따라 다릅니다. 실제로 옵션dbedizzy
을 허용합니다-class
.시각적수업. 그건 달라. X Toolkit에는 그러한 옵션이 없습니다. X 툴킷의 일반 옵션은 X(7) 매뉴얼 페이지에 나열되어 있습니다.옵션. xterm 매뉴얼에서 이에 대해 더 자세히 다루고 있습니다.X 툴킷 옵션. editres
매뉴얼 페이지에서 알 수 있듯이 X 툴킷을 사용하는 모든 프로그램에 적용됩니다. 위에서 언급한 두 가지 초기화 호출 중 하나 또는 다른 것을 사용하는 X 소스 트리에는 36개의 프로그램이 있으므로 여기에 적용되는 프로그램은 "몇몇 프로그램"이 아닙니다.- 반면에,
xterm
그것은 다음 중 하나입니다.희귀한이것은editres
별로 유용하지 않습니다. 리소스 설정이 너무 많습니다.
xterm
다른 응용프로그램용으로 설치된 응용프로그램 기본 파일관례에 따르면별표( )로 시작하는 리소스 설정을 지정합니다 *
. 이는 그들을 독립되게 만든다.예이름. 별표는 xterm FAQ에서와 같이 종종 혼란의 원인이 되는 위젯 계층 구조의 모든 수준과 일치합니다.메뉴가 왜 이렇게 적어요?, 위젯에 사용된 지오메트리 리소스가 VT100
메뉴에 (잘못) 적용될 수 있습니다. 리소스에 지나치게 관대하게 매칭을 적용하는 경우에도 비슷한 문제가 있습니다 font
. 두 문제에 대한 해결책은 VT100
위젯 참조(특정), 점( .
) 등을 사용하여 보다 구체적인 일치를 사용하는 것입니다.
app-defaults 파일은 불필요한 사용을 방지하므로 '.'
자체 구성에서 이를 재정의하는 것이 상대적으로 쉽습니다. 리소스에 액세스하는 데 문제가 있는 경우
xterm*VT100.geometry: 100.80
신청하려면 볼 수 있는 곳이 몇 군데 있습니다:
- 사용한 적이 있는 경우저것모드를 사용하기 전에 다시 설정하면(나중에 리소스 파일에서) 사용된 값에 영향을 주지 않습니다.
xterm.VT100.geometry
와일드카드 사용 및 덜 구체적인 설정 재정의 와 같은 보다 구체적인 설정입니다 .*
?