.Xresources와 .Xdefaults의 차이점은 무엇입니까?


58

이 두 파일은 같은 기능을하는 것 같습니다. 둘 사이의 차이점은 무엇입니까?

답변:


68

~/.XdefaultsX 자원을 저장하는 오래된 방법입니다. 이 파일은 Xlib 프로그램이 시작될 때마다 다시 읽습니다. X11이 네트워크를 통해 사용되는 경우 파일은 프로그램과 동일한 파일 시스템에 있어야합니다.

~/.Xresources최신입니다. 그것은로드됩니다 xrdbRESOURCE_MANAGERX11 루트 윈도우의 속성입니다. 프로그램이 리소스를 찾을 때마다에서 바로 읽습니다 RESOURCE_MANAGER.

이 속성이 존재하지 않으면, Xlib는 .Xdefaults모든 프로그램 시작시 이전의 읽기 방법으로 되돌아갑니다 . 대부분의 배포판이있는 경우 ~/.Xresources자동으로 로드 되므로 수동으로 .Xdefaults실행 한 적이 없어도 무시 xrdb됩니다.

새로운 방법의 장점은 xrdb한 번만 호출 하면 충분하며 , 로컬 또는 원격이든이 디스플레이에서 실행중인 모든 프로그램에서 리소스를 사용할 수 있다는 것입니다. (이름 ~/.Xresources은 규칙 일뿐 입니다. xrdb파일을로드하는 데 사용할 수도 .Xdefaults있습니다.)

Xlib 프로그래밍 매뉴얼 P.441 :

X11R2 이전에는 X 자원 설정을 사용자 홈 디렉토리의 .Xdefaults 파일 및 선택적으로 X 클라이언트가 실행중인 시스템에서 읽었으므로 여러 파일을 유지 보수하기가 어려웠습니다.

나중에 xrdb 프로그램은 .Xresources의 사용자 자원 설정을 현재 X 서버의 루트 창의 XA_RESOURCE_MANAGER 속성에 저장하기 위해 만들어 졌으므로 동일한 서버에 연결된 모든 클라이언트가 액세스 할 수 있습니다. 사용자가 속성을 설정하기 위해 xrdb를 호출하지 않은 경우 .Xdefaults가 읽 힙니다.

위키 백과 :

[...] X 자원은 모든 화면에 적용되는지 아니면 특정 화면에 적용되는지에 따라 두 가지 표준 위치에 저장됩니다.

  • 화면 0의 루트 창의 RESOURCE_MANAGER 특성
  • 임의의 화면의 루트 창의 SCREEN_RESOURCES 속성

그것으로 끝나지 않습니다.

  • 설정되지 않은 경우 $XENVIRONMENT기본값 인 변수 도 있습니다 . 이것은와 같은 방식으로 사용 되지만 존재 여부에 관계없이 항상 읽습니다 . 전역 설정에 사용하는 동안 파일을 사용 하여 일부 설정을 시스템별로 유지할 수 있습니다 .~/.Xdefaults-hostname.XdefaultsRESOURCE_MANAGER.Xdefaults-hostnamexrdb

아래 나열된 4 번과 5 번 항목은 GTK 3 또는 기타 툴킷이 아닌 순수한 Xlib 프로그램에서만 사용되는 것으로 보입니다.

  • 네 번째 위치는 $XAPPLRESDIR환경 변수가 가리키는 디렉토리 입니다. (이상하게는 변수가 설정되지 않은 $HOME경우 기본값으로 사용됩니다.) 프로그램이 시작될 때 다음 파일 중 하나가 존재하는지 확인합니다 (파일 이름은 프로그램의 클래스 이름과 동일 함).

    • $XAPPLRESDIR/$LC_CTYPE/XTerm
    • $XAPPLRESDIR/language/XTerm
    • $XAPPLRESDIR/XTerm

    ( 첫 번째 구성 요소를 제외한 모든 구성 요소를 제거하여 language파생됩니다 ( $LC_CTYPE예 : en_US.utf-8en)).

  • 다섯 번째 위치는 시스템 전체의 "앱 기본값"디렉토리입니다. 다시 한 번, app-defaults 디렉토리는 프로그램 이름이 지정된 파일이 있으면 프로그램 시작시 점검됩니다. 예를 들어 XLinux (Arch Linux)는 다음을 사용합니다.

    • /etc/X11/$LC_CTYPE/app-defaults/XTerm
    • /etc/X11/language/app-defaults/XTerm
    • /etc/X11/app-defaults/XTerm
    • /usr/share/X11/$LC_CTYPE/app-defaults/XTerm
    • /usr/share/X11/language/app-defaults/XTerm
    • /usr/share/X11/app-defaults/XTerm

    app-defaults 파일은 일반적으로 /usr/share프로그램 자체와 함께 설치 됩니다. 관리자 재정의는로 이동합니다 /etc.


위에서 언급 한 모든 것은 X.org 툴킷 문서-기사 X 툴킷 내장 -C 언어 인터페이스 , 리소스 데이터베이스로드 섹션에 자세히 설명되어 있습니다.

(읽기 : 끔찍 유효 기간) 불행하게도, 나는 그들이 2012 년에 무관하지만 역사적위한 것입니다 주로하기 때문에, X 자원을 설명합니다 최근 사용자 설명서를 찾을 수있는 정보, 당신이 읽을 수있는 X11 R3와 R4를위한 X 윈도우 시스템 사용 설명서를 X 윈도우 시스템 섹션 9 : 리소스 설정 (181 페이지에서 시작)의 설명.


훌륭한 답변이지만 모든 구현이 규칙을 올바르게 따르는 것은 아닙니다. 예를 들어, SunOS 4 및 Solaris 6 응용 프로그램은 나중에 "xrdb"를 명시 적으로 실행하지 않으면 .Xdefaults 변경 사항을 선택하지 않습니다. 앱과 X 서버가 다른 호스트에서 실행될 때 이상한 점이있을 수도 있습니다. 일부 앱은 로컬 파일을 읽고 일부는 X 서버에서 데이터베이스를 읽습니다.
David C.

1
@DavidC .: Xdefaults 동작 위에서 설명한 규칙을 따릅니다 . 경우 xrdb적이 로그인 이후이 X 표시를위한 실행 된 - 인 X 루트 속성이 존재하는 경우, - 다음 Xlib를 전혀 이상의 .Xdefaults를 사용하지 않습니다.
grawity

1
말이 되네요 그러나 ~ / .Xresources의 내용을 읽고 xrdb 데이터베이스를 무시하는 명백하게 중단 된 많은 앱이 여전히 있습니다. 다른 호스트 (다른 ​​.Xresources가있는)에 로그인하고 앱이 로컬에서 실행될 때와 같이 내용을 표시하지 않는 것을 발견하면 실제로 성 가실 수 있습니다.
David C.
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.