如何将窗口从一个外部显示器切换到另一个外部显示器?

如何将窗口从一个外部显示器切换到另一个外部显示器?

我想将键盘快捷键(Alt + Space)映射到一系列操作,并且希望获得一些帮助来编写脚本。

我有三个显示器。内置笔记本电脑显示器和两个外接显示器。当我编码时,我喜欢在一个显示器上显示代码,在另一个显示器上显示浏览器,在第三个显示器上显示第三个项目(Photoshop 或文件导航器)。

但是,当我向左看编写代码,或者向右看在浏览器中进行更改时,我发现我的脖子抽筋了。

我想要的键盘快捷键应该可以在显示器之间移动窗口。如果三个显示器中分别按顺序显示代码编辑器、浏览器和 Nautilus,则按一次 Alt + Space 会将其更改为 Nautilus、代码编辑器、浏览器。再次按下它会将其更改为浏览器、Nautilus、代码编辑器,第三次按下它会恢复第一个设置。

对于每台显示器上可能显示的任何内容,我该如何执行此操作?比如,如果我碰巧在第一个显示器上打开了三个窗口,在第二个显示器上打开了两个终端窗口,在第三个显示器上打开了五个浏览器窗口,那么每个屏幕上的内容会随机排列吗?也许可以使用工作区并重新排序?

一些帮助会很棒:)

更新:顺便说一下,在 Gnome 上。

答案1

看来您想在屏幕之间交换窗口。

为了韦兰,解决方案特定于窗口管理器。

  • 对于 KWin,你可以尝试编写一个KWin 脚本

为了X11,有一些选项可以与任何窗口管理器配合使用。您需要编写一些代码将所有内容绑定到一个有凝聚力的脚本中。如果屏幕在逻辑上并排,则可以使用模块化算法来计算位置。

  • 用于xrandr改变屏幕的位置。如果屏幕尺寸不同,效果就不太好。

    xrandr --output HDMI1 --pos 1366x0 --output eDP1 --pos 0x0
    xrandr --output eDP1 --pos 1366x0 --output HDMI1 --pos 0x0
    
  • 用于wmctrl -p -G -l获取 Windows 列表。然后使用以下命令移动它们:

    wmctrl -i -r 0x0000000 -e 0,x,y,W,H
    

    您可以根据需要计算位置x,y和大小。使用以保持相同的值。W,H-1

  • xdotool是另一个可能有用的工具。

答案2

我已经用 解决了这个问题wmctrl。我将一些 bash 脚本映射到 ,以便Num Lock快速将窗口移动到新位置。这里是我的方法。例如,要移动到右侧屏幕:

#!/bin/bash
# Places the window to the right screen:
# [   ][x]
wmctrl -r :ACTIVE: -b remove,fullscreen
wmctrl -r :ACTIVE: -b remove,maximized_vert,maximized_horz
wmctrl -r :ACTIVE: -e 0,3840,0,1920,1050
wmctrl -r :ACTIVE: -b add,maximized_vert

相关内容