在Debian上用FVWM做自己的桌面


用FVWM做自己的桌面

1 前言

我是在大學時學習嵌入式系統的過程中步入Linux世界的,看過許多介紹和比 較各種操作系統的文章,當然也包括王垠的文章《完全用Linux工作》,曾經 追求三維桌面等絢麗的效果,也曾試圖在文本界面下干所有事情以追求極致 的效率。發現了Fvwm后,才知道炫麗與效率是可以完美統一的。於是在Fvwm 上初步的探索。但是,正如前輩門所說,要掌握Fvwm真不簡單,因為學業的 原因,最后還是放棄了。如今,工作之余,想不斷充實自我,於是重拾Fvwm 之夢。用了兩周時間證明,當真靜心而為時,完成一個自己的桌面並不太難。

2 學習步驟

FVWM簡明使用指南 是不可多得的中文入門指南,對常用命令、窗口上下文、鼠標和 鍵盤、函數、窗口樣式、菜單、按鈕、模塊等進行了講解。但是要想真的學懂Fvwm, 關鍵還在於自己動手做。自己動手又分兩個階段,一是改用別人的配置文件,二是 自己從零開始寫真正適合自己的配置文件。寫配置文件時關鍵在推斷,驗證,堅持。 推斷就是思考控制預定效果的變量可能是哪個,在哪個手冊里可以查到;驗證就是 按照所想到手冊中查找,學習;堅持就是如果遇到困難千萬不要放棄,再想辦法吧。

我在學習過程中查找了許多網上的資料,有些看似簡單但卻最大程度上影響着桌面 外觀的變量最作者們忽略了。比如虛擬桌面和FvwmPager之間的關系,Fvwm按鈕的位 置,桌面工作區的大小等。在這里,我不打算詳細地記述配置的每一個步驟,只是 把配置中的心得和體會記下來,與同仁們共享。

3 准備

要配置出滿意的桌面,一些准備工作是必不可少的。

3.1 軟件包

下面這些軟件包是必須的,保證Fvwm能呈現出與我的桌面一樣的效果:

  • Xorg 圖形服務
  • Fvwm 窗口管理器
  • Rox 文件管理
  • xwd 窗口dump工具
  • ImageMagick 在腳本中處理圖片的工具
  • xloadimage 為桌面加載背景圖片的工具
  • xscreensaver 屏幕保護程序
  • update-menu 用於自動為Fvwm生成菜單的腳本,依賴於menu軟件包
  • conky 系統監控和桌面美化。網上關於其如何配置的教程很多,除了一般 系統監控,還可以顯示新聞頭條、天氣等。我運用shell腳本實現對筆記 本電池電量監控,做到了顯示電量,電量不足是用聲音報警,當電量低 至某一數值時強制電腦休眠以保護數據。

還有許多好軟件值得一用,在這里推薦一下吧。

  • Xterm 好用的終端,支持中文顯示。
  • Emacs 起強大的文件編輯器,神之編輯器,
  • Gvim 輕量級的文件編輯器,編輯器之神
  • gimp 類似於photoshop的圖片處理工具
  • gthumb 類似於Acdsee的圖片查看器
  • audacidus 音頻播放器
  • vlc 全能的視頻播放器
  • rox 高可定制的文件管理器
  • recoll 桌面搜索利器
  • libreoffice 辦公套件,到5.0版了文檔編輯器還有一個Bug:在Ms Word 中設置了行列網絡對齊的話用libreoffice打開出現版式不正確,把網格對齊去掉就可以了。
  • udev USB設備監控服務。配合pmount和shell腳本實現U盤和移動硬盤自動掛載。

3.2 字體

任意你喜歡的字體,中文字體要求是 iso106460 編碼。

3.3 圖片

桌面背景、菜單和按鈕均可使用圖片,適當的圖片為桌面增色不少。常用格 式有 xpm 和 png,常用大小有 16x16, 22x22, 32x32, 64x64,根據實際情 況定制大小也可以。桌面背景圖片要根據顯示分辨率進行下載,或者下載后用gimp 等處理相應大小。

3.4 參考資料

Fvwm的手冊是最好的參考資料。關於Fvwm的總體的配置,比如屏幕、窗 口、菜單、鍵盤、鼠標、顏色等在 "man fvwm" 中查看,關於各模塊的在相應的模 塊中查找,如 "man fvwm-buttons"。

4 環境

Linux debian 3.2.0-4-amd64 #1 SMP
Debian 3.2.57-3 x86_64 GNU/Linux
fvwm 2.5.30 compiled on May 16 2012 at 00:12:14 with support for:
ReadLine, RPlay, Stroke, XPM, PNG, SVG, Shape, XShm, SM, Bidi text,
Xinerama, XRender, XCursor, XFT, NLS

5 布局

我不主張一味追求炫酷而忽略易用,配置的桌面要”簡潔、高效、優雅“, 這也是我寫程序的原則。我設想的桌面要有任務欄、菜單和快捷按鈕、虛擬 桌面、桌面圖標、窗口列表等。

 快捷按鈕區(FvwmButtons,FvwmPager)     系統狀態監控區(Conky)   
             桌面工作區(FvwmIconBox,FvwmWinList)             
                                                                
                                                                
                                                                
                                                                
                     任務欄(FvwmTaskBar)                      

貌似應該上張效果圖才行啊:

6 配置

Fvwm的配置文件為"~/.fvwm/.fvwm2rc",如果沒找到,可自己創建一個。推 薦的做法找一個樣例文件進行修改,”/usr/share/fvwm/"下面的 system.fvwm2rc-sample-95以及 system.fvwm2rc-support也是個選擇,但是 太大了,不適合入門級朋友。當然,你也可以在我的配置文件上進行修改。

下面是配置過程中的注意事項:

6.1 文件結構

配置文件要有好的結構,通常分為配置文件說明、環境變量設置、啟動和退 出函數、顏色與主題、默認設置、鼠標綁定、鍵盤綁定、光標、菜單樣式、 模塊配置、功能函數庫、菜單數據等。

除此之外,Fvwm資源也需要良好的結構。

  • images 存放圖片和圖標
  • images/backgroud 存放桌面背景
  • sounds 存放需用到的聲音文件
  • scripts 存放Conky腳本及其他腳本
  • tmp 存放臨時文件,比如窗口縮小時產生的圖標、屏幕或窗口截圖等

6.2 環境變量

ImagePath 用於設置圖片所在目錄, 注意 路徑末尾要有 斜線

SetEnv 用於自定義環境變量,目的是便於文件的修改, 注意 引用變量采 用 $[var] 的形式。

6.3 啟動和退出

InitFunction 在Fvwm啟動時運行,但重啟時不運行。此時加載桌面背景, 啟動conky和屏保,刪除臨時文件夾中的數據。

StartFunction 在Fvwm啟動時和重啟時均要運行。此時要加載相應模塊。 注意 FvwmIndent、FvwmWinList這些模塊由特定的按鍵觸發,不需在此加載。 FvwmEvent是為把自定的圖標化函數DeThumbnail綁定到deiconfiy事件而必須加載的。

ExitFunction 中要用 All (command) Close 才能把所有同名進程結束。

6.4 顏色和主題

這里可以定義多個顏色和窗口裝飾,供以后使用。窗口裝飾可以用點線畫,也可以 用圖片。具體如何定義,Fvwm簡明使用指南中有介紹,手冊中講得更詳細。

6.5 默認設置

這里定義桌面大小,默認的窗口樣式、字體、鼠標、焦點和位置策略、窗口 動畫等。

DeskTopSize 定義虛擬桌面的大小,也決定了FvwmPager的行和列。我決定把 FvwmPager模塊用Swallow放到FvwmButtons中,於是定義成把虛擬桌面定義成1行4 列。

EwmhBaseStruts 定義了窗口最大化的位置,也就是桌面工作區的大小。 注意 這里的最大化是 Maximize不加任何參數時的效果,而 "Maximize ewmhiwa true 100 100" 會把窗口最大化到與 Screen 相同大小。在 fvwm 手冊頁中可查得 ewmhiwa causes fvwm to ignore the EWMH working area7 是窗口管理 器的增強能力。

另外桌面圖標的位置卻不是由 EwmhBaseStruts 決定的,而是由 IconBox 的樣式 決定的。

SetEnv fvwm_icon_size 64
Style * IconBox 1 50 -290 -50,IconGrid $[fvwm_icon_size] $[fvwm_icon_size]*9/16,IconFill t l

這句話意為 IconBox 的大小是從距屏幕左側 1 像素,上側 50 像素的位置起,到距右側 290 像素,下側 50 像素的位置; IconGrid 定義的網格的大小,每個網格只能放 一個圖標;IconFill 定義了圖標填充的方向,其中 t 是 top,b 是 bottom ,l 是 left ,r 是right 的簡寫。

6.6 鼠標和鍵盤綁定

窗口上下文由下圖表示,在綁定鼠標和鍵盤時都要用到:

# -----------------------------------------------------------------
# Contexts:
#     R = Root Window                 rrrrrrrrrrrrrrrrrrrrrr
#     W = Application Window          rIrrrrFSSSSSSSSSFrrrrr
#     F = Frame Corners               rrrrrrS13TTTT642Srrrrr
#     S = Frame Sides                 rIrrrrSwwwwwwwwwSrrrrr
#     T = Title Bar                   rrrrrrSwwwwwwwwwSrrrrr
#     I = Icon                        rIrrrrFSSSSSSSSSFrrrrr
#                                     rrrrrrrrrrrrrrrrrrrrrr
# Numbers are buttons: 1 3 5 7 9   0 8 6 4 2
#
# Modifiers: (A)ny, (C)ontrol, (S)hift, (M)eta, (N)othing
# -----------------------------------------------------------------

鼠標和鍵盤綁定的定義方式:

Mouse 按鈕 位置 修飾鍵 命令

Key 按鍵 位置 修飾鍵 命令

其中,鼠標的按鈕用 1-5 個數字表示,1-左鍵,2-中鍵,3-右鍵,4-滾輪上滾, 5-滾輪下滾。位置就是窗口上下文,用數字和字母表示,可同時指定多個位置,修 飾鍵中 A-任何按鍵,N-不按鍵。

下面是兩個例子:

# 按Ctrl鍵同時鼠標左鍵點擊窗口標題位置讓窗口最大化
Mouse 1     T       C   Maximize
# 不管鼠標在任何位置,按Shift + Ctrl + F7,將所有窗口最小化,即顯示桌面
Key   F7    A       SC  FuncFvwmIconifyAll
Key   F10   A       C   Pick Thumbnail

注意 鍵盤綁定中的 Pick 意為命令作用在獲取焦點的窗口上,如果沒有窗口具 有焦點,則要求鼠標選擇一個對象,並將命令作用其上。

接下來,對於鼠標和快捷鍵,你想怎么改就怎么改,一切由你定。

下面是綁定的快捷鍵,僅供參考:

Alt+F1             終端
Ctrl+F1            Fvwm控制台
Alt+F2             家目錄
Ctrl+F2            我的電腦(/media)
Alt+F4             關閉窗口
Ctrl+Shift+F4      關機對話框
Alt+F5             隱藏窗口
Alt+F6             窗口右移一個桌面
Ctrl+F6            窗口左移一個桌面
Ctrl+Shift+F7      最小化所有窗口
Alt+F10            窗口最大化
Ctrl+F10           窗口最小化
Ctrl+Shift+F10     窗口最大化到與屏幕一致
Alt+F11            顯示窗口屬性
Alt+F12            窗口截圖
Ctrl+F12           桌面截圖

6.7 模塊配置

Fvwm可用模塊有:

  • FvwmAnimate (produces animation effects when a window is iconified or de-iconified)
  • FvwmAuto (an auto raise module)
  • FvwmBacker (to change the background when you change desktops)
  • FvwmBanner (to display a spiffy XBM, XPM, PNG or SVG)
  • FvwmButtons (brings up a customizable tool bar)
  • FvwmCommandS(a command server to use with shell's FvwmCommand client)
  • FvwmConsole (to execute fvwm commands directly)
  • FvwmCpp (to preprocess your config with cpp)
  • FvwmDebug (to help debug fvwm)
  • FvwmDragWell (the place to drag&drop to)
  • FvwmEvent (trigger various actions by events)
  • FvwmForm (to bring up dialogs)
  • FvwmGtk (to bring up GTK menus and dialogs)
  • FvwmIconBox (like the mwm IconBox)
  • FvwmIconMan (a flexible icon manager)
  • FvwmIdent (to get window info)
  • FvwmM4 (to preprocess your config with m4)
  • FvwmPager (a mini version of the desktop)
  • FvwmPerl (a Perl manipulator and preprocessor)
  • FvwmProxy (to locate and control obscured windows by using small proxy windows)
  • FvwmRearrange (to rearrange windows)
  • FvwmSave (saves the desktop state in .xinitrc style)
  • FvwmSaveDesk (saves the desktop state in fvwm commands)
  • FvwmScript (another powerful dialog toolkit)
  • FvwmScroll (puts scrollbars on any window)
  • FvwmTabs (a generic tabbing module)
  • FvwmTaskBar (a Windows like task bar)
  • FvwmTheme (managed colorsets obsolete)
  • FvwmWharf (an AfterStep like button bar)
  • FvwmWindowMenu (a configurable fvwm menu listing current windows)
  • FvwmWinList (a window list).

我用到的模塊有:FvwmAuto-窗口自動提升,FvwmAnimate-窗口放大縮小動 畫,FvwmEvent-事件鈎子, FvwmTaskBar-任務欄,FvwmButtons-快捷按鈕 FvwmPager-虛擬桌面顯示, FvwmIconBox-桌面縮略圖標, FvwmWinList-窗口列 表,FvwmConsole-Fvwm控制台,FvwmScript-關機對話框,FvwmIndent-窗口屬性信息。

用" Style 模塊 設置 " 設置窗口的樣式,這時決定相應模塊是否有標題, 是不可移動,是否在WindowList中顯示等。

FvwmPager中顯示了虛擬桌面,它可以被Swallow到按鈕中,FvwmWinList就 是在用Alt+Tab進時顯示的窗口列表。

FvwmButtons、FvwmPager、 FvwmTaskBar和FvwmWinList的位置、大小、顯 示效果、鍵盤和鼠標行為的配置請看相應手冊。

6.8 圖標化

這只是一個炫酷的效果罷,借助第三方工具xwd在桌面上顯示窗口的快照圖 標。圖標的擺放位置由IconBox的大小、位置、方向等設置確定。

這里有個關鍵就是在窗口最大化時要執行圖標刪除操作,用FvwmEvent實現:

*FvwmEvent: deiconify DeThumbnail

意思是當觸發 deiconify 事件時,執行自定義函數 DeThumbnail,因為Thumbnail 在生成了一些臨時圖片,要由 DeThumbnail 函數來刪除,自能由事件觸發。

6.9 函數庫

函數庫中定義了多次使用的功能函數,比如顯示消息,屏幕截圖等。主要函數有:

FuncFvwmIconifyAll              ----  所有窗口最小化,顯示桌面
FuncFvwmShowMessage title msg   ----  在以title為標題的對話框中顯示msg
FuncFvwmWindowCreateScreenshot  ----  生成窗口快照並存在~/.fvwm/tmp文件夾下
FuncFvwmDesktopCreateScreenshot ----  生成桌面快照並存在~/.fvwm/tmp文件夾下
FuncFvwmViewInfo cmd            ----  在終端中查看命令cmd的info手冊
FuncFvwmViewManPage cmd         ----  在終端中查看cmd的man手冊
FuncFvwmViewFile file           ----  在終端中用less查看文件file
FuncFvwmEditFile file           ----  檢查可用是編輯器並打開文件file
FuncFvwmOpenURL url             ----  檢查可用的瀏覽器並打開鏈接url
FuncFvwmRunInXterm title cmd    ----  在終端中運行命令cmd

6.10 菜單

下面是定義的一個菜單的例子:

DestroyMenu MenuFvwmRoot
AddToMenu   MenuFvwmRoot
+ "Root Menu" Title
+ "X終端%mini.term.xpm%" Exec exec xterm
......

以上例子定義了標題為"Root Menu"的菜單,只有一個名為"X終端"的選項, 該選項前面顯示有一個名為"mini.term.xpm"的圖片,點擊此選項會打開一個 Xterm終端。使用此菜單需要用 MenuFvwmRoot。

我把菜單按功能分為程序菜單和窗口菜單,顧名思義,程序菜單中可執行程序,窗 口菜單與窗口有關。兩種菜單的定義方式都是一樣的,區別在於響應的事件和顯示 的位置不同。

6.10.1 菜單位置

Menu menu-name [position] [double-click-action]

這句命令用來綁定已定義的菜單到指定的動作上,menu-name 是菜單名,如 前例則為 MenuFvwmRoot,position指定了彈出的菜單顯示在屏幕上的位置, double-click-action 指定按鈕被雙擊時執行的命令。這里重點是position 參數的設定,如果設置不恰當,則達不到想好的效果。

position 由以下幾部分指定:

[context-rectangle] x y [special-options]

context-rectangle 可以是以下幾個常量中的一個:

  • Root 當前屏幕的根窗口,即桌面。
  • XineramaRoot 多顯示器顯示時的根窗口,如果Xinerama未開啟,則等同 Root。
  • Mouse 鼠標單擊位置
  • Window 窗口邊框
  • Interior 窗口內容區
  • Title 窗口或圖標的標題處
  • Button<n> 在窗口的第n號按鈕上
  • Icon 窗口的圖標
  • Menu 當前菜單
  • Item 當前菜單的當前選項
  • Context 當前菜單、窗口或圖標
  • This 光標下面的任何部件
  • Rectangle <geometry> 用幾何字竄指定的一個矩形

x 和 y 是相對於 context-rectangle 默認位置的偏移,默認情況下 x 和 y 指的是相應內容矩形寬和長的百分比,如果數值后加上 m, 則表示要顯示菜單 寬和長的百分比,如果以 p 結尾,則數值指的是像素。如果數值前有 o<N> ,則 表示在其他位移發生前先將菜單的百分之N的像素和矩形的百分之N重疊在一 起。可以用 c 表示 o50。

6.10.2 程序菜單

菜單的定義非常簡單,但是如果你安裝一個軟件就要修改一次Fvwm的配置文件的 話,反而麻煩了,所以為了之后的不麻煩,我寧願現在麻煩點。我要自動把安裝 的軟件添加到程序菜單中,必須要仰仗 update-menus 這個腳本,update-menus 依賴於menu,所以你必須安裝它才能工作。另外,還要進行一行必要的設置:

  • 打開/etc/menu-methods/fvwm,修改 rootsection="",下次運行 update-menus 在.fvwm/下生成的menudefs.hook中的菜單就可怪掛在二 級菜單下。
  • 通常debian倉庫中的包會在/usr/share/menu目錄下添加menu所需的配 置,如 果打包者沒有添加或者你是手動編譯安裝軟件,則需在此目錄 下手動添 加相應的配置文件。配置文件的格式請查看手冊。
  • 要特別注意的是,update-menus在默認情況下會檢查dpkg數據庫的, 如果不是 通過apt或者dpkg安裝的軟件包,即使在此目錄下添加了配 置文件,也不 會為其生成菜單,所以在fvwm2rc中要用"update-menus –nodpkgcheck"

6.10.3 窗口菜單

窗口菜單要力爭簡潔實用,我只保留了"移動、最小化、最大化、隱藏、關閉、銷 毀、右移一頁、左移一頁、屬性"這幾項。把快捷鍵也標識在菜單上,以備在你不 記得時可以看一看。

將窗口菜單綁定在點擊窗口標題欄或點擊任務欄圖標上。

Mouse 1     1       A   Menu MenuFvwmWindowOps
Mouse 3     1       A   Menu MenuFvwmwindowOps
Mouse 3     T       A   Menu MenuFvwmWindowOps
*FvwmTaskBar: Action Click3 Menu MenuFvwmWindowOps Mouse +0 -100m

6.11 FvwmScript腳本

Fvwm具有腳本解釋功能,並包括許多有用的工具,比如:FvwmScript-BaseConfig (基本設置) 、 FvwmScript-Colorset(顏色)、 FvwmScript-KeyboardSetup (鍵盤)、FvwmScript-PointerSetup(光標)等設置,把這些功能添加到菜單中 是明智之舉。

別忘了還有一個有用的工具:FvwmScript-Quit。默認的Fvwm腳本中就使用了它, 只是如果系統不經過一定配置的話,需要Root權限的操作不會起作用。采取如下 操作:

  • 安裝sudo,並配置當前用戶執行sudo不用輸入密碼。相關操作請查看手冊。
  • 修改/usr/local/share/fvwm/FvwmScript-Quit,修改相關操作的命令, 當然你 也可以在添加幾個選項,比如:sudo s2ram 進行休眠。

看看我定做的關機對話框吧。

FvwmScript腳本由5部分構成,頭部是窗口屬性和所有部件的默認屬性,第二 部分寫腳本在啟動時運行的指令,第三部分寫每秒運行的指令,第四部分寫 腳本退出時執行的指令,最后一部分寫上各個部件的描述。每個部件是11種 控制中的一種: 標簽, 單行文本輸入, 單選按鈕, 復選框, 按鈕, 水平和 垂直滾動條, 矩行, 彈出菜單, swallowexecs,迷你滾動條。

雖然腳本語言很簡單,但是沒有一定編程基礎的朋友掌握起來比較困難,我 把自己的FvwmScript-Quit代碼貼出來,供大家參考。

#WindowTitle {Quit}
WindowTitle {小二,過來}
WindowSize 400 295       # Taille
WindowPosition 191 143       # Position
#ForeColor   {black}
#BackColor   {grey85}
#ShadowColor {grey55}
#HilightColor    {grey100}
#Font        -adobe-helvetica-bold-r-*-*-12-*

Init
 Begin
  WarpPointer 1
  Set $ToDo = Logout
  ChangeValue 6 1
  ChangeValue 7 0
  ChangeValue 8 0
  ChangeValue 9 0
  ChangeValue 10 0
  ChangeValue 12 0
 End

Widget 1
Property
 Position 40 40
 Flags NoReliefString NoFocus
 Type ItemDraw
 Icon shutdown.xpm
Main
 Case message of
  SingleClic :
  Begin
  End
End

Widget 2
Property
 Size 370 230
 Position 15 15
 Type Rectangle
Main
 Case message of
  SingleClic :
  Begin
  End
End

Widget 3
Property
# Title { What do you want to do? }
 Title { 客官,請問您有什么需要? }
 Position 100  8
 Flags NoReliefString NoFocus
 Type ItemDraw
 Value 0
# Font -adobe-helvetica-bold-r-*-*-12-*
Main
 Case message of
  SingleClic :
  Begin
  End
End

Widget 4
Property
# Title {OK}
 Title {確定}
 Size 60 28
 Position 300 255
 Flags NoReliefString
 Type PushButton
 Value 1
Main
 Case message of
  SingleClic :
  Begin
   If $ToDo == Logout Then
    Do {Quit}
   Else
   Begin
    If $ToDo == Restart Then
     Do {Restart}
    Else
    Begin
     If $ToDo == RestartWith Then
      Do {Restart } (GetTitle 11)
     Else
     Begin
     If $ToDo == Reboot Then
      Begin
      Do {Exec sudo sync}
      Do {Exec sudo reboot}
      Quit
      End
     Else
      Begin
     If $ToDo == Poweroff Then
      Begin
      Do {Exec sudo sync}
      Do {Exec sudo poweroff}
      Quit
      End
     Else
      Begin
      Do {Exec sudo sync}
      Do {Exec sudo s2ram}
      Quit
      End
     End
     End
    End
   End
  End
End

Widget 5
Property
# Title {Cancel}
 Title {取消}
 Size 60 28
 Position 40 255
 Flags NoReliefString
 Type PushButton
 Value 1
Main
 Case message of
  SingleClic :
  Begin
   Quit
  End
End

Widget 6
Property
# Title {Logout}
 Title {注銷}
 Position 90 45
 Flags NoReliefString
 Type RadioButton
 Value 0
Main
 Case message of
  SingleClic :
  Begin
   ChangeValue 7 0
   ChangeValue 8 0
   ChangeValue 9 0
   ChangeValue 10 0
   ChangeValue 12 0
   Set $ToDo = Logout
  End
End

Widget 7
Property
# Title {Restart fvwm}
 Title {重啟FVWM}
 Position 90 75
 Flags NoReliefString
 Type RadioButton
 Value 0
Main
 Case message of
  SingleClic :
  Begin
   ChangeValue 6 0
   ChangeValue 8 0
   ChangeValue 9 0
   ChangeValue 10 0
   ChangeValue 12 0
   Set $ToDo = Restart
  End
End

Widget 8
Property
# Title {Restart with:}
 Title {帶參數重啟FVWM:}
 Position 90 105
 Flags NoReliefString
 Type RadioButton
 Value 0
Main
 Case message of
  SingleClic :
  Begin
   ChangeValue 6 0
   ChangeValue 7 0
   ChangeValue 9 0
   ChangeValue 10 0
   ChangeValue 12 0
   Set $Todo = RestartWith
  End
End

Widget 11
Property
 Position 215 100
 Size 120 15
 Type TextField
 Title {}
Main
 Case message of
  SingleClic :
  Begin
  End
End


Widget 9
Property
# Title {Shut down the computer}
 Title {關閉計算機}
 Position 90 135
 Flags NoReliefString
 Type RadioButton
 Value 0
Main
 Case message of
  SingleClic :
  Begin
   ChangeValue 6 0
   ChangeValue 7 0
   ChangeValue 8 0
   ChangeValue 10 0
   ChangeValue 12 0
   Set $ToDo = Poweroff
  End
End

Widget 10
Property
# Title {Restart the computer}
 Title {重啟計算機}
 Position 90 165
 Flags NoReliefString
 Type RadioButton
 Value 1
Main
 Case message of
  SingleClic :
  Begin
   ChangeValue 6 0
   ChangeValue 7 0
   ChangeValue 8 0
   ChangeValue 9 0
   ChangeValue 12 0
   Set $ToDo = Reboot
  End
End


Widget 12
Property
 Title {休眠計算機}
 Position 90 195
 Flags NoReliefString
 Type RadioButton
 Value 1
Main
 Case message of
  SingleClic :
  Begin
   ChangeValue 6 0
   ChangeValue 7 0
   ChangeValue 8 0
   ChangeValue 9 0
   ChangeValue 10 0
   Set $ToDo = Sleep
  End
End

7 后記

其實在網絡上有許多人貼出了自己的配置文件,有優有劣,感謝 Desintegr (desintegr@free.fr)提供的配置文件。從 這里 下載我的配置文件,包括所 需的腳本、圖片和聲音。

經過不斷修改和完善,我的桌面用起來還比較順手,但是我知道這並不完美, 也許它並不適合你,貼出配置僅供參考,適合自己的才是最好的。另外有幾個 名詞需要解釋一下,不然讓那此英文比我還不好的同志們去查手冊實在有些為 難。

PipeRead command [quiet] Fvwm用PipeRead 從shell命令 的輸出中讀入數據,如果command由多個單詞構成,則要用引號括起來,從文 件目錄動態創建菜單要用到此方法。如果command 后跟上Quiet關鍵字,當找 不到命令時不會產生告警。

$[gt.str]、$[w.id]、$[w.name] 你可能會在很多 配置文件中看到這樣形式的東西,這叫做命令擴展(command expansion), $[gt.str]根據當前Locale將str翻譯成本地字符串,$[w.id]返回窗口的id, $[w.name]返回窗口的名稱。詳細請 man fvwm。

EWMH 是 EXTENDED WINDOW MANAGER HINTS 的縮寫,不知如何 譯成中文,它是一種窗口管理的標准,用來說明屏幕上窗口工作區的范圍。 Fvwm是支持此標准的。如果關閉EWMH支持,則窗口工作區是整個屏幕。

手冊原文:~The EWMH specification introduces the notion of Working Area. Without ewmh support the Working Area is the full visible screen (or all your screens if you have a multi head setup and you use Xinerama).~

Swallow 這是FvwmButtons一個神奇的功能,可以把其他X程 序或者Fvwm模塊吞進按鈕中,比如在按鍵中顯示Pager,時鍾以及系統監控等。

Author: Bienilz

Created: 2015-07-26 Sun 09:24

Emacs 24.5.1 (Org mode 8.2.10)

Validate


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM