在很棒的 wm 中更改到特定屏幕

在很棒的 wm 中更改到特定屏幕

是否可以通过awesome wm(v4.0)中的热键切换到特定屏幕?

假设你有屏幕DP-1-2,DP-2-2eDP-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

只需迭代所有屏幕,如果您感兴趣的屏幕存在,请添加一个切换到相应屏幕的按键绑定。

相关内容