awesome - Arch Linux 中文维基

跳至內容

# awesome

出自 Arch Linux 中文维基

相關文章

- 窗口管理器
- cwc
- 平鋪式窗口管理器比較
- 桌面環境
- 顯示管理器
- 文件管理器功能
- Xdg-menu

來自awesome網站：

Awesome 是 Xorg 下可高度定製的新一代窗口管理器，運行快捷、擴展性強。Awesome主要面向高級用戶、開發者和那些希望完美控制自己電腦的圖形界面的人。

## 安裝

安裝位於官方軟體倉庫的軟體包 awesome包。

注意：自2019年起，awesome 就沒有新的正式版本發布了。如果你遇到了任何問題或者想要缺失的特性，安裝 awesome-gitAUR。

## 啟動

使用 xinit 運行 `awesome`。要使用其包括的 xsession 文件，參考顯示管理器頁面。

### 與GNOME一同使用

你可以設置 GNOME 使用 awesome 作為其窗口管理器，但必須讓 GNOME 在後台運行。詳見 awesome-gnomeAUR。

### XFCE

詳見 XFCE#使用不同的窗口管理器。

## 配置

配置文件是一個lua腳本：`~/.config/awesome/rc.lua`。

### 創建配置文件

創建配置文件所在的文件夾：

    $ mkdir -p ~/.config/awesome/

編譯後，awesome會自動使用~/.config/awesome/rc.lua裡的所有配置。這個文件並不會自動創建，所以我們先要從模板複製一個過來：

    $ cp /etc/xdg/awesome/rc.lua ~/.config/awesome

配置文件的語法會隨著Awesome的版本升級而變化，所以當你升級了之後遇到問題時，重複上面的步驟，或者你得手動修改配置文件。

要獲得關於配置Awesome的更多信息，請看Awesome wiki的配置部分。

#### 例子

注意：Awesome配置文件語法有時會變化，所以你可能得動手修改下載的配置文件。

- Awesome screenshot thread
- Setkeh 的awesome 配置
- 支持不同主題的用戶配置，包括一個狀態欄
- 有兩個現代主題的 awesome 配置

### 擴展

下列擴展對 awesome 來說是可用的：

E | 功能 | 版本
--- | --- | ---
Revelation | 顯示所有已打開客戶端的視圖 | Awesome 3.5+
Shifty | 動態標籤 | Awesome 3.5
Naughty | 彈出通知 | Awesome 3.5+
Vicious Obvious Bashets | 額外的 widgets | Awesome 3.5

### 自動啟動

要實現 XDG 自動啟動規範，安裝 xorg-xrdb包和 dex包，並將以下行添加到 `~/.config/awesome/rc.lua`：

    ~/.config/awesome/rc.lua

    awful.spawn.with_shell(
        'if (xrdb -query | grep -q "^awesome\\.started:\\s*true$"); then exit; fi;' ..
        'xrdb -merge <<< "awesome.started:true";' ..
        'dex --environment Awesome --autostart --search-paths "${XDG_CONFIG_HOME:-$HOME/.config}/autostart:${XDG_CONFIG_DIRS:-/etc/xdg}/autostart";'
        )

尤其是對於沒有托盤圖標的守護進程，使用自動啟動目標的 systemd 用戶單元是一個有趣的替代方案，因為它們可以被配置為保持運行狀態，即被監控並在意外停止後自動重啟。

最後, 也可以創建 `autorun.sh` 然後插入下列文字：

    ~/.config/awesome/autorun.sh

    #!/bin/sh

    run() {
      if ! pgrep -f "$1" ;
      then
        "$@"&
      fi

然後，讓它可執行。

要添加自啟動程序, 只需要向 `autorun.sh` 添加 `run "program [some arguments]"`。 `run` 函數檢查是否已經有一個帶著一些參數的 `program` 實例，並且只在沒有該實例時運行 `program`。你可以通過運行你的 `autorun.sh` 來檢查它：

    $ ~/.config/awesome/autorun.sh

如果配置成功， 將以下行添加到 `rc.lua`：

    ~/.config/awesome/rc.lua

    awful.spawn.with_shell("~/.config/awesome/autorun.sh")

或者，添加你希望運行的命令（包括設置環境變量）到 xinitrc（或 xprofile，當使用顯示管理器時）。

### 改變鍵盤布局

有許多方法配置鍵盤布局。

#### setxkbmap 配置方法

Awesome的默認配置已經激活了鍵盤布局 widget。

要暫時設置多鍵盤布局，運行

    $ setxkbmap -layout "us,de"

點擊 widget 將改變鍵盤布局。如果你想要一個組合鍵來改變鍵盤布局，你可用加上 `-option "grp:alt_shift_toggle"`。這是一個通過按 `Shift+Alt` 改變鍵盤布局的例子，完整的命令如下：

    $ setxkbmap -layout "us,de" -option "grp:alt_shift_toggle"

設置帶有音標的英語和俄語鍵盤布局：

    $ setxkbmap -model pc105 -option "grp:shifts_toggle,compose:sclk" "us,ru(phonetic_YAZHERTY)"

其中

- Compose key is 設為 "Scroll Lock" ，語言切換鍵設為左 Shift + 右 Shift。
- 鍵盤上有105個鍵。

如果使用 LightDM 開啟會話，添加上述命令到 .xprofile 文件。

#### rc.lua 配置方法 (自 v.4 版本開始可用)

你可以使用 awesome 自身來切換鍵盤布局 (自 v.4 版本開始可用)。要通過按 `Shift+Alt` 改變鍵盤布局， 添加這兩行到 `globalkeys`:

    ~/.config/awesome/rc.lua

    -- Key bindings
    globalkeys = gears.table.join(
        -- ...
        awful.key({ "Shift" }, "Alt_L", function () mykeyboardlayout.next_layout(); end),
        awful.key({ "Mod1" }, "Shift_L", function () mykeyboardlayout.next_layout(); end)
    )

這需要你提前通過 setxkbmap 命令或 X 配置文件設置你想要切換的鍵盤布局。

當你找到了設置你的鍵盤布局的適合方法，添加到 #自啟動。

#### Xorg 配置方法

詳見 Xorg/鍵盤配置（英語：Xorg/Keyboard configuration）。

### 主題

Beautiful 是一個允許你使用外部文件給 awesome 配置主題的 lua 庫，可以讓你非常容易地動態地改變背景圖片和顏色主題，而不需要改變 `rc.lua`。

默認的主題文件在 `/usr/share/awesome/themes/default`。把它複製到 `~/.config/awesome/themes/default`（可選複製其他所有主題）然後修改一下 `rc.lua` 中的 `theme_path`。

     -- beautiful.init(gears.filesystem.get_configuration_dir() .. "/themes/default/theme.lua")
     local theme_path = string.format("%s/.config/awesome/themes/%s/theme.lua", os.getenv("HOME"), "default")
     beautiful.init(theme_path)

如果你同時也複製了其他主題，你可以把 "default" 替換為 "sky"，"gtk" 或 "zenburn" 來容易地切換主題，並且本地主題文件可以被學習、修改和用於測試。額外的主題配置選項參考這裡。例如要添加一個 useless gap，添加

    beautiful.useless_gap = 5

到你的 `rc.lua` 的主題配置部分。

注意：Awesome 不支持點陣字體，如果你的系統上只安裝了點陣字體，字體渲染將損壞。

### 設置牆紙

Beautiful 可以設置牆紙，所以你就不用在 `.xinitrc` 或者 `.xsession` 中自己設置了。這允許你給每個主題配一個牆紙。

有兩種方式設置牆紙：

- 在 `theme.lua` 中：

      -- 绝对路径
      theme.wallpaper = "/path/to/wallpaper.png"

      -- 相对于主题目录的相对路径
      theme.wallpaper = theme_path .. "path/to/wallpaper.png"

- 或在 `rc.lua` 中，位於 `beautiful.init` 和 `local function set_wallpaper` 之間：

      -- 绝对路径
      beautiful.wallpaper = "/path/to/wallpaper.png"

      -- 相对于主题目录的相对路径
      beautiful.wallpaper = awful.util.get_configuration_dir() .. "path/to/wallpaper.png"

要設置隨機牆紙，添加這個到 `rc.lua`（v3.5+）。要從一個特點目錄自動獲取牆紙，使用這個。

## 小技巧

### 顯示/隱藏wibox

從 awesome 4.0 開始：

    awful.key({ modkey }, "b",
              function ()
                  myscreen = awful.screen.focused()
                  myscreen.mywibox.visible = not myscreen.mywibox.visible
              end,
              {description = "toggle statusbar"}
    ),

在 awesome 中，只在按下 Modkey 時顯示 wibox（或執行其他操作）是不可能的，但這裡有一個 Python 腳本實現了這個功能：autohidewibox。

### 截圖

設置鍵盤輸入，確保 `PrtSc` 鍵被正確綁定了。然後安裝一個截圖工具，例如 scrot。

在配置文件中的 `globalkeys` 中輸入並保存：

     awful.key({ }, "Print", function () awful.util.spawn("scrot -e 'mv $f ~/screenshots/ 2>/dev/null'") end),

這裡的 `~/screenshots/` 可以改成你截圖想要保存的地方。

### 移除窗口間隔

自 awesome 3.4 起，移除創建之間的小間隔是可能的。在 awful.rules.rules 表格中的 properties 章節添加：

     size_hints_honor = false

### 透明度

參見合成器。

在 awesome 3.5 中， 窗口透明度可以用信號動態設置。例如，`rc.lua` 可以包含下列內容：

    client.add_signal("focus", function(c)
                                  c.border_color = beautiful.border_focus
                                  c.opacity = 1
                               end)
    client.add_signal("unfocus", function(c)
                                    c.border_color = beautiful.border_normal
                                    c.opacity = 0.7
                                 end)

#### Conky

本文或本章節可能需要合併到Conky。

附註： 請提供模板的second參數以more detailed indications。（在 Talk:Awesome 中討論）

當使用 conky 時，你必須設置它讓它創建自己的窗口，而不是使用桌面。為此，編輯 `~/.conkyrc`以包含

    own_window yes
    own_window_transparent yes
    own_window_type desktop

否則你可能會看到奇怪的表現，比如所有的窗口都變得完全透明。注意由於 conky 將會在你的桌面上創建一個透明窗口，所有定義於 `rc.lua` 的動作在 conky 所在的位置都不會工作。

#### wiboxes

Wiboxes具有內置的偽透明功能。要啟用它，在主題文件中的顏色後附加2位十六進制數字（例如`~/.config/awesome/themes/default/theme.lua`, 通常為 `/usr/share/awesome/themes/default/theme.lua` 的複製品），如下所示:

    theme.bg_normal = "#000000AA"

其中 "AA" 為透明度。

To change transparency for the actual selected window by pressing `Modkey + PgUp/PgDown` you can also use transset-dfAUR and the following modification to your `rc.lua`:

    globalkeys = gears.table.join(
        -- your keybindings
        [...]
        awful.key({ modkey }, "Next", function (c)
            awful.util.spawn("transset-df --actual --inc 0.1")
        end),
        awful.key({ modkey }, "Prior", function (c)
            awful.util.spawn("transset-df --actual --dec 0.1")
        end),
        -- Your other key bindings
        [...]
    )

### Widget 間隔

默認 `rc.lua` 在一個 wibox 裡放置包括鍵盤布局和時鐘等所有 widgets，widgets 之間只有很小的間隔。使用 `spacing` 屬性在 widgets 之間增加額外的間隔是可能的：

           { -- Right widgets
           layout = wibox.layout.fixed.horizontal,
           spacing = 10,
           mykeyboardlayout,
           ...

### ImageMagick

本文或本章節可能需要合併到Xorg#合成。

附註： 請提供模板的second參數以more detailed indications。（在 Talk:Awesome 中討論）

如果你用 ImageMagick 的 display 命令來設置你的牆紙，可能會遇到 xcompmgr 效果不好的問題。請注意 awsetbg 可能會用 display 如果它沒有其他選項。安裝 habak，feh，hsetroot 或者其他的包應該會解決這個問題。（grep -A 1 wpsetters /usr/bin/awsetbg 來看你有哪些選項）

### 使用 awesome-client 給文本插件傳遞信息

只需要創建一個新的插件，就可以很容易的傳遞信息。

    mywidget = widget({ type = "textbox", name = "mywidget" })
     mywidget.text = "initial text"

使用 awesome-client 從外部更新「initial text":

    echo -e 'mywidget.text = "new text"' | awesome-client

不要忘記把插件增加到 wibox。

### 使用其他任務欄

如果你喜歡 awesome 既輕量又強大的功能，但又不喜歡默認那個任務欄的外觀，你可以安裝其他的，比如 xfce4-panel包。

然後要把它添加到配置文件 `rc.lua` 的自動啟動部分，你可以注釋掉配置文件中給每個桌面創建 wiboxes 的那部分（開頭是`mywibox[s] = awful.wibox({ position = "top", screen = s })`），但不是必要的。檢查配置文件沒有錯誤之後就可以執行命令生效:

    $ awesome -k rc.lua

另外你還需要改變 `modkey+R` 的快捷鍵綁定，來用一些其他的應用啟動器替代awesome自帶的啟動器。別忘了添加

    properties = { floating = true } },
        { rule = { instance = "$yourapplicationlauncher" },

到你的 `rc.lua`。

### 菜單欄中的應用程式目錄

Awesome 軟體包含有 menubar（默認情況下，按下 `Mod+p` 會在屏幕上方打開一個類似於 dmenu 的應用程式菜單）。它搜索位於`$XDG_DATA_DIRS/applications` 及 `$XDG_DATA_HOME/applications/` 目錄下的 .desktop 文件。

通過修改 `menubar.menu_gen.all_menu_dirs`，你可以擴充或取代這些目錄：

    ~/.config/awesome/rc.lua

    table.insert(menubar.menu_gen.all_menu_dirs, "/path/to/custom/applications/")

注意每次 awesome 啟動都會重新讀取 `.desktop` 文件，因此文件過多會拖慢 Awesome 的啟動速度。如果你更喜歡使用其他方式來運行程序，可以通過在 `rc.lua` 移除 `local menubar = require("menubar")` 及其它涉及到 `menubar` 的變量來禁用菜單欄。

### 應用菜單

自 awesome 3 以來，默認提供了一個簡單的菜單，簡化了自定義菜單。如果你想要一個freedesktop.org的菜單，可以查看awesome-freedesktop。

如果想要在點擊Awesome圖標，或者在桌面空白處右鍵點擊時，看到較傳統模式的應用菜單，可以參照Xdg-menu#Awesome的說明。但應用菜單不會在安裝或卸載程序時進行更新。所以，確保運行類似如下的命令，更新應用菜單：

     xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu >~/.config/awesome/archmenu.lua

### 標題欄

你可以很容易地在配置文件中rule把 `titlebars_enabled` 設置為 true 來啟用標題欄。

       { rule_any = {type = { "normal", "dialog" }
         }, properties = { titlebars_enabled = true }
       },

如果想要切換標題欄的顯示與否，可以把以下代碼加入配置文件中鍵位綁定部份的`clientkeys`部份中間位置（因為這段代碼是以逗號結尾，請不要放在 `clientkeys` 的最後），然後通過按 `modkey + Ctrl + t` 來切換。

       -- working toggle titlebar
       awful.key({ modkey, "Control" }, "t", function (c) awful.titlebar.toggle(c)         end,
                 {description = "Show/Hide Titlebars", group="client"}),

如果想默認情況下隱藏標題欄，僅需要在配置文件中標題欄創建後（即在 `"manage"` 信號處理器內）加入以下代碼：

    awful.titlebar.hide(c)

### 電池通知

參考這篇博文以向 `rc.lua` 添加一個簡單的電池通知。注意它需要 naughty 用來通知（3.5 版本起默認安裝）。Awesome wiki 上也有其他的參考案例。

### 媒體控制

使用 amixer(1)（通過 alsa-utils包 安裝）和 playerctl包 的組合控制音量和媒體播放是可能的。下列代碼可以被添加到你的 `rc.lua` 配置文件中與快捷鍵相關的章節：

       -- Volume Keys
       awful.key({}, "XF86AudioLowerVolume", function ()
         awful.util.spawn("amixer -q -D pulse sset Master 5%-", false) end),
       awful.key({}, "XF86AudioRaiseVolume", function ()
         awful.util.spawn("amixer -q -D pulse sset Master 5%+", false) end),
       awful.key({}, "XF86AudioMute", function ()
         awful.util.spawn("amixer -D pulse set Master 1+ toggle", false) end),
       -- Media Keys
       awful.key({}, "XF86AudioPlay", function()
         awful.util.spawn("playerctl play-pause", false) end),
       awful.key({}, "XF86AudioNext", function()
         awful.util.spawn("playerctl next", false) end),
       awful.key({}, "XF86AudioPrev", function()
         awful.util.spawn("playerctl previous", false) end),

### Steam 鍵盤

可通過 Steam 控制器激活的屏幕Steam鍵盤在嘗試輸入一個字符後似乎會凍結。這是因為本應接收輸入的客戶端必須處於焦點狀態才能接收輸入，而鍵盤會等待輸入成功發送。手動將焦點切換到另一個客戶端會將輸入發送到此客戶端，並再次解凍鍵盤，直到輸入下一個字符。

讓鍵盤正常工作的訣竅在於防止它獲得焦點。請將以下信號添加到您的配置中（或與現有的客戶端焦點信號合併）：

    client.connect_signal("focus", function(c)
        if awful.rules.match(c, { name = "^Steam Keyboard$" }) then
            awful.client.focus.history.previous()
        end
    end)

每當鍵盤獲得焦點時，焦點將返回至上一個客戶端。由於鍵盤輸入是由 Steam 客戶端處理的，因此不需要焦點，現在輸入文本將正常工作。

## 故障排除

### 調試 rc.lua

Xephyr 允許你在一個 X 客戶端窗口內運行另一個 X。用這種方式可以在不破壞現有桌面的情況下對 `rc.lua` 進行測試。首先把 `rc.lua` 複製到一個新文件（例如 `rc.lua.new`），接著進行修改。然後在 Xephyr 中運行新的 awesome 實例，使用 `rc.lua.new` 作為配置文件，就像這樣：

    $ Xephyr -ac -br -noreset -screen 1152x720 :1 &
    $ DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new

這種方式的巨大優勢在於如果你弄壞了 `rc.lua.new`，你不至於把現有的 awesome 桌面弄得一團糟，並且很可能還會把 XWindow 弄崩潰了，沒保存的工作全部丟失。一旦你覺得新的配置文件不錯，就用 `rc.lua.new` 代替 `rc.lua`，然後重啟 awesome。

#### 自動重載

作為上述方法的補充，你可以使用 inotify-tools包 以在更新 `~/.config/awesome` 目錄下的配置文件時，在 Xephyr 內自動重載 awesome 實例 ：

    #!/usr/bin/env bash

    Xephyr :1 -ac -br -noreset -screen 1920x1080 -dpi 96 &
    sleep 1
    DISPLAY=:1.0 awesome -c ~/.config/awesome/rc.lua.new &
    instance=$!

    while inotifywait -r -e close_write ~/.config/awesome; do
    	kill -s SIGHUP $instance
    done

#### 使用 awmtt

awmttAUR (Awesome WM Testing Tool) 是一個基於 Xephyr 的易於使用的腳本。默認情況下，它會測試 `~/.config/awesome/rc.lua.test` 。如果該文件不存在，它會測試當前使用的 rc.lua 。也可以指定要測試的配置文件所在路徑：

    $ awmtt start -C ~/.config/awesome/rc.lua.new

當測試完成後，使用以下命令關閉窗口:

    $ awmtt stop

或者通過以下命令立即查看變化:

    $ awmtt restart

#### aawmtt

aawmttAUR (Another Awesome WM Testing Tool) 是 awmttAUR 的另一種實現，默認包含Live-Reload功能。它與 awmtt-ng 類似，但針對 Xorg 顯示檢測問題做了一些修復，因為 awmtt-ng 在某些機器上無法正常檢測 Xorg 顯示。它與 awmtt 的不同之處在於，它不會先嘗試運行測試文件，而是直接運行默認配置。

要打開一個已加載 awesome 的 Xephyr 窗口，請運行：

    $ aawmtt

現在，awesome 的輸出將列印到您的終端，並且當您更改配置文件夾中的任何文件時，awesome 將重新加載。

如果你想修改被監視以檢測文件更改的目錄，或者配置文件的位置，只需運行：

    $ aawmtt --config "location_of_config_file" --watch "directory_to_watch_for_changes"

默認情況下，會被監視以檢測更改的目錄是配置文件的父目錄，因此默認情況下，該目錄將是「~/.config/awesome」。

### 日誌文件

如果你正在使用 LightDM, awesome 會將日誌記錄到 `$HOME/.xsession-errors`。如果你使用 `.xinitrc` 啟動 awesome， awesome FAQ 中的 "Where are logs, error messages or something?" 也許是有用的資源。

### Mod4 鍵

本文或本章節可能需要合併到Xorg/鍵盤配置。

附註： 請提供模板的second參數以more detailed indications。（在 Talk:Awesome 中討論）

Awesome建議重新映射 `mod4` 鍵，該鍵默認應為超級鍵或「Windows」鍵。如果由於某種原因它未被映射到 `mod4`，請使用 xmodmap 來找出其映射情況。要更改映射，請使用 `xev` 來查找要映射的鍵的鍵碼和名稱。然後在 `~/.xinitrc` 中添加類似以下的內容

    xmodmap -e "keycode 115 = Super_L" -e "add mod4 = Super_L"
    exec awesome

此案例中的問題是，某些 Xorg 安裝能夠識別鍵碼115，但錯誤地將其識別為「選擇」鍵。上述命令明確地將鍵碼115重新映射到正確的「Super_L」鍵。

要使用 `setxkbmap` 重新映射 `mod4`（與 `xmodmap` 衝突）參見：

    tail -50 /usr/share/X11/xkb/rules/evdev

要將 caps lock 鍵設為 `mod4`，添加下列內容到 `~/.xinitrc`：

    setxkbmap -option caps:hyper

### 修復 Java (GUI 只顯示灰色)

參見 Java#灰色窗口，應用程式不隨窗口管理器調整大小，菜單立即關閉和這篇文檔。

### Eclipse: 不能調整或移動主窗口

如果你遇到卡頓，無法移動或調整主窗口大小（使用 mod4 鍵 + 滑鼠左/右鍵），請編輯 workbench.xml 文件，將 fullscreen/maximized 設置為 false（如果已設置），並將寬度和高度減小到小於你的單屏桌面區域的值。

注意：workbench.xml 可以在這個位置找到：<eclipse_workspace>/.metadata/.plugins/org.eclipse.ui.workbench/ 需要編輯的行是 <window height="xx" maximized="true" width="xx" x="xx" y="xx">.

### Netbeans: 代碼預測出現在錯誤的屏幕上

如果你有兩個顯示器，同時使用 Netbeans 的代碼預測（Ctrl + Space），代碼預測可能會出現在錯誤的屏幕。下列代碼能修復問題：

    .config/awesome/rc.lua

    awful.rules.rules = {
            ...
    	{
    		rule_matches = { -- Fix Netbeans
    			class = {
    				"sun-awt-X11-XWindowPeer", "NetBeans IDE 8.2"
    			},
    			name = {
    				"win1"
    			}
    		}, properties = { screen = 1 } -- even with screen 1 here, this still works on the seccond screen, too (do not know why).
    	},
            ...

### IntelliJ: 菜單出現在錯誤的位置，一些窗口打不開

本文或本節內容已經過時。

原因： 這個 issue 已經關閉了，請重新測試，如果不再需要，刪除這個章節。 (在Talk:Awesome討論)

參見 GitHub issue #2204。下列代碼能解決問題：

    .config/awesome/rc.lua

    clientbuttons_jetbrains = gears.table.join(
        awful.button({ modkey }, 1, awful.mouse.client.move),
        awful.button({ modkey }, 3, awful.mouse.client.resize)
    )

    ...

    awful.rules.rules = {
            ...
    	{
                rule = {
                    class = "jetbrains-.*",
                }, properties = { focus = true, buttons = clientbuttons_jetbrains }
            },
            {
                rule = {
                    class = "jetbrains-.*",
                    name = "win.*"
                }, properties = { titlebars_enabled = false, focusable = false, focus = true, floating = true, placement = awful.placement.restore }
            },
            ...
    }

### scrot: 無法使用鍵盤快捷鍵進行滑鼠選區的截圖

使用 scrot 時，在為滑鼠選擇選項分配鍵盤快捷鍵時，你可能會遇到問題（形式上是 `scrot -s`）。要修復它，向你的 `rc.lua` 添加下列內容：

    awful.key( { modkey,	 }, <shortcut>, nil, function () awful.spawn("scrot -s") end)

注意 `nil` 被傳送到 `awful.key` 的 `press` 參數。相反，回調函數作為第四個參數傳遞，該參數名為 `release`。.

### YouTube: 全屏出現在背景

參見此處。如果在全屏模式下，YouTube 視頻出現在你的瀏覽器下層，添加這些到你的 `rc.lua`：

       { rule = { instance = "plugin-container" },
         properties = { floating = true } },

如果你使用 Chromium 瀏覽器，添加：

       { rule = { instance = "exe" },
         properties = { floating = true } },

或：

    { rule = { role = "_NET_WM_STATE_FULLSCREEN" },
      properties = { floating = true } },

參見此處。

### 防止滑鼠滾輪更改標籤

在你的 `rc.lua` 中，修改滑鼠綁定為下列內容：

    -- {{{ Mouse bindings
    root.buttons(gears.table.join(
        awful.button({ }, 3, function () mymainmenu:toggle() end)
    ))
    -- }}}

### Xdg-menu 生成重複菜單項

如果你將 /usr/share/applications 中的桌面文件複製到 ~/.local/share/applications，Xdg-menu將會生成重複條目，儘管直接覆蓋原始文件可能更可取，例如為特定應用程式使用不同的主題。解決這個問題的一種方法是使用awk過濾生成的輸出，以刪除與前一條目名稱相同的條目。

     xdg_menu --format awesome --root-menu /etc/xdg/menus/arch-applications.menu | awk -F, '{if (a!=$1) print $a; a=$1}' >~/.config/awesome/archmenu.lua

### Xfce4 中部分快捷鍵因按鍵重疊而失效

檢查你的

    $ xfce4-keyboard-settings

關於像「Super L」這樣的重疊鍵或應由 awesome 運行的組合鍵。

### 內存洩漏

有些用戶即使沒有進行任何操作也會遇到內存洩漏問題。當使用大量小部件時，內存洩漏的速度可能高達每分鐘5 MB。為了緩解這一問題，您可以通過在 `~/.config/awesome/rc.lua` 文件中添加以下內容來強制執行更頻繁的垃圾收集：

    -- Run garbage collector regularly to prevent memory leaks
    gears.timer {
           timeout = 30,
           autostart = true,
           callback = function() collectgarbage() end
    }

## 額外連結

- https://awesomewm.org/apidoc/documentation/90-FAQ.md.html - FAQ
- https://www.lua.org/pil/ - Lua編程指南（第一版）
- https://awesomewm.org/ - awesome 官方網站
- https://bbs.archlinux.org/viewtopic.php?id=88926 - 分享你的awesome！
- https://web.archive.org/web/20111222025635/http://www.penguinsightings.org/desktop/awesome/ - 一條評論
- https://web.archive.org/web/20120427051008/http://compsoc.tardis.ed.ac.uk/wiki/AwesomeWM_guide - Awesome 指南

分類：​

- 動態窗口管理器
- 平鋪式窗口管理器
- 使用「模板:過時」標記的頁面或章節

隱藏分類：​

- 使用「模板:合併」標記的頁面或章節

awesome
新增話題