Awesome 窗口管理器——缩略图技巧
如果你的桌面经常运行着两位数以上的虚拟终端,即使你为此定义了多个虚拟桌面(tag),然而有时候你仍然会迷失。这就好像在 Firefox 浏览器里打开了20个页面,当你想要定位其中某一个的时候就显得不那么容易。
这里我讲的缩略图,并不像在文件管理器打开一个图片文件夹时显示的那样,但凭借窗口平铺的功能,结果很像那么回事。
当我迷失的时候,我用 Meta-1 在 tag1 中查看所有终端的缩略图,通过 Meta-h/j/k/l 选中感兴趣的终端,接着用 Meta-Enter 跳转至该终端所在 tag。配置如下:
v3.3
...
toggletags = {
["x-terminal-emulator"] = { screen = 1, tag = 1 },
}
...
-- Hook function to execute when a new client appears.
awful.hooks.manage.register(function (c, startup)
...
-- Check if the application should be floating.
...
-- Check application->screen/tag mappings.
...
-- Check application->toggletag mappings.
if toggletags[cls] then
target = toggletags[cls]
awful.client.toggletag(tags[target.screen][target.tag], c)
elseif toggletags[inst] then
target = toggletags[inst]
awful.client.toggletag(tags[target.screen][target.tag], c)
end
...
end)
...
clientkeys = awful.util.table.join(
...
awful.key({ modkey, }, "Return", function (c)
if (c:tags()[2]) then
awful.tag.viewonly(c:tags()[2])
end
end)
)
v3.4
...
toggletags = {
["x-terminal-emulator"] = { screen = 1, tag = 1 },
}
...
-- Signal function to execute when a new client appears.
client.add_signal("manage", function (c, startup)
...
-- Disable sloppy focus
...
-- Check application->toggletag mappings.
local cls = c.class
local inst = c.instance
local target
if toggletags[cls] then
target = toggletags[cls]
awful.client.toggletag(tags[target.screen][target.tag], c)
client.focus = c
elseif toggletags[inst] then
target = toggletags[inst]
awful.client.toggletag(tags[target.screen][target.tag], c)
client.focus = c
end
...
end)
...
clientkeys = awful.util.table.join(
...
awful.key({ modkey, }, "Return", function (c)
if (c:tags()[2]) then
awful.tag.viewonly(c:tags()[2])
end
end)
)
简单说明一下。在 Awesome 新建一个窗口时,我们让它检查我们定义的 toggletags:该窗口的 CLASS 是否是 x-terminal-emulator (通过 xprop 命令可以查询某个窗口的 CLASS 值)。如果是的话,把这个终端添加到我们定义的 screen = 1, tag = 1 里面。