Linux
切換到多台顯示器時的視窗位置
假設您打開了多個分佈在多個監視器上的視窗。然後您切換到使用單個顯示器(可能是因為您已將筆記型電腦從其擴展塢中移除)。您的所有視窗現在都在一個螢幕上。
然後切換回多顯示器配置。您現在擁有更多的螢幕空間,但您的所有視窗最初都堆積在一個顯示器上。如果你的視窗能回到它們原來所在的顯示器,那就太好了。
關於如何實現這一點的任何想法?
xdotool
粗略的想法,但您可以通過使用
xdotool
. 然後,當您連接了 1 或 2 台顯示器時,您可以相應地執行它們。在這篇標題為: Xubuntu – 在監視器之間移動視窗的文章中有一個很好的例子來說明如何做到這一點。
節選:將活動視窗移動到另一個監視器(終於!)
這是我們需要做的:
- 查找活動視窗
- 獲取其最大化狀態並記住它
- 刪除最大化
- 獲取它的幾何
- 計算新位置
- 移動它
- 根據之前的狀態最大化
- 舉起它
這是一個執行此操作的腳本:
wid=`xdotool getactivewindow` max_state=`xprop -id $wid _NET_WM_STATE` wmctrl -ir $wid -b remove,maximized_vert,maximized_horz eval `xdotool getwindowgeometry --shell $wid` new_x=1600 if [[ "$X" -ge "$new_x" ]]; then new_x=0 fi xdotool windowmove $wid $new_x $Y if [ -z "${max_state/*_NET_WM_STATE_MAXIMIZED_*/}" ]; then wmctrl -ir $wid -b add,maximized_vert,maximized_horz fi xdotool windowraise $wid
更多互動方式
我還發現了另一種方法,它也使用了
xdotool
但將其包裝在一個 shell 腳本中,然後您可以將其與快捷鍵相關聯。使用此方法,您可以選擇一個視窗,使其升起並獲得焦點,並通過點擊快捷鍵組合,將應用程序發送到另一個視窗。這篇文章的標題是:在監視器之間移動視窗。該方法提供以下腳本
windowmove.sh
:#!/bin/bash if [ $1 -eq 2 ] then POS1=`xrandr --current | head -2 | tail -1 | cut -d 'x' -f1 | cut -d ' ' -f3` POS2=0 else POS1=0 POS2=0 fi /usr/bin/xdotool windowmove `/usr/bin/xdotool getwindowfocus` $POS1 $POS2 exit 0
POS1 使用 xrandr 的輸出計算主螢幕的寬度。如果您發現腳本無法將視窗向右移動,但可以向左移動,請嘗試將該行替換為 POS1=1920,並將 1920 替換為您的主顯示器的寬度(以像素為單位)。
然後執行鍵盤綁定小程序:
$ gnome-keybinding-properties
**注意:**這可以通過 GUI 從不同發行版的不同位置執行。
使用這 2 個應用程序啟動創建 2 個鍵綁定:
- 綁定#1的命令:
./Scripts/windowmove.sh 1
- 綁定#2的命令:
./Scripts/windowmove.sh 2