Размещение окна при переключении на несколько мониторов

Предположим, у вас открыто несколько окон, открытых на нескольких мониторах. Затем вы переключаетесь на использование одного монитора (возможно, потому, что вы удалили свой ноутбук со своей док-станции). Все ваши окна теперь находятся на одном экране.

Затем вы вернетесь в конфигурацию нескольких мониторов. Теперь у вас больше места на экране, но все ваши окна сначала складываются на одном мониторе. Было бы неплохо, если бы ваши окна вернулись к монитору, на котором они были первоначально.

Любые идеи о том, как это сделать?

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 но обернул его в сценарий оболочки, который затем можно связать с сочетанием клавиш. Используя этот метод, вы можете выбрать окно, чтобы оно было поднято и было сосредоточено, и нажав комбинацию клавиш быстрого доступа, отправит приложение в другое окно. Статья называется « Перемещение окон между мониторами» .

Метод предоставляет следующий скрипт, 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 на ширину в пикселях вашего основного монитора.

Затем запустите апплет Keyboard Bindings:

 $ gnome-keybinding-properties 

ПРИМЕЧАНИЕ. С помощью графического интерфейса это можно использовать из разных мест на разных дистрибутивах.

Создайте 2 ключа, используя эти 2 запуска приложений:

  • binding # 1: ./Scripts/windowmove.sh 1
  • команда привязки # 2: ./Scripts/windowmove.sh 2