$XDG_CONFIG_HOME/awesome/rc.lua $HOME/.config/awesome/rc.lua XDG_CONFIG_DIRS/awesome/rc.lua
Awesome Window Manager 的目標,是做個可擴充、可高度自訂的視窗管理員。
為了達到這個目的,awesome 是設計成一個 framework window manager,極為快速、小巧、動態、且可用 Lua programming language 來擴充。
awesome 的視窗管理與傳統的 x-Window-manager 不同,它是用「標籤」來作管理的。
啟動 awesome 後,畫面左上方標示著 one,two…nine,稱為標籤 (tag),one, two, three …… 等就是標籤的名稱。「標籤」的功能乍用之下有點類似虛擬桌面 (workspace),但其實概念上是很不一樣的東西。
awesome 會給視窗加上「標籤」,當我們選擇 one 時,就代表要顯示具有 one 這個標籤的視窗。如果覺得用小小的標籤管理視窗有點不習慣,不妨將畫面左上的 tag 想成是那個 tag 的 workspace,每當我們選取了某個 tag,就代表我們要顯示那個 tag 所代表的 workspace,每當我們給某個視窗加上 tag,就代表我們將那視窗加入那個 tag 的 workspace。
在 awesome 中,我們可以透過簡單的操作,將視窗加上一或多個標籤,並決定目前螢幕上要顯示具有某個或某幾個標籤的視窗,這讓視窗的管理更具彈性。
例如,我們可以將具有 one, two, three 標籤的視窗都同時顯示在螢幕上,也可以輕易切換為只顯示 one 或 two 標籤的視窗。
也可以給某個視窗加上 one, two, three 三個標籤,如此,無論你現在顯示 one,或 two,或 three,都可以顯示這個視窗。
這些功能,其實並不稀奇,但 awesome 之所以 awesome,是因為這些視窗管理都可以透過簡單的鍵盤、滑鼠來即時操作!
非常快速、穩定、小巧、簡單
唯一使用 asynchronous XCB library 的 window manager,而不使用 synchronous old Xlib ,這讓 awesome window manager 比其他 window manager 都快
原始碼與 API 的文件做得很好
不需要滑鼠:所有事情都可以用鍵盤解決
真正支援 multihead (XRandR, Xinerama or Zaphod mode),有 per screen desktops(tags)
實作了許多 Freedesktop 的標準,包含 EWMH, XDG Base Directory, XEmbed, Desktop Notification, System Tray。
支援真正的透明 (transparency) (使用 Composite Extension 與 xcompmgr)
無法辨別不同的 layers (沒有 floating 或 tiled layer)
無論是否目前選取的 tag(s) 的 clients,都可以即使改變它們的版面配置 (layout),彈出來的視窗與固定大小的視窗會自動變成 floating。
版面配置:根據每個標籤所選擇的策略,自動管理視窗的排列位置
使用標籤 (tags) 取代傳統的工作區 (workspaces):讓 clients 可出現在好幾個 tags,也可以同時顯示好幾個 tags。
有許多 Lua extensions,可新增功能,如: dynamic tagging, widget feeding, tabs ……等
支援 D-Bus
更多……
版面配置 (layout) ,是根據螢幕可用空間來排列視窗的功能 (function)。awesome 提供很多種版面配置的方式。
平鋪 (Tiled) | 使用這種版面配置時,awesome 會把視窗分成主視窗區 (master area) 與堆疊區 (stacking area),主視窗區放置我們目前比較需要注意的視窗,其他視窗放在堆疊區。主視窗區可切割成好幾列 (row) 與好幾欄 (column),隨你高興。 |
最大視野 (Max) | 每個視窗都調整到全螢幕。 |
放大 (Magnifier) | 焦點所在的視窗維持在畫面中央並佔用最大的空間,其餘視窗都堆疊到這個視窗後。 |
浮動 (Floating) | 可自由改變每個視窗的大小,就像一般的視窗管理員一樣。 |
不管使用那一種版面配置模式,對話方塊視窗總是以 floating 來處理。
狀態列 (Statusbar) | 可放在螢幕的上下左右邊緣,包含一或多個 widgets。 |
標題列 (Titlebar) | 類似狀態列,但是,標題列是在視窗的邊緣。 |
小工具 (Widget) | 在狀態列或標題列中的東西,可以文字、圖形、進度列、圖表等各種小東西顯示各種資訊。 |
在桌面按滑鼠右鍵,或者 Win + Enter ,可叫出 x-terminal-emulator
man awesome
man awesomerc
Win + 數字 或 Win + 左/右方向鍵 可在不同標籤間切換。
Win + j 或 Win + k 可在視窗間切換。
Win + Shift + c 可關閉目前視窗。
Win + Ctrl + r 可重新啟動 awesome。
Win + Shift + r 可重繪焦點所在的視窗。
用 awesome -k 來檢查設定檔的語法。
awesome3 相對於 awesome2 有很大的變動,設定檔位置改成在
$XDG_CONFIG_HOME/awesome/rc.lua $HOME/.config/awesome/rc.lua XDG_CONFIG_DIRS/awesome/rc.lua
awesome 3 的設定檔,與 awesome 2 不相容,官方有 Awesome Configuration Convertor 的計畫,但目前尚未完成。
awesome 3.0 到 3.1 時,設定檔的格式也有些許改變,請參考 awesome 3.0 to 3.1。
在標籤上按 滑鼠左鍵 (Button1 on tag name)
顯示標有此 tag 的視窗 (View tag)。
也可想成是 - 切換到那個 tag 所代表的 workspace。
相當於快捷鍵 Win + 標籤數字 。
在桌面或標籤上按 滑鼠第四/第五鍵 (Button4, Button5 on root window / tag)
改將標有上/下一個 tag 的視窗顯示在目前的桌面上 (沒有 上/下一個 tag 的視窗,都將不會顯示在桌面上)
也可想成是 - 切換到上/下一個 tag 所代表的 workspace。
相當於快捷鍵 Win + 左/右方向鍵 。
在配置版面的圖示 (layout symbol) 上按 滑鼠左/右鍵 或 第四/第五鍵 (Button 1/2 or Button 4/5 on Layout Symbol)
切換到上一種/下一種版面配置。
在某個標籤上按 Win + 滑鼠左鍵 (Mod4 + Button1 on tag name)
替目前焦點所在的視窗加上某個標籤 (Tag current client with this tag)。
舉例來說,假設原本目前視窗有 three 這個標籤,在 five 上按 Win + 滑鼠左鍵 後,會替視窗貼上 five 這個標籤,此時原本的標籤 three 會不見,又因目前顯示的的 tag 還是 three,所以原本視窗會不見,如要顯示原來的視窗,要改顯示 five 這個標籤。
所以,在某個標籤上按 Win + 滑鼠左鍵 ,也就是 - 不想讓目前焦點所在的視窗繼續存在目前的桌面,將它丟到其他 tag 所代表的 workspace 去的意思。
如果完全用鍵盤快捷鍵,可用 Win + Shift + 標籤數字 。
在某個標籤上按 Win + 滑鼠右鍵 (Mod4 + Button3 on tag name)
為焦點所在視窗加入/去除某個標籤 (Toggle this tag for client)
這與 Win + 滑鼠左鍵 的差別在於,在目前未顯示的標籤上按 Win + 滑鼠右鍵 來替焦點所在視窗加入新標籤時,仍保有原來的標籤,所以焦點所在視窗不會因為加入新標籤而消失在目前的螢幕上。
所以 Win + 滑鼠右鍵 的使用時機,可看成是 - 想讓目前焦點所在視窗出現在其他 tag 代表的 workspaces,且還要讓這個視窗繼續出現在目前螢幕上。
這相當於按快捷鍵 Win + Ctrl + Shift + 標籤數字 。
在某個標籤上按 滑鼠右鍵 (Button3 on tag name)
在目前的螢幕顯示/隱藏具有某個標籤的視窗 (Add this tag to current view)
假如現在是在 tag three,你在 tag five 上按滑鼠右鍵,會在目前螢幕上顯示被加上 three 或 five 這兩個標籤的所有視窗。在 five 標籤上再按一次滑鼠右鍵,就會把標籤的選取狀態取消,也就是 tag five 代表的視窗又不顯示在目前螢幕上了。
這相當於按快捷鍵 Win + Ctrl + 標籤數字 。
在 client window 上按 Win + 滑鼠左鍵 (Mod4 + Button1)
移動視窗。
在 client window 上按 Win + 滑鼠右鍵 (Mod4 + Button3)
改變視窗大小。
實際使用時,如果視窗的管理是在 平鋪 (tiling) 的狀態,只能改變主視窗/非主視窗的寬或高度。如果是在 浮動 (floating) 的狀態,就可以改變視窗的寬、高。
awesome 提供了極豐富的快捷鍵,而且完全可以自訂,如果覺得預設的快捷鍵不好按,可以透過修改設定檔 rc.lua 來變更。
用 awesome-menu 來執行程式 。
執行 Lua code。
開啟 X terminal emulator。
離開 awesome (Quit awesome)。
重新啟動 awesome (Restart awesome)。
將焦點切換到下一個視窗 (Focus next client)。
將焦點切換到前一個視窗 (Focus previous client)。
將焦點切換到第一個 urgent 的視窗 (Focus first urgent client)
看標有上一個標籤 (View previous tag) 的視窗。
看標有下一個標籤 (View next tag) 的視窗。
切換到 tag 1-9 (Switch to tag 1-9)。
看先前選取的標籤 (View previously selected tag)。可在之前/目前所在的標籤之間切換。
將目前視窗與下一個視窗交換位置 (Switch client with next client)。
將目前視窗與前一個視窗交換位置 (Switch client with previous client)。
關掉視窗 (Kill client)。
將焦點所在的視窗最大化 (仍會顯示 status bar)。再按一次可取消此狀態。
將焦點所在的視窗設為全螢幕 (status bar 會被蓋住)。再按一次可取消此狀態。
將焦點所在的視窗為浮動狀態 (Set client floating)。
也就是與一般 Window Manager 相同的視窗顯示方式,而非 Tiling 的方式。
把目前焦點所在的視窗與 主視窗 交換。
這會讓原本焦點所在的視窗變成主視窗,原的本主視窗變成在原本焦點所在視窗的位置,實在是相當好用的快捷鍵!
將標籤為 [1-9] 的視窗顯示到目前桌面上 (Toggle tag view)。
可想成,要控制 (Control) 標籤為 [1-9] 的視窗 (Win)。
給某個視窗加上標籤 (Tag client with tag)。
按下去後,視窗會消失在目前螢幕上,移動 (shift) 到新的標籤去,其實也就是把焦點所在的視窗搬到指定的標籤去。相當於在標籤上按 Win + 滑鼠左鍵 。
為焦點所在視窗 加上/去掉 某個 tag (Toggle tag on client)。
按下去後,視窗仍在目前螢幕上,不會消失,且會出現在指定的 tag 所代表的 workspace 裡。
可想成,既要移動 (Shift)、又要控制 (Ctrl) 焦點所在的視窗。
相當於在某個標籤上按 Win + 滑鼠右鍵 。
將焦點所在的視窗作記號(Mark a client)。預設設定下,被作了記號的視窗,周圍會用細細的紅色框線框起來。若要取消記號,再按一次即可。
將有作記號的視窗都加上指定的 tag (原來的 tag 不會保留)
也就是說,會把之前作記號的視窗,都搬到 tag 1-9 所代表的 workspace 去。
將焦點切換到下一個螢幕 (Focus next screen)。
將焦點切換到上一個螢幕 (Focus previous screen)。
將視窗送到下一個螢幕去 (Send client to next screen)。
切換到下一個 layout。
切換到前一個 layout。
減少 主視窗區 5% 的高/寬度 (Decrease master width factor by 5%)。
增加 主視窗區 5% 的高/寬度 (Increase master width factor by 5%)。
Manpage 中並沒有清楚指出各種版面配置中,那些區域是主視窗區,所以我只好依 Win + h 與 Win + l 變更主視窗區的大小,來找出在目前的版面配置中,那裡是主視窗區。
根據測試,主視窗區,多半是 Layout Symbol 中可視面積較大的視窗所佔用的區域,有幾種版面配置,沒有主視窗區/非主視窗區之分,例如:最大化、全螢幕、floating。另有兩種版面配置(Layout Symbol 以 6+2 來表示),視窗大小是固定的,用 Win + h/l 或 Win + 滑鼠右鍵拖曳 都無法調整。
這個部份的快捷鍵, h 為增加, l 為減少,乍看之下,與上面調整版面配置時的「 h 為減少、 l 為增加」似有衝突,但其實只要把握一個原則,就會比較好記了: h 會讓視窗變窄/矮, l 讓視窗變寬/高。
增加一個 主視窗 (Increase number of master windows by 1)。
減少一個 主視窗 (Decrease number of master windows by 1)。
增加 非主視窗 的 column 數 (Increase number of columns for non-master windows by 1)
Note: 何謂 column? 這依視窗排列方式不同而異,自己按按看就知道了。
減少 非主視窗 的 column 數 (Decrease number of columns for non-master windows by 1)