跳轉到內容

X11 指南/啟動會話

來自華夏公益教科書,開放的書籍,開放的世界

作者 · 歷史 · 列印 · 許可

介紹 · 配置 · 構建 · 啟動會話 · 啟動程式 · 字型 · 視窗管理器 · Xt 客戶端 · 政治歷史 · 參考資料和連結

補充: 命令

編輯此模板

啟動會話

[編輯 | 編輯原始碼]

本章介紹 **如何啟動 X11 會話**。

本章將回答以下問題

  • 啟動 X11 的不同方法有哪些?
  • 如何啟動 X11 和視窗管理器?
  • 如何控制啟動哪些視窗管理器和程式?
  • 是否有辦法使字型看起來更漂亮?

啟動 X11 的方法

[編輯 | 編輯原始碼]

回想一下,X11 由一個 *X 伺服器* 和多個客戶端組成。如果您只啟動 X 伺服器,您將得到一個空白螢幕。需要的是一種啟動 X 伺服器以及一些預設客戶端(如視窗管理器)的方法。

首先,一些 Unix 控制檯提供純文字登入提示符。在這種情況下,首先像往常一樣登入以獲取您的 Unix shell,然後使用 **xinit** 或 **startx** 命令在 shell 中啟動 X 伺服器和預設客戶端。

其次,一些 Unix 控制檯具有圖形登入提示符!在這種情況下,系統啟動指令碼已經啟動了 X 伺服器;一個名為 *顯示管理器* 的程式已經繪製了一個圖形使用者介面,允許您鍵入使用者名稱和密碼。在這種情況下,當您登入時,您將立即開始使用 X11。

第三,一些系統正在使用非 X11 的圖形環境。例如,Mac OS X 有其自己的 *Quartz* 系統。在 Mac OS X 中,您啟動 X11.app 程式,這是一個 X 伺服器,允許 X 客戶端出現在與您其他 Mac 程式相同的桌面上。類似的程式也存在於 Microsoft Windows(不是 Unix 平臺)中。

xinit 和 startx

[編輯 | 編輯原始碼]

有一個名為 **startx** 的程式可以啟動 X11。它很簡單易用

$ startx

這將為您提供一些預設環境。但是,如果您想自定義預設環境,使用 **xinit** 可能更容易。**startx** 指令碼會查詢幾個檔案(~/.Xresources, ~/.Xmodmap,……)並載入它們;它使用的檔案在每個系統上都不同,因此您可能需要閱讀系統上的 **startx** 指令碼以瞭解它的工作原理。

相反,**xinit** 程式只啟動一個 X 伺服器並執行一個~/.xinitrc指令碼。無需記住您的系統是否將其稱為“.Xresources”或“.xresources”或“.xrdb”;您只需在“~/.xinitrc”中指定您想要的確切行為。

在沒有 .xinitrc 的情況下使用 xinit

[編輯 | 編輯原始碼]

如果您破壞了“.xinitrc”,或者還沒有“.xinitrc”,那麼您可以啟動一個。例如

these will work
$ xinit /usr/X11R6/bin/xterm
$ xinit $(which xterm)
this will NOT work
$ xinit xterm

這將啟動一個 X 伺服器和一個名為“xterm”的程式,您可以使用它來啟動更多 X 客戶端。最後一行會失敗(即使“xterm”在您的 PATH 中),因為 xinit 假設它是一個引數,而不是一個程式。您必須在程式名稱中包含一個斜槓 /。

如果您有 KDE,您可以找到您的 **startkde** 指令碼

$ which startkde
/usr/local/bin/startkde

然後您可以啟動 KDE

$ xinit /usr/local/bin/startkde

這將允許您使用 Konqueror 找到您的“.xinitrc”並使用 Kate 編輯它。(瀏覽您的主目錄時,在“檢視”選單中檢查“顯示隱藏檔案”。)

如果您看到類似的提示

$ xinit
/bin/ksh: xinit: not found

… 那麼您需要新增/usr/X11R6/bin到您的 PATH 環境變數中。

如何編寫 .xinitrc

[編輯 | 編輯原始碼]

如果您沒有在程式名稱中指定斜槓,那麼“xinit”將使用您的.xinitrc指令碼,該指令碼位於您的主目錄中。

$ xinit            # starts .xinitrc
$ xinit xterm      # passes "xterm" as argument to .xinitrc

在使用“xinit”之前,需要一個名為.xinitrc的檔案,該檔案位於他們的主目錄中。因為檔名以點號開頭,所以該檔案通常是不可見的。有一些方法可以從 shell 中處理不可見檔案

$ cd               # changes current directory to home directory
$ ls -a            # list all files, including dotfiles
$ ls .xinitrc      # list the .xinitrc file
$ vi .xinitrc      # edit .xinitrc using vi
$ emacs .xinitrc   # edit it using Emacs

“.xinitrc”只是一個 Bourne shell 指令碼。您可以嘗試使用 **sh .xinitrc** 執行它,但它會失敗,除非您已經啟動了 X 伺服器。您可以像在 Unix shell 中鍵入命令一樣在其中輸入命令。如果您不理解這一點,請嘗試從下面的示例開始。

這是一個簡單的一行“.xinitrc”示例

exec startkde

“startkde”命令啟動 KDE 桌面環境。此命令不會在您登出 KDE 之前結束。通常,shell 會等待 KDE 結束,然後執行下一條命令。此命令前面的“exec”字首告訴 shell 這是最後一條命令,因此 shell 無需等待執行下一條命令。“exec”在此情況下是可選的。

這是一個更復雜的“.xinitrc”示例

ulimit -Sn 512
/usr/bin/mixerctl monitor.master=5,5
/usr/X11R6/bin/xmodmap -e 'keycode 107 = BackSpace'
case "$#" in
0)
  exec sh /etc/X11/xinit/xinitrc
  ;;
*)
  session="$1"
  shift
  exec "$session" "$@"
 ;;
esac

# NOTREACHED
exec /usr/X11R6/bin/xterm

第一行,“ulimit -Sn 512”,是一個 Bourne shell 命令,用於將開啟檔案“-n”的軟限制“-S”增加到 512。(使用 **ulimit -a**,或者如果您的 shell 不是 Bourne shell,請使用 **sh -c 'ulimit -a' **,檢視您的預設限制。)下一條命令,** /usr/bin/mixerctl monitor.master=5,5 **,將 OpenBSD 或 NetBSD 系統上的音量設定為左右聲道均為 5。在其他 Unix 系統上,命令將不同。可以新增許多其他命令。

第三行,“/usr/X11R6/bin/xmodmap -e 'keycode 107 = BackSpace'”(或者只是“xmodmap -e 'keycode 107 = BackSpace'”),調整鍵盤對映。對於只進行少量調整的使用者來說,這可能比載入一個 * .Xmodmap* 檔案更容易。(您可以使用 **xmodmap ~/.Xmodmap** 載入此類檔案。)

其餘行構成了 Bourne Shell “case”語句。它們處理命令列引數以啟用以下功能

$ xinit gnome-session # start GNOME
$ xinit startkde,GNOME # start KDE
$ xinit fvwm,KDE# start window manager fvwm
$ xinit xtermfvwm       # start an xterm without a window manager

請注意,由於沒有一個程式在其中包含斜槓,因此它們由“.xinitrc”指令碼處理,而不是直接由“xinit”處理。

示例~/.xsession:

. ~/.profile

managers=startkde,fvwm,wmaker
prompt="Welcome, $USER@$(hostname), select window manager:"

# miscellaneous setup
xmodmap -e 'keycode 107 = BackSpace'
test -f /usr/local/GNUstep/System/Makefiles/GNUstep.sh &&
        . /usr/local/GNUstep/System/Makefiles/GNUstep.sh

manager="$(xmessage -buttons "$managers" -print -center "$prompt")"
test -z "$manager" && exec fvwm
exec "$manager"

擷取螢幕截圖

[編輯 | 編輯原始碼]

用於轉儲 X 視窗影像的標準實用程式是xwd(1),xwd 生成一個 XWD 影像。它可以以以下方式呼叫

xwd -root -out root.xwd

xwd 還可以用於轉儲使用滑鼠選擇的單個視窗或使用-id選項後跟相應的視窗 ID;有關更多資訊,請參見man 1 xwd [1]。在遠端執行時,xwd 對於擷取正在操作的模態選單的螢幕截圖非常有用。GIMP 可用於將 XWD 檔案轉換為其他更常見的格式,例如 PNG;等效地,命令列實用程式 **xwdtopnm**(Netpbm 實用程式套件的一部分)可用於將 XWD 檔案轉換為 PNM 格式,然後可以將其轉換為任何常見的格式,例如使用以下 管道

xwd | xwdtopnm | pnmtopng > screendump.png

也可以使用convert實用程式(在此處可用)將 XWD 影像轉換為許多其他格式:convert root.xwd root.XYZ,其中 XYZ 是所需格式的典型檔名副檔名。


華夏公益教科書