是否可以通过awesome wm(v4.0)中的热键切换到特定屏幕?
假设你有屏幕DP-1-2,DP-2-2和eDP-1。您现在想要切换到屏幕DP-1-2无论您当前在哪个屏幕上。
优选地,人们可以使用相同的技术将应用程序移动到特定屏幕。
这有可能吗?
答案1
据我所知,没有默认绑定,但创建它们所需的方法存在:
- 直接对焦屏幕
awful.screen.focus
。获取一个屏幕对象以将焦点移至该对象。 - 移动客户
client:move_to_screen
。请注意,您需要将其添加到客户端绑定表中,而不是全局绑定表中。
如果要根据 randr 输出名称创建绑定,可以使用屏幕对象outputs
财产。该表的 randr 输出名称为键,因此用于此目的有点复杂。我会尝试这样的事情:
for s in screen do
for out,_ in pairs(s.outputs) do
if out == "eDP1" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F1", function() awful.screen.focus(s) end))
elseif out == "DP-1-2" then
-- ...
end
end
end
我现在无法测试它,这里没有多个屏幕可用。
答案2
基于答案陨石坑2150我找到了一个可行的解决方案。我发布此内容以防有人遇到同样的问题。
-- set up keybindings based on existing monitors
for s in screen do
for screen_name, _ in pairs(s.outputs) do
if screen_name == "eDP-1" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F1", function() awful.screen.focus(s) end))
elseif screen_name == "DP-2-2" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F2", function() awful.screen.focus(s) end))
elseif screen_name == "DP-1-2" then
globalkeys = awful.util.table.join(globalkeys,
awful.key({modkey}, "F3", function() awful.screen.focus(s) end))
end
end
end
只需迭代所有屏幕,如果您感兴趣的屏幕存在,请添加一个切换到相应屏幕的按键绑定。