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
添加话题