我刚刚将awesome作为窗口管理器安装了。当我使用awesome进行alt+tab切换时,它只能切换两个应用程序,无法激活其他应用程序...有什么想法吗?
我刚刚将awesome作为窗口管理器安装了。当我使用awesome进行alt+tab切换时,它只能切换两个应用程序,无法激活其他应用程序...有什么想法吗?
默认情况下,客户端将焦点设置为先前具有焦点的窗口。当您使用alt+tab切换窗口时,先前的窗口现在变成了原始窗口。因此,它在两个窗口之间循环。
要解决这个问题,您需要更改以下内容:
在默认的rc.lua文件中,控制窗口循环的部分如下所示:
awful.key({ modkey, }, "Tab",
function ()
awful.client.focus.history.previous()
if client.focus then
client.focus:raise()
end
end),
要循环遍历所有窗口,而不仅仅是前一个,请将上述代码更改为以下内容:
awful.key({ modkey, }, "Tab",
function ()
-- awful.client.focus.history.previous()
awful.client.focus.byidx(-1)
if client.focus then
client.focus:raise()
end
end),
awful.key({ modkey, "Shift" }, "Tab",
function ()
-- awful.client.focus.history.previous()
awful.client.focus.byidx(1)
if client.focus then
client.focus:raise()
end
end),
当你按下Alt+Tab
时,它会循环浏览窗口,当你按下Alt+Shift+Tab
时会反向循环浏览。(以--
开头的两行是注释,所以不会影响结果。)
要循环浏览标签上的每个客户端,甚至是最小化的客户端,你可能会发现这个函数很有用:
awful.key({ modkey, }, "Tab",
function ()
for c in awful.client.iterate(function (x) return true end) do
client.focus = c
client.focus:raise()
end
end),
注意,这些解决方案都不考虑历史记录,而是会切换到最近没有焦点的窗口(即不考虑窗口获取焦点的顺序)。
modkey+j
和 modkey+k
的默认设置完全相同。 - blueyedAlt-Tab
方法(请参见README),并可以通过过滤器轻松配置,这些过滤器在循环浏览窗口时会应用,例如仅筛选具有相同WM类别或在同一屏幕/标签中的窗口。我已经使用Chris在解决方案中提供的设置做了类似的事情。然而,与其通过所有窗口转移焦点,它实际上是将它们在主从堆栈中循环。换句话说,它们都在屏幕上可见地旋转:
awful.key({ modkey, "Shift" }, "Tab",
function ()
awful.client.cycle(false)
awful.client.focus.byidx(0,awful.client.getmaster()) -- Added 2013-03-01
end),
awful.key({ modkey, }, "Tab",
function ()
awful.client.cycle(true)
awful.client.focus.byidx(0,awful.client.getmaster()) -- Added 2013-03-01
end),
我仍需要稍微调整一下,因为我想在整个循环操作过程中,焦点(至少看起来)保留在主窗口上。当我发现aweful.client.cycle时,我还在熟悉Awesome Lua API,它使这个过程变得非常容易。
我觉得我会介绍一下我的当前解决方案,因为这是我调查的第一个解决类似问题的资源之一。希望能有所帮助。
在默认绑定中,按下 Mod + Tab 键可在最近使用的两个应用程序之间循环切换。我希望能够使用 Mod + j 或 Mod + k(反向顺序)进行切换。
我必须承认,我花了很长时间来设置正确的配置,以便获得我期望的行为:在所有标签上循环浏览所有窗口,包括(尤其是!)最小化的窗口,而不会使它们成为焦点并带有预览或通知。
cycle_filters
。awesome-cyclefocus/init.lua:
cycle_filters = {
--function(c, source_c) return not c.minimized end, --luacheck: no unused args
},
rc.lua
cyclefocus.key({ "Mod1", }, "Tab", {
show_clients = false,
focus_clients = false,
}),