FreeBSD連載(50):定制X Window的基本方法
與其他圖形界面相比,X Window是高度可配置的,這是因為X Window本身只是定義了一系列最基本的顯示功能調用,而并沒有規(guī)定圖形窗口應該是什么樣子的,因此大批程序員為X Window開發(fā)了各種不同風格的開發(fā)工具包和窗口管理程序,使得X Window的風格多種多樣。因此X Window的使用者有多種選擇,可以根據(jù)自己的喜好來定制工作站的圖形界面。
顏色深度、分辨率與字體配置:
在前面的設置過程中可以設置X服務器使用多種色彩深度,如8bpp、16bpp、24bpp和32bpp,一般來講色彩深度越大,所能表現(xiàn)的色彩越豐富,而24bpp就被稱為真彩色,能真實的表現(xiàn)圖象的色彩(32bpp實際也只是24bpp,它是為了讓每個象素都占據(jù)獨立的32位雙字,以對齊象素邊界,加速處理速度)。缺省的色彩深度為對應于256色的8bpp,顯然這不足于表現(xiàn)圖象的色彩,在硬件能力滿足的條件下應該使用更高的色彩深度(要受顯存大小和分辨率大小的限制)。例如要設置X服務器工作在16bpp的準真彩色下,可以使用帶參數(shù)的startx或xinit。
$ startx -- -bpp 16
其中前面的兩個--線表示將后面的參數(shù)不加改變的傳遞給X服務器。另一種設置缺省色彩深度的方法是在X的設置文件XF86Config中設置DefaultColorDepth選項。
由于X Window中的色彩深度是可以改變的,為了幫助客戶程序使用具體的色彩,X客戶程序中使用的色彩將通過X服務器映射為真實的色彩。X中還定義了多種標準色的名字,在X程序或資源定義文件中直接使用色彩名字,如Red、Blue,就得到常用的顏色。
X服務器也可以同時支持多種分辨率,并能夠在運行時刻動態(tài)切換它所支持的分辨率。在前面XF86Setup設置程序中的顯示器設置選項中,有部分顯示器能同時設置了幾個顯示模式,然而這些分辨率并不是該顯示器能支持的分辨率的全部,如果是使用xf86config或者手工更改設置文件,還能設置更多的分辨率。當設置了多個分辨率模式的時候,就能在XWindow下使用熱鍵、和向后切換模式,使用、和向前切換分辨率模式,其中和是小鍵盤上的鍵,主鍵盤上的并不能用來切換分辨率。
雖然存在不同的分辨率模式,但是X服務器顯示的虛屏大小仍然相同,虛擬顯示屏大于實際顯示屏,但可以通過鼠標的移動,在實際顯示屏上顯示虛擬顯示屏的不同部分。因此在有多個分辨率的時候,虛擬顯示屏至少應該等同于最大分辨率的大小,這樣不論切換到哪個分辨率,應用程序的窗口仍然保持原有的樣子,只是窗口有可能位于真實的顯示屏外,需要通過移動鼠標來移動虛擬顯示屏,看到應用程序窗口的全貌。由于移動虛擬顯示屏是通過直接控制顯示卡上的寄存器來進行的,不需要在顯存或內存中進行額外的移動或復制操作,因此幾乎不消耗資源,也不影響任何顯示速度。
雖然XFree86缺省已經(jīng)支持了相當豐富的字體,但是還是有可能需要安裝新的字體,例如某種中文字體。X Window的字體應該在配置文件中設置其搜尋路徑,但在啟動X Window之后,也可以使用xset命令來重新設置字體的搜尋路徑。
xset fp+ :增加一個字體搜尋目錄。
xset fp- :刪除一個字體搜尋目錄。
xset fp= :重新設置字體搜尋目錄。
xset fp rehash:更改某個字體目錄中的內容后,強迫系統(tǒng)刷新字體搜尋路徑。
要想使用一些使用者自己設置的字體,就要按下面的步驟將這些字體加入到X Window的搜尋路徑。
將這些字體單獨放在一個目錄下,或者放到系統(tǒng)原有的字體目錄下。
運行 “mkfontdir 該字體目錄” ,構建這個字體目錄(將按照所有的字體,重新生成fonts.dir文件)。
使用 “xset fp+ 該字體目錄” 或 “xset fp rehash” ,使設置生效。
fonts.dir文件中包含該字體目錄下所有字體的名字,以下為一個例子的部分內容,該文件每一行都給出一個字體的名字。
gb16st.pcf.gz -isas-song ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0gb24st.pcf.gz -isas-song ti-medium-r-normal--24-240-72-72-c-240-gb2312.1980-010x20.pcf.gz -misc-fixed-medium-r-normal--20-200-75-75-c-100-iso8859-1gb16fs.pcf.gz -isas-fangsong ti-medium-r-normal--16-160-72-72-c-160-gb2312.1980-0可以看出font.dir中的內容分為兩部分,第一部分為字體文件的名字,第二部分為字體的名字。每個字體的名字用 “-” 將不同的部分分隔開了,這些相互分隔的部分包括字體的開發(fā)者、字體的類別、字體本身的尺寸(磅數(shù))、傾斜度和點的大小,字符間距的類型、字體所為的字符集,以及字符的風格。
可以看出,每個字體的名字相當復雜,然而可以通過定義別名的方式來簡化具體字體的名字,在一個字體目錄下,都有一個對應的fonts.alias的文件,這里就登記了很多字體的別名,使用者也可以自己根據(jù)需要增添。
fixed-misc-fixed-medium-r-semicondensed--13-120-75-75-c-60-iso8859-1variable -*-helvetica-bold-r-normal-*-*-120-*-*-*-*-iso8859-15x7-misc-fixed-medium-r-normal--7-70-75-75-c-50-iso8859-15x8-misc-fixed-medium-r-normal--8-80-75-75-c-50-iso646.1991-irv上面就是某個font.alias的一部分,它的第一列就為簡單易記的別名。在運行X Window時,可以使用xlsfonts來查看系統(tǒng)中可以使用的字體信息,使用xfontsel來查看每種字體的外觀。
定制客戶桌面基本方法
根窗口的特征可以使用xsetroot命令來設置,可以使用它來定制窗口的顏色(背景色和前景色),或者使用一個位圖作為背景等。也可以使用”xset s seconds”來定義屏幕保護的激活時間,”xset s default”將屏幕保護設為系統(tǒng)的缺省配置。
還有很多更強大的X程序能用來定制X的根窗口,設置壁紙和屏幕保護。例如可以使用xv來將gif或jpg等類型的圖片設置為壁紙,這些程序都可以在FreeBSD的Packages Collection和Ports Collection中找到。
X客戶程序通常使用標準的構件,通常這些構件都有一些標準的參數(shù)來定義它們使用的字體、文字的前景色、背景色、滾動條等。這些參數(shù)可以通過更改構件的資源設置,來改變其設置。一般使用用戶個人目錄下的.Xdefaults或.Xresoures作為用戶的個人資源文件,資源文件在啟動時在.xinitrc文件中由xrdb命令載入系統(tǒng)。
除了資源設置之外,標準X客戶程序中的構件也支持標準的命令行選項,可以用來改變窗口構件的屬性:
-borderwith或-bw,框架的寬度,以像素為單位
-foreground或-fg,前景色
-background或-bg,背景色
-display,客戶程序要使用的X服務器的顯示位置
-font或-fn,顯示特殊文字使用的字體
-geometry,窗口的幾何結構,包括位置和大小
-iconic,以圖標方式啟動
-title,標題欄的標題
選擇窗口管理器和桌面環(huán)境
在FreeBSD安裝好XFree86之后,缺省的窗口管理器是twm,這是一個比較簡單的窗口管理器,會使得第一次接觸X Window的使用者對X Window產(chǎn)生不好的印象,但是如果進一步了解X Window系統(tǒng),就會知道X Window本身并沒有包括真正好用的窗口管理器,但是卻存在很多種優(yōu)秀的窗口管理器能達到這個目的,使X Window變得更華麗、更易用。
因此必須從Packages Collection中選擇安裝相應的窗口管理器或桌面環(huán)境,可供選擇的有fvwm95、AfterStep、KDE等。
fvwm95是從另一個窗口管理器fvwm2的進行改進之后的版本,它被設置為與Windows95的桌面非常相似,因此習慣于Windows95界面的個人計算機使用者常常會選擇這個窗口管理器,然而既然使用的是X Window,沒有必要一定還要使用Window95的顯示風格,使用fvwm2、AfterStep等其他窗口管理器來嘗試其他風格更為有益。一般情況下使用者還是會安裝一個fvwm95,fvwm95使用的配置文件是用戶主目錄下的.fvwm2rc95文件,而缺省配置文件為/usr/X11R6/lib/fvwm95/system.fvwm2rc95文件。使用fvwm95時最簡單的啟動文件.xinitrc應包括:
/usr/X11R6/bin/fvwm95
AfterStep是模仿NextStep的窗口管理器,這個窗口管理器精巧而且漂亮,如果不是過于沉迷于Windows95的操作方式,不妨使用這個窗口管理器,它還有幾個派生的管理器,如WindowMaker、enlightenment等。為了充分發(fā)揮AfterStep的華麗,X的顯示屏應該大于800x600的分辨率,并至少使用16bpp的色彩深度。AfterStep的所有配置文件均放置在用戶主目錄下的GNUStep目錄中,相應的啟動文件為:
/usr/X11R6/bin/AfterStep
與前面兩者不同,gnome和KDE不僅僅是一個窗口管理器,還包括大量的應用程序和相關工具(gnome使用enlightenment作為其缺省窗口管理器)。這些桌面環(huán)境包括各種應用程序、控制條、圖形化的設置程序等,使用它們能夠全面享受到圖形桌面環(huán)境的優(yōu)點,但它們占用的系統(tǒng)資源也相對較多。如果是將安裝FreeBSD的計算機用做一臺工作站,那么就應該選擇其中一種桌面環(huán)境,用戶可以根據(jù)自己的喜好來選擇安裝gnome或者KDE。
如果選擇安裝了KDE時,在.xinitrc及.xsession中應該包含的相應啟動命令為:
/usr/local/bin/startkde
在3.2=RELEASE之后,F(xiàn)reeBSD能通過Sysinstall來設置不同的桌面環(huán)境,Sysinstall能安裝相應的軟件包,并在/usr/share/skel中添加dot.xinitrc和dot.xsession文件,這樣在生成用戶時就自動生成.xinitrc和.xsession文件。
配置和使用KDE
KDE不單單是一個窗口管理程序,它包括了使用X Window圖形界面進行操作所需要的各種應用程序。它的主要部分為一個擁有任務條、工具條、快捷圖標的桌面環(huán)境,并包括可用于瀏覽WWW網(wǎng)頁的文件管理器、編輯器、計算器、CD播放器、郵件處理程序、新聞組閱讀程序等等大量的應用程序。
KDE的另一個特點就是包括了對圖形界面外觀的定制程序,一般情況下Unix中進行配置需要修改對應的配置文件,雖然這種方式提供了很大的靈活性,但對于很多不重要的設置,并不需要這么靈活的方式,而要求方便、簡易。在KDE下不需要使用手工更改配置文件,而是通過圖形界面的設置程序進行設置,因此更容易使用。下面為一個KDE界面的例子:
由于KDE是為了高性能的圖形界面開發(fā)的,因此為了獲得較好的觀感,至少應該以800x600分辨率運行X Window,建議使用1024x768以上的分辨率,以充分發(fā)揮KDE的顯示效果。
KDE圖形桌面由桌面背景、快捷圖標、工作欄和任務條組成,每個可以點擊的位置上通常使用左鍵一次點擊啟動相應的功能,使用右鍵點擊出現(xiàn)一個菜單,可以進行相關設置。上圖為進行工作欄和任務條的外觀設置,設置它們顯示的不同的大小和位置。此外,在桌面上使用右鍵可以配置桌面外觀,包括墻紙和屏幕保護。點擊左下角的K圖標可以彈出一個菜單,菜單中包括了KDE環(huán)境提供個多種應用程序,也可以添加對其他應用程序的連接。
與MS Windows不同,KDE(以及大部分X窗口管理器),使用一次點擊啟動應用程序,而不是雙擊。KDE下切換窗口的熱鍵與Windows相同為Alt-Tab。
KDE界面低部工作欄上的各個按鈕都對應一個相應的應用程序,而其中并列的四個按鈕,對應四個不同虛擬屏幕,每個屏幕上的內容各不相同,可以分別配置。KDE最多可支持八個虛擬屏幕,每個窗口只顯示在一個屏幕上,除非使用鼠標將窗口左上角的圖釘標志打開,這樣操作之后這個窗口總顯示在屏幕上,而不管如何切換虛擬屏幕。
KDE的配置工作全部可以通過KDE配置中心(KDE Control Center)來完成。點中左下角的 “K” 圖標,在菜單中選中KDE Control Center或使用工作欄上的快捷圖標,就可以啟動它對KDE的外觀進行配置。
KDE控制中心可以設置KDE桌面環(huán)境的排列方式,如工作欄、任務欄的大小和位置,窗口的風格,使用的顏色,屏幕保護以及其他一些應用程序的相關設置。這些設置也可以在KDE桌面環(huán)境中,使用鼠標右鍵彈出的菜單中的選項來啟動。
由于KDE是一種國際化的應用程序,因此可以使用上面的設置程序將KDE使用的字符設置為中文。當將KDE使用的語言設置為中文時,那么所有KDE的菜單都使用中文,但是這需要中文X服務器或其他中文系統(tǒng)的中文顯示能力的支持,否則KDE雖然顯示的是中文字符,但是顯示的卻會是亂碼。
對于使用XDM登錄方式的系統(tǒng),需要使用xdm以提供系統(tǒng)登錄。雖然用戶登錄后可以從.xsessin中啟動KDE,但仍然擺脫不了xdm過于簡陋的登錄畫面。而KDE的另一個特點就是提供一個xdm的替代程序kdm,這使得系統(tǒng)管理員可以替換掉簡單的xdm界面,使用kdm來提供更漂亮的XDM登錄界面,這使得X Window系統(tǒng)表現(xiàn)得更為華麗。
上圖就是一個kdm的外觀,它同樣也是在KDE控制中心中來進行配置的,只是由于kdm屬于系統(tǒng)程序,因此只有root運行的KDE控制中心才能選擇這一項配置功能。設置KDM,需要選擇KDE配置中心的第一個選項Desktop Manager。
這個選項中可以設置kdm的圖標、出現(xiàn)在kdm的用戶列表中的用戶、或者不出現(xiàn)在kdm的用戶列表中的用于,以及在會話結束時用于關閉系統(tǒng)的指令等。
將工作站用作專用X終端
專用機房中常常使用X終端為公共使用者提供服務,使用者可以通過這些終端以XDM方式登錄到機房中的Unix主機上去。X終端不允許使用者登錄到自己系統(tǒng)中,而只能使用本地X服務器的處理能力,登錄到其他主機上進行使用。
由于個人計算機硬件更為便宜,并且由于硬件的發(fā)展其性能也并不落后,使用個人計算機作X終端也是一種在使用專用X終端之外很不錯的選擇。可以使用FreeBSD作操作系統(tǒng),Xfree86支持X Window系統(tǒng),就能將FreeBSD系統(tǒng)用作專用X終端,這樣的優(yōu)勢是所有的軟件都可以免費得到,就使得在實現(xiàn)幾乎同樣的性能的條件下,卻減少了大量的資金投入。
同樣也可以通過設置使得用戶不能登錄進本地系統(tǒng),而是直接登錄到網(wǎng)絡上的其他Unix主機中去。這需要那臺提供登錄服務的Unix主機運行xdm,這樣X終端就能通過xdmcp協(xié)議在網(wǎng)絡中通過廣播或者直接查詢的方式,查找到運行xdm的主機,并連接上來提供登錄登錄畫面,就如同在本地系統(tǒng)一樣。用作X終端的FreeBSD系統(tǒng)需要以使用特別的參數(shù)運行X,以查找XDM主機。
如果運行XDM的Unix主機和用作X終端的FreeBSD系統(tǒng)在同一個以太網(wǎng)段上,可以使用廣播的方式尋找運行XDM的主機,此時啟動X的命令為:
# /usr/X11R6/bin/X -broadcast
這樣系統(tǒng)上將列出本地所有運行XDM的Unix主機,供使用者選擇登錄。或者可以直接查詢方式,通過query參數(shù)直接與某臺Unix主機相連接,這可以用在客戶機和服務器不在同一個網(wǎng)段上的時候。
# /usr/X11R6/bin/X -query Unixhost
為了使系統(tǒng)一啟動就進入這個登錄狀態(tài),可以將這個命令寫入shell腳本,并放入系統(tǒng)啟動目錄/usr/X11R6/etc/rc.d中。然而此時使用ttys文件進行設置更佳,因為此時可能同時想關閉虛擬控制臺,以防止X終端使用者切換到虛擬控制臺上。
未完,待續(xù)。。。
