X-Resources

使用 Xrender 時對 XClock 進行改造:一條漫長而曲折的道路

  • May 13, 2021

基本上,xclock它是一個很棒的工具,每個基本的 X 設置都將它“板載”。但是,在保持活動狀態的同時進行**配置 xclock(模擬)絕對不適合膽小的人。特別是,如果不深入研究領域,初學者將沒有任何機會配置模擬時鐘,因為您在命令行中設置的所有內容都將僅用於非渲染模式(需要 option )並且預設情況下會被忽略(這意味著,正在使用)。另外,關於它的文件非常糟糕,實際處理的例子很少見。因此,我決定開始自己的方法。XRender``.Xresource``-norender``XRender``XRender

我希望有一種更簡單的方法來完成這一切,但顯然沒有。一方面,這個問題可能會幫助新使用者指導如何為“他們的”進行設置xclock;另一方面,我還想問你們是否有任何方法可以改進我的“配置文件”(注意引號)。奇怪的是,.Xresources它被廣泛認為是“過時的”和“上個世紀的”,但是如果您使用的應用程序確實依賴於老式的方式, usingxrdb.Xresources整個 caboodle 怎麼辦?

我個人喜歡*“夜間設計”*,因為它非常適合我的桌面風格。所以這就是我所做的:

$ 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代表 “red, green, blue, alpha” - 其中第四個參數 alpha將指示十六進製表示法的不透明度級別:a00將使時鐘指針或刻度線不可見;aff將關閉任何不透明度。

到現在為止還挺好。由於我們不想重新啟動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.

為什麼呢?

到目前為止,我認為 the*只是一個萬用字元的含義XClock<whatever><parameter>

你的假設是正確的。使用的資源規範*是萬用字元。您的問題是因為您目前載入的資源數據庫中可能同時具有 anXClock*和 anXClock.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 xclockappres 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,將更喜歡顯式資源而不是萬用字元資源,並且我得到了非 alpha 顏色的時鐘。

要解決此問題,請使用-load操作而不是操作(如果您不提供任何選項,-mergexrdb 預設為,即與 相同)。-load``xrdb file``xrdb -load file

這有效地清除了您的資源數據庫,載入系統預設值,然後在該文件中添加您的 XClock 資源設置。要知道的一個好技巧是您可以使用xrdb /dev/null. 您可以通過以下方式獲取現有資源數據庫的副本(包括系統預設值):xrdb -query -all可以將其重定向到文件,然後根據您的喜好進行編輯。

在大多數係統上,將它們放在您的 .Xresources 或 .Xdefaults 中意味著它們將在創建 X 會話時被載入,因此您不必從 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. 

引用自:https://unix.stackexchange.com/questions/89304