Xrender를 사용하여 XClock 변환: 길고 구불구불한 길

Xrender를 사용하여 XClock 변환: 길고 구불구불한 길

기본적으로 xclock이는 훌륭한 도구이며 모든 기본 X 설정에는 "내장"되어 있습니다. 하지만,구성 xclock(시뮬레이션)하지만활동적인 상태를 유지하는 XRender것은 확실히 마음이 약한 사람을 위한 것이 아닙니다. 특히, 초보자는 구성할 기회가 없습니다.시뮬레이션.Xresource시계 명령줄에서 설정한 모든 내용이 표시되므로 해당 영역을 자세히 조사할 필요가 없습니다.비렌더링 모드에서만 사용 가능(옵션 필수 ) 기본적으로 무시됩니다( 옵션이 사용 중임을 -norender의미 ). XRender또한 이에 대한 문서는 매우 열악하고 실제로 예제는거래XRender암탉의 이빨 만큼 희귀합니다. 그래서 나는 나만의 접근 방식을 시작하기로 결정했습니다.
이 모든 작업을 더 쉽게 수행할 수 있는 방법이 있었으면 좋겠지만 아직은 없는 것 같습니다. 첫째, 이 질문은 새로운 사용자에게 "그들의 프로필"을 설정하는 방법을 안내하는 데 도움이 될 수 있습니다 xclock. 반면에 내 "프로필"을 개선할 수 있는 방법이 있는지도 묻고 싶습니다(인용문 참고). 이상하게도 .Xresources이 앱은 "오래된", "지난 세기의" 것으로 널리 간주됩니다. 하지만 앱을 사용하고 있다면 어떻게 될까요?하다구식 방식에 의존하여 , 및 all을 사용 xrdb합니까 .Xresources?

나는 개인적으로 하나를 선호한다"밤 디자인"내 데스크탑 스타일에 완벽하게 맞기 때문입니다. 이것이 내가 한 일입니다:

$ touch ~/.Xresources
$ vi ~/.Xresources

XClock*foreground: #fbfbfb
XClock*background: #000018
XClock*update: 1
XClock*geometry:          210x210+1020+12
XClock.Clock.majorColor:  rgba:f0/f0/19/7b
XClock.Clock.minorColor:  rgba:a0/c0/f0/c0
XClock.Clock.hourColor:   rgba:c9/66/11/72
XClock.Clock.minuteColor: rgba:00/82/9f/72
XClock.Clock.secondColor: rgba:50/93/30/6f

rgba네 번째 매개변수인 "빨간색, 녹색, 파란색, 알파"를 나타냅니다. α, 16진수 표기법으로 불투명도 수준을 나타냅니다. a는 00시계 바늘이나 눈금 표시를 보이지 않게 만들고, a ff는 모든 불투명도를 끕니다.
여태까지는 그런대로 잘됐다. X이러한 사항을 적용하기 위해 서버를 다시 시작하고 싶지 않기 때문에 설정을 이미 존재할 수 있는(또는 평소와 같이 존재하지 않을 수 있는) 설정으로 병합하기만 하면 됩니다.

$ xrdb -merge ~/.Xresources && xclock &

자랑하기 싫지만 솔직히 그럴 것 같다고 생각해요방법내 데스크탑의 기본 지루한 디자인보다 낫습니다.

그러나 내가 원하는 방식으로 작동시키려는 노력 중에 내 측면에서도 문제가 발생했습니다. 실제로 XClock.Clock.<parameter>다음 리소스 파일에서 구문을 "훔쳤습니다".

/etc/X11/app-defaults/XClock-color

흥미롭게도 로 끝나는 모든 매개변수는 ...Color동일해야 합니다.XClock..<parameter>app-defaults예를 들어 ; 와 같은 구문은 XClock*hourColor: rgba:ff/ff/ff/80시침을 흰색으로 만들지 않으며 불투명도를 0x80.

왜 이런 일이 발생합니까?
지금까지 나는 이것이 *단지 와일드카드 의미라고 생각합니다 XClock<whatever><parameter>.

답변1

당신의 가정은 정확합니다. 와일드카드 문자를 사용한 리소스 사양입니다 *. 귀하의 문제는 귀하가둘 다하나와 현재 로드된 리소스 데이터베이스의 XClock*사양입니다 . XClock.Clock이 경우 와일드카드 항목보다 명시적 항목을 선호합니다. 다음 명령을 사용하여 리소스 데이터베이스에서 현재 XClock에 대해 설정된 내용을 확인할 수 있습니다 appres XClock.

 appres XClock
 XClock.input:   false

와일드카드 리소스를 사용하여 리소스 파일을 생성하는 경우:

XClock*foreground: #fbfbfb
XClock*background: #000018
XClock*update: 1            
XClock*geometry:          210x210+1020+12
XClock*majorColor:  rgba:f0/f0/19/7b
XClock*minorColor:  rgba:a0/c0/f0/c0
XClock*hourColor:   rgba:c9/66/11/72
XClock*minuteColor: rgba:00/82/9f/72
XClock*secondColor: rgba:50/93/30/6f

그런 다음 작업을 사용하여 로드하면 xrdb -merge xclock다음 appres XClock이 표시됩니다.

$ appres XClock
XClock*secondColor:     rgba:50/93/30/6f
XClock*foreground:      #fbfbfb
XClock*hourColor:       rgba:c9/66/11/72
XClock*update:  1
XClock*background:      #000018
XClock*geometry:        210x210+1020+12
XClock*majorColor:      rgba:f0/f0/19/7b
XClock*minorColor:      rgba:a0/c0/f0/c0
XClock.input:   false
XClock*minuteColor:     rgba:00/82/9f/72

xclock을 실행하면 멋진 "밤" 테마가 표시됩니다. 이제 해당 리소스 파일을 편집하고 와일드카드 리소스를 명시적 리소스로 바꾸려면 다음과 같이 하십시오( !주석 처리된 줄 참고).

XClock*foreground: #fbfbfb
XClock*background: #000018
XClock*update: 1
XClock*geometry:          210x210+1020+12
XClock.Clock.majorColor:  rgba:f0/f0/19/ff
XClock.Clock.minorColor:  rgba:a0/c0/f0/ff
XClock.Clock.hourColor:   rgba:c9/66/11/ff
XClock.Clock.minuteColor: rgba:00/82/9f/ff
XClock.Clock.secondColor: rgba:50/93/30/ff
!XClock*majorColor:  rgba:f0/f0/19/7b
!XClock*minorColor:  rgba:a0/c0/f0/c0
!XClock*hourColor:   rgba:c9/66/11/72
!XClock*minuteColor: rgba:00/82/9f/72
!XClock*secondColor: rgba:50/93/30/6f

리소스 파일을 다시 병합하면 이제 다음과 같이 xrdb -merge xclock표시 appres XClock됩니다.

XClock.Clock.secondColor:       rgba:50/93/30/ff
XClock.Clock.minorColor:        rgba:a0/c0/f0/ff
XClock.Clock.hourColor: rgba:c9/66/11/ff
XClock.Clock.minuteColor:       rgba:00/82/9f/ff
XClock.Clock.majorColor:        rgba:f0/f0/19/ff
XClock*secondColor:     rgba:50/93/30/6f
XClock*foreground:      #fbfbfb
XClock*hourColor:       rgba:c9/66/11/72
XClock*update:  1
XClock*background:      #000018
XClock*geometry:        210x210+1020+12
XClock*majorColor:      rgba:f0/f0/19/7b
XClock*minorColor:      rgba:a0/c0/f0/c0
XClock*minuteColor:     rgba:00/82/9f/72
XClock.input:   false

방법에 주목하세요둘 다XClock 클래스에 대한 명시적 리소스와 와일드카드 리소스가 나열됩니다. 이 경우 xclock와일드카드 리소스보다 명시적 리소스를 선호하며 알파 색상이 아닌 시계를 얻습니다.

이 문제를 해결하려면 -loadaction 대신 -mergeaction을 사용하십시오( 즉, -load옵션이 제공되지 않은 경우 xrdb의 기본값은 입니다 ).xrdb filexrdb -load file

이렇게 하면 리소스 데이터베이스가 효과적으로 지워지고 시스템 기본값이 로드된 다음 파일에 XClock 리소스 설정이 추가됩니다. 알아두면 좋은 팁은 "시스템 기본값 복원"을 사용할 수 있다는 것입니다 xrdb /dev/null. 기존 리소스 데이터베이스(시스템 기본값 포함)의 복사본을 xrdb -query -all파일로 리디렉션한 다음 원하는 대로 편집하여 얻을 수 있습니다 .

대부분의 시스템에서 이를 .Xresources 또는 .Xdefaults에 넣는 것은 X 세션이 생성될 때 로드된다는 의미이므로 X 세션 간에 수동으로 로드할 필요가 없습니다.

나는 와일드카드를 사용하여 대부분의 응용 프로그램을 검정색 배경에 흰색 텍스트로 설정합니다. (저는 흰색 배경에 검정색 텍스트를 좋아하지 않습니다.)

*background: #000000
*foreground: #ffffff

xclock에 대해 설정할 수 있는 리소스는 매뉴얼 페이지에 설명되어 있습니다(대부분의 X11 명령에는 매뉴얼 페이지에 설명된 리소스가 있습니다).

또 다른 유용한 점은 대부분의 X11 명령에 -name인수를 전달할 수 있다는 것입니다. 이를 통해 기본 애플리케이션 설정과 관계없이 리소스를 가질 수 있습니다. 예를 들어 다음과 같은 경우가 있습니다.

Leary*background: #ff0000

리소스 설정으로 xclock을 실행하면 xclock -name Leary배경이 강렬한 빨간색인 xclock이 표시됩니다. 명시적/와일드카드 XClock 리소스 설정을 로드한 다음 Leary클래스 설정의 설정으로 재정의합니다. 그런 다음 이를 사용하여 xterm와 같은 설정을 적용할 수 있습니다 xterm -name Leary.

대부분의 X11 명령은 다양한 "표준" 명령줄 옵션을 사용합니다:

-display host:n
     Location of the X server. 
-geometry wxh+x+y
     Window size and location. 
-bg color
     Window background color. 
-fg color
     Text and graphics color. 
-fn font
    Text font. 
-iconic
    Initial window to be started iconized. 
-title strings
    Window header title. 

관련 정보