Как перенести все окна на один экран с помощью одной команды?

Вы можете использовать расширенную подстановка, но восклицательный знак идет перед шаблон:

[Ф1]

, если [Ф3] не горит, включить его в первый раз:

[Ф2]
3
задан 14 August 2011 в 13:23

21 ответ

Я хотел бы найти лучшее решение, но Compiz имеет группировку окон.

0
ответ дан 25 July 2018 в 21:51

Сценарий, который я сделал ниже, работает для меня, требуется только wmctrl. Вы можете получить это на Ubuntu с помощью команды sudo apt-get install wmctrl.

При необходимости вам может потребоваться внести некоторые незначительные изменения.

младшие модификации должны быть установлены на последнюю строку имени вашего компьютера (вы можете просмотреть это из System Settings> Details> Device name).

System Settings> Details> Device name это будет работать с двумя мониторами (с разрешением 1920x####), хотя вы можете переопределить эту переменную, установив элемент для каждый монитор подключен к вашему устройству и устанавливает его на любую координату x на этом экране.

$SKIPPED_WINDOWS - это список окон, которые вы не хотите перемещать при вызове этого сценария. Не стесняйтесь добавлять или удалять элементы. Список элементов можно просмотреть, введя команду wmctrl -l.

Наконец, этот сценарий принимает один параметр: $SKIPPED_WINDOWS , где n является монитором для перемещения окон.

#! /bin/bash IFS=$'\n' #prevents window names from breaking in loop #Computers Name #change this to the last characters before window names #0x02a00002 0 mycomputer-Envy-M3970 XdndCollectionWindowImp -> ie:last characters in computer name BEFORE_WINDOW_NAME="M3970" #MODIFY ME!! WINDOWS=$(wmctrl -l | grep -oh -P "(?<=$BEFORE_WINDOW_NAME\ ).*") #MODIFY MONITORS if needed declare -a MONITORS=( '0' # Monitor 1 '2150' # Monitor 2 ); declare -a SKIPPED_WINDOWS=( 'XdndCollectionWindowImp' 'unity-launcher' 'unity-panel' 'unity-dash' 'Hud' 'Desktop' 'Ubuntu' ); #loop through window names and move them for i in $WINDOWS; do if [[ " ${SKIPPED_WINDOWS[@]} " =~ " ${i} " ]]; then # whatever you DO NOT want to do when arr contains value # echo "Skipping $i" echo "" else # whatever you want to do when arr contains value echo "Moving $i" wmctrl -r "$i" -b remove,maximized_vert,maximized_horz wmctrl -r "$i" -e 0,"${MONITORS[$1]}",0,800,800 wmctrl -r "$i" -b add,maximized_vert,maximized_horz fi done
3
ответ дан 25 July 2018 в 21:51

Вы можете использовать wmctrl и небольшой скрипт bash для прокрутки окон, а затем поместить их на основной экран. Я бросил это вместе. Это может быть достаточно для вас.

#! /bin/bash #dump the list of windows to a file wmctrl -l > /tmp/window_list.txt x=40; y=40 #read the window information from the file while read id sticky host win_title; do #move any non-sticky windows except the desktop if [ "$sticky" == "0" -a "$win_title" != "x-nautilus-desktop" ] then wmctrl -i -r $id -e 0,$x,$y,-1,-1 x=$(($x + 40)) y=$(($y + 40)) fi done < /tmp/window_list.txt #delete the temporary file rm /tmp/window_list.txt exit 0

Сохраните его в файл с именем «move_windows.sh» или что-то подобное и дайте ему разрешения на выполнение с помощью chmod +x move_windows.sh, а затем создайте для него пусковую установку.

3
ответ дан 25 July 2018 в 21:51
  • 1
    О, почти забыл. Я не использую Unity, поэтому я не уверен, что он будет делать в этой среде. – Ramón 26 May 2011 в 05:26
  • 2
    Да, ему нужны некоторые настройки для единства, завтра плохое испытание. – Cas 26 May 2011 в 06:38
  • 3
    Спасибо! Ваш скрипт был очень полезен в поиске обходного пути для ошибки, с которой я столкнулся с openbox (он будет разбиваться каждый раз, когда я переключаю конфигурацию монитора, если окно было на внешнем мониторе). – Glutanimate 7 March 2013 в 10:14

Я хотел бы найти лучшее решение, но Compiz имеет группировку окон.

0
ответ дан 26 July 2018 в 17:15

Сценарий, который я сделал ниже, работает для меня, требуется только wmctrl. Вы можете получить это на Ubuntu с помощью команды sudo apt-get install wmctrl.

При необходимости вам может потребоваться внести некоторые незначительные изменения.

младшие модификации должны быть установлены на последнюю строку имени вашего компьютера (вы можете просмотреть это из System Settings> Details> Device name).

System Settings> Details> Device name это будет работать с двумя мониторами (с разрешением 1920x####), хотя вы можете переопределить эту переменную, установив элемент для каждый монитор подключен к вашему устройству и устанавливает его на любую координату x на этом экране.

$SKIPPED_WINDOWS - это список окон, которые вы не хотите перемещать при вызове этого сценария. Не стесняйтесь добавлять или удалять элементы. Список элементов можно просмотреть, введя команду wmctrl -l.

Наконец, этот сценарий принимает один параметр: $SKIPPED_WINDOWS , где n является монитором для перемещения окон.

#! /bin/bash IFS=$'\n' #prevents window names from breaking in loop #Computers Name #change this to the last characters before window names #0x02a00002 0 mycomputer-Envy-M3970 XdndCollectionWindowImp -> ie:last characters in computer name BEFORE_WINDOW_NAME="M3970" #MODIFY ME!! WINDOWS=$(wmctrl -l | grep -oh -P "(?<=$BEFORE_WINDOW_NAME\ ).*") #MODIFY MONITORS if needed declare -a MONITORS=( '0' # Monitor 1 '2150' # Monitor 2 ); declare -a SKIPPED_WINDOWS=( 'XdndCollectionWindowImp' 'unity-launcher' 'unity-panel' 'unity-dash' 'Hud' 'Desktop' 'Ubuntu' ); #loop through window names and move them for i in $WINDOWS; do if [[ " ${SKIPPED_WINDOWS[@]} " =~ " ${i} " ]]; then # whatever you DO NOT want to do when arr contains value # echo "Skipping $i" echo "" else # whatever you want to do when arr contains value echo "Moving $i" wmctrl -r "$i" -b remove,maximized_vert,maximized_horz wmctrl -r "$i" -e 0,"${MONITORS[$1]}",0,800,800 wmctrl -r "$i" -b add,maximized_vert,maximized_horz fi done
3
ответ дан 26 July 2018 в 17:15

Вы можете использовать wmctrl и небольшой скрипт bash для прокрутки окон, а затем поместить их на основной экран. Я бросил это вместе. Это может быть достаточно для вас.

#! /bin/bash #dump the list of windows to a file wmctrl -l > /tmp/window_list.txt x=40; y=40 #read the window information from the file while read id sticky host win_title; do #move any non-sticky windows except the desktop if [ "$sticky" == "0" -a "$win_title" != "x-nautilus-desktop" ] then wmctrl -i -r $id -e 0,$x,$y,-1,-1 x=$(($x + 40)) y=$(($y + 40)) fi done < /tmp/window_list.txt #delete the temporary file rm /tmp/window_list.txt exit 0

Сохраните его в файл с именем «move_windows.sh» или что-то подобное и дайте ему разрешения на выполнение с помощью chmod +x move_windows.sh, а затем создайте для него пусковую установку.

3
ответ дан 26 July 2018 в 17:15
  • 1
    О, почти забыл. Я не использую Unity, поэтому я не уверен, что он будет делать в этой среде. – Ramón 26 May 2011 в 05:26
  • 2
    Да, ему нужны некоторые настройки для единства, завтра плохое испытание. – Cas 26 May 2011 в 06:38
  • 3
    Спасибо! Ваш скрипт был очень полезен в поиске обходного пути для ошибки, с которой я столкнулся с openbox (он будет разбиваться каждый раз, когда я переключаю конфигурацию монитора, если окно было на внешнем мониторе). – Glutanimate 7 March 2013 в 10:14

Я хотел бы найти лучшее решение, но Compiz имеет группировку окон.

0
ответ дан 31 July 2018 в 13:18

Сценарий, который я сделал ниже, работает для меня, требуется только wmctrl. Вы можете получить это на Ubuntu с помощью команды sudo apt-get install wmctrl.

При необходимости вам может потребоваться внести некоторые незначительные изменения.

младшие модификации должны быть установлены на последнюю строку имени вашего компьютера (вы можете просмотреть это из System Settings> Details> Device name).

System Settings> Details> Device name это будет работать с двумя мониторами (с разрешением 1920x####), хотя вы можете переопределить эту переменную, установив элемент для каждый монитор подключен к вашему устройству и устанавливает его на любую координату x на этом экране.

$SKIPPED_WINDOWS - это список окон, которые вы не хотите перемещать при вызове этого сценария. Не стесняйтесь добавлять или удалять элементы. Список элементов можно просмотреть, введя команду wmctrl -l.

Наконец, этот сценарий принимает один параметр: $SKIPPED_WINDOWS , где n является монитором для перемещения окон.

#! /bin/bash IFS=$'\n' #prevents window names from breaking in loop #Computers Name #change this to the last characters before window names #0x02a00002 0 mycomputer-Envy-M3970 XdndCollectionWindowImp -> ie:last characters in computer name BEFORE_WINDOW_NAME="M3970" #MODIFY ME!! WINDOWS=$(wmctrl -l | grep -oh -P "(?<=$BEFORE_WINDOW_NAME\ ).*") #MODIFY MONITORS if needed declare -a MONITORS=( '0' # Monitor 1 '2150' # Monitor 2 ); declare -a SKIPPED_WINDOWS=( 'XdndCollectionWindowImp' 'unity-launcher' 'unity-panel' 'unity-dash' 'Hud' 'Desktop' 'Ubuntu' ); #loop through window names and move them for i in $WINDOWS; do if [[ " ${SKIPPED_WINDOWS[@]} " =~ " ${i} " ]]; then # whatever you DO NOT want to do when arr contains value # echo "Skipping $i" echo "" else # whatever you want to do when arr contains value echo "Moving $i" wmctrl -r "$i" -b remove,maximized_vert,maximized_horz wmctrl -r "$i" -e 0,"${MONITORS[$1]}",0,800,800 wmctrl -r "$i" -b add,maximized_vert,maximized_horz fi done
3
ответ дан 31 July 2018 в 13:18

Вы можете использовать wmctrl и небольшой скрипт bash для прокрутки окон, а затем поместить их на основной экран. Я бросил это вместе. Это может быть достаточно для вас.

#! /bin/bash #dump the list of windows to a file wmctrl -l > /tmp/window_list.txt x=40; y=40 #read the window information from the file while read id sticky host win_title; do #move any non-sticky windows except the desktop if [ "$sticky" == "0" -a "$win_title" != "x-nautilus-desktop" ] then wmctrl -i -r $id -e 0,$x,$y,-1,-1 x=$(($x + 40)) y=$(($y + 40)) fi done < /tmp/window_list.txt #delete the temporary file rm /tmp/window_list.txt exit 0

Сохраните его в файл с именем «move_windows.sh» или что-то подобное и дайте ему разрешения на выполнение с помощью chmod +x move_windows.sh, а затем создайте для него пусковую установку.

3
ответ дан 31 July 2018 в 13:18
  • 1
    О, почти забыл. Я не использую Unity, поэтому я не уверен, что он будет делать в этой среде. – Ramón 26 May 2011 в 05:26
  • 2
    Да, ему нужны некоторые настройки для единства, завтра плохое испытание. – Cas 26 May 2011 в 06:38
  • 3
    Спасибо! Ваш скрипт был очень полезен в поиске обходного пути для ошибки, с которой я столкнулся с openbox (он будет разбиваться каждый раз, когда я переключаю конфигурацию монитора, если окно было на внешнем мониторе). – Glutanimate 7 March 2013 в 10:14

Я хотел бы найти лучшее решение, но Compiz имеет группировку окон.

0
ответ дан 2 August 2018 в 03:26

скрипт я сделал ниже работает для меня, требует только wmctrl. Вы можете сделать это в Ubuntu с помощью команды sudo apt-get install wmctrl.

в случае необходимости, вам может понадобиться, чтобы сделать некоторые незначительные изменения.

мелкие изменения должен быть установлен в последней строке имя компьютера вытащил (можно просмотреть с System Settings>Details>Device name).

System Settings>Details>Device name это будет работать с 2 мониторами (с resoloution в 1920x####) хотя вы можете переопределить эту переменную, установив элемент для каждого монитора, подключенного к компьютеру устройства и установка его на [F10] для координат на экране.

$SKIPPED_WINDOWS находится список Windows, Вы не хотите двигаться, когда вызывается этот скрипт. Не стесняйтесь добавлять или удалять элементы. Список пунктов можно посмотреть, набрав в командной wmctrl -l.

в конце концов, этот скрипт взять в один параметр, т. е. : $SKIPPED_WINDOWS, где n - это следить за тем, чтобы передвигать окна.

#! /bin/bash IFS=$'\n' #prevents window names from breaking in loop #Computers Name #change this to the last characters before window names #0x02a00002 0 mycomputer-Envy-M3970 XdndCollectionWindowImp -> ie:last characters in computer name BEFORE_WINDOW_NAME="M3970" #MODIFY ME!! WINDOWS=$(wmctrl -l | grep -oh -P "(?<=$BEFORE_WINDOW_NAME\ ).*") #MODIFY MONITORS if needed declare -a MONITORS=( '0' # Monitor 1 '2150' # Monitor 2 ); declare -a SKIPPED_WINDOWS=( 'XdndCollectionWindowImp' 'unity-launcher' 'unity-panel' 'unity-dash' 'Hud' 'Desktop' 'Ubuntu' ); #loop through window names and move them for i in $WINDOWS; do if [[ " ${SKIPPED_WINDOWS[@]} " =~ " ${i} " ]]; then # whatever you DO NOT want to do when arr contains value # echo "Skipping $i" echo "" else # whatever you want to do when arr contains value echo "Moving $i" wmctrl -r "$i" -b remove,maximized_vert,maximized_horz wmctrl -r "$i" -e 0,"${MONITORS[$1]}",0,800,800 wmctrl -r "$i" -b add,maximized_vert,maximized_horz fi done
3
ответ дан 2 August 2018 в 03:26

Вы можете использовать wmctrl и небольшой скрипт bash для прокрутки окон, а затем поместить их на основной экран. Я бросил это вместе. Это может быть достаточно для вас.

#! /bin/bash #dump the list of windows to a file wmctrl -l > /tmp/window_list.txt x=40; y=40 #read the window information from the file while read id sticky host win_title; do #move any non-sticky windows except the desktop if [ "$sticky" == "0" -a "$win_title" != "x-nautilus-desktop" ] then wmctrl -i -r $id -e 0,$x,$y,-1,-1 x=$(($x + 40)) y=$(($y + 40)) fi done < /tmp/window_list.txt #delete the temporary file rm /tmp/window_list.txt exit 0

Сохраните его в файл с именем «move_windows.sh» или что-то подобное и дайте ему разрешения на выполнение с помощью chmod +x move_windows.sh, а затем создайте для него пусковую установку.

3
ответ дан 2 August 2018 в 03:26
  • 1
    О, почти забыл. Я не использую Unity, поэтому я не уверен, что он будет делать в этой среде. – Ramón 26 May 2011 в 05:26
  • 2
    Да, ему нужны некоторые настройки для единства, завтра плохое испытание. – Cas 26 May 2011 в 06:38
  • 3
    Спасибо! Ваш скрипт был очень полезен в поиске обходного пути для ошибки, с которой я столкнулся с openbox (он будет разбиваться каждый раз, когда я переключаю конфигурацию монитора, если окно было на внешнем мониторе). – Glutanimate 7 March 2013 в 10:14

Я хотел бы найти лучшее решение, но Compiz имеет группировку окон.

0
ответ дан 4 August 2018 в 19:24

скрипт я сделал ниже работает для меня, требует только wmctrl. Вы можете сделать это в Ubuntu с помощью команды sudo apt-get install wmctrl.

в случае необходимости, вам может понадобиться, чтобы сделать некоторые незначительные изменения.

мелкие изменения должен быть установлен в последней строке имя компьютера вытащил (можно просмотреть с System Settings>Details>Device name).

System Settings>Details>Device name это будет работать с 2 мониторами (с resoloution в 1920x####) хотя вы можете переопределить эту переменную, установив элемент для каждого монитора, подключенного к компьютеру устройства и установка его на [F10] для координат на экране.

$SKIPPED_WINDOWS находится список Windows, Вы не хотите двигаться, когда вызывается этот скрипт. Не стесняйтесь добавлять или удалять элементы. Список пунктов можно посмотреть, набрав в командной wmctrl -l.

в конце концов, этот скрипт взять в один параметр, т. е. : $SKIPPED_WINDOWS, где n - это следить за тем, чтобы передвигать окна.

#! /bin/bash IFS=$'\n' #prevents window names from breaking in loop #Computers Name #change this to the last characters before window names #0x02a00002 0 mycomputer-Envy-M3970 XdndCollectionWindowImp -> ie:last characters in computer name BEFORE_WINDOW_NAME="M3970" #MODIFY ME!! WINDOWS=$(wmctrl -l | grep -oh -P "(?<=$BEFORE_WINDOW_NAME\ ).*") #MODIFY MONITORS if needed declare -a MONITORS=( '0' # Monitor 1 '2150' # Monitor 2 ); declare -a SKIPPED_WINDOWS=( 'XdndCollectionWindowImp' 'unity-launcher' 'unity-panel' 'unity-dash' 'Hud' 'Desktop' 'Ubuntu' ); #loop through window names and move them for i in $WINDOWS; do if [[ " ${SKIPPED_WINDOWS[@]} " =~ " ${i} " ]]; then # whatever you DO NOT want to do when arr contains value # echo "Skipping $i" echo "" else # whatever you want to do when arr contains value echo "Moving $i" wmctrl -r "$i" -b remove,maximized_vert,maximized_horz wmctrl -r "$i" -e 0,"${MONITORS[$1]}",0,800,800 wmctrl -r "$i" -b add,maximized_vert,maximized_horz fi done
3
ответ дан 4 August 2018 в 19:24

Вы можете использовать wmctrl и небольшой скрипт bash для прокрутки окон, а затем поместить их на основной экран. Я бросил это вместе. Это может быть достаточно для вас.

#! /bin/bash #dump the list of windows to a file wmctrl -l > /tmp/window_list.txt x=40; y=40 #read the window information from the file while read id sticky host win_title; do #move any non-sticky windows except the desktop if [ "$sticky" == "0" -a "$win_title" != "x-nautilus-desktop" ] then wmctrl -i -r $id -e 0,$x,$y,-1,-1 x=$(($x + 40)) y=$(($y + 40)) fi done < /tmp/window_list.txt #delete the temporary file rm /tmp/window_list.txt exit 0

Сохраните его в файл с именем «move_windows.sh» или что-то подобное и дайте ему разрешения на выполнение с помощью chmod +x move_windows.sh, а затем создайте для него пусковую установку.

3
ответ дан 4 August 2018 в 19:24
  • 1
    О, почти забыл. Я не использую Unity, поэтому я не уверен, что он будет делать в этой среде. – Ramón 26 May 2011 в 05:26
  • 2
    Да, ему нужны некоторые настройки для единства, завтра плохое испытание. – Cas 26 May 2011 в 06:38
  • 3
    Спасибо! Ваш скрипт был очень полезен в поиске обходного пути для ошибки, с которой я столкнулся с openbox (он будет разбиваться каждый раз, когда я переключаю конфигурацию монитора, если окно было на внешнем мониторе). – Glutanimate 7 March 2013 в 10:14

Я хотел бы найти лучшее решение, но Compiz имеет группировку окон.

0
ответ дан 6 August 2018 в 03:35

скрипт я сделал ниже работает для меня, требует только wmctrl. Вы можете сделать это в Ubuntu с помощью команды sudo apt-get install wmctrl.

в случае необходимости, вам может понадобиться, чтобы сделать некоторые незначительные изменения.

мелкие изменения должен быть установлен в последней строке имя компьютера вытащил (можно просмотреть с System Settings>Details>Device name).

System Settings>Details>Device name это будет работать с 2 мониторами (с resoloution в 1920x####) хотя вы можете переопределить эту переменную, установив элемент для каждого монитора, подключенного к компьютеру устройства и установка его на [F10] для координат на экране.

$SKIPPED_WINDOWS находится список Windows, Вы не хотите двигаться, когда вызывается этот скрипт. Не стесняйтесь добавлять или удалять элементы. Список пунктов можно посмотреть, набрав в командной wmctrl -l.

в конце концов, этот скрипт взять в один параметр, т. е. : $SKIPPED_WINDOWS, где n - это следить за тем, чтобы передвигать окна.

#! /bin/bash IFS=$'\n' #prevents window names from breaking in loop #Computers Name #change this to the last characters before window names #0x02a00002 0 mycomputer-Envy-M3970 XdndCollectionWindowImp -> ie:last characters in computer name BEFORE_WINDOW_NAME="M3970" #MODIFY ME!! WINDOWS=$(wmctrl -l | grep -oh -P "(?<=$BEFORE_WINDOW_NAME\ ).*") #MODIFY MONITORS if needed declare -a MONITORS=( '0' # Monitor 1 '2150' # Monitor 2 ); declare -a SKIPPED_WINDOWS=( 'XdndCollectionWindowImp' 'unity-launcher' 'unity-panel' 'unity-dash' 'Hud' 'Desktop' 'Ubuntu' ); #loop through window names and move them for i in $WINDOWS; do if [[ " ${SKIPPED_WINDOWS[@]} " =~ " ${i} " ]]; then # whatever you DO NOT want to do when arr contains value # echo "Skipping $i" echo "" else # whatever you want to do when arr contains value echo "Moving $i" wmctrl -r "$i" -b remove,maximized_vert,maximized_horz wmctrl -r "$i" -e 0,"${MONITORS[$1]}",0,800,800 wmctrl -r "$i" -b add,maximized_vert,maximized_horz fi done
3
ответ дан 6 August 2018 в 03:35

Вы можете использовать wmctrl и небольшой скрипт bash для прокрутки окон, а затем поместить их на основной экран. Я бросил это вместе. Это может быть достаточно для вас.

#! /bin/bash #dump the list of windows to a file wmctrl -l > /tmp/window_list.txt x=40; y=40 #read the window information from the file while read id sticky host win_title; do #move any non-sticky windows except the desktop if [ "$sticky" == "0" -a "$win_title" != "x-nautilus-desktop" ] then wmctrl -i -r $id -e 0,$x,$y,-1,-1 x=$(($x + 40)) y=$(($y + 40)) fi done < /tmp/window_list.txt #delete the temporary file rm /tmp/window_list.txt exit 0

Сохраните его в файл с именем «move_windows.sh» или что-то подобное и дайте ему разрешения на выполнение с помощью chmod +x move_windows.sh, а затем создайте для него пусковую установку.

3
ответ дан 6 August 2018 в 03:35
  • 1
    О, почти забыл. Я не использую Unity, поэтому я не уверен, что он будет делать в этой среде. – Ramón 26 May 2011 в 05:26
  • 2
    Да, ему нужны некоторые настройки для единства, завтра плохое испытание. – Cas 26 May 2011 в 06:38
  • 3
    Спасибо! Ваш скрипт был очень полезен в поиске обходного пути для ошибки, с которой я столкнулся с openbox (он будет разбиваться каждый раз, когда я переключаю конфигурацию монитора, если окно было на внешнем мониторе). – Glutanimate 7 March 2013 в 10:14

Я хотел бы найти лучшее решение, но Compiz имеет группировку окон.

0
ответ дан 7 August 2018 в 21:24

Сценарий, который я сделал ниже, работает для меня, требуется только wmctrl. Вы можете получить это на Ubuntu с помощью команды sudo apt-get install wmctrl.

При необходимости вам может потребоваться внести некоторые незначительные изменения.

младшие модификации должны быть установлены на последнюю строку имени вашего компьютера (вы можете просмотреть это из System Settings> Details> Device name).

System Settings> Details> Device name это будет работать с двумя мониторами (с разрешением 1920x####), хотя вы можете переопределить эту переменную, установив элемент для каждый монитор подключен к вашему устройству и устанавливает его на любую координату x на этом экране.

$SKIPPED_WINDOWS - это список окон, которые вы не хотите перемещать при вызове этого сценария. Не стесняйтесь добавлять или удалять элементы. Список элементов можно просмотреть, введя команду wmctrl -l.

Наконец, этот сценарий принимает один параметр: $SKIPPED_WINDOWS , где n является монитором для перемещения окон.

#! /bin/bash IFS=$'\n' #prevents window names from breaking in loop #Computers Name #change this to the last characters before window names #0x02a00002 0 mycomputer-Envy-M3970 XdndCollectionWindowImp -> ie:last characters in computer name BEFORE_WINDOW_NAME="M3970" #MODIFY ME!! WINDOWS=$(wmctrl -l | grep -oh -P "(?<=$BEFORE_WINDOW_NAME\ ).*") #MODIFY MONITORS if needed declare -a MONITORS=( '0' # Monitor 1 '2150' # Monitor 2 ); declare -a SKIPPED_WINDOWS=( 'XdndCollectionWindowImp' 'unity-launcher' 'unity-panel' 'unity-dash' 'Hud' 'Desktop' 'Ubuntu' ); #loop through window names and move them for i in $WINDOWS; do if [[ " ${SKIPPED_WINDOWS[@]} " =~ " ${i} " ]]; then # whatever you DO NOT want to do when arr contains value # echo "Skipping $i" echo "" else # whatever you want to do when arr contains value echo "Moving $i" wmctrl -r "$i" -b remove,maximized_vert,maximized_horz wmctrl -r "$i" -e 0,"${MONITORS[$1]}",0,800,800 wmctrl -r "$i" -b add,maximized_vert,maximized_horz fi done
3
ответ дан 7 August 2018 в 21:24

Вы можете использовать wmctrl и небольшой скрипт bash для прокрутки окон, а затем поместить их на основной экран. Я бросил это вместе. Это может быть достаточно для вас.

#! /bin/bash #dump the list of windows to a file wmctrl -l > /tmp/window_list.txt x=40; y=40 #read the window information from the file while read id sticky host win_title; do #move any non-sticky windows except the desktop if [ "$sticky" == "0" -a "$win_title" != "x-nautilus-desktop" ] then wmctrl -i -r $id -e 0,$x,$y,-1,-1 x=$(($x + 40)) y=$(($y + 40)) fi done < /tmp/window_list.txt #delete the temporary file rm /tmp/window_list.txt exit 0

Сохраните его в файл с именем «move_windows.sh» или что-то подобное и дайте ему разрешения на выполнение с помощью chmod +x move_windows.sh, а затем создайте для него пусковую установку.

3
ответ дан 7 August 2018 в 21:24
  • 1
    О, почти забыл. Я не использую Unity, поэтому я не уверен, что он будет делать в этой среде. – Ramón 26 May 2011 в 05:26
  • 2
    Да, ему нужны некоторые настройки для единства, завтра плохое испытание. – Cas 26 May 2011 в 06:38
  • 3
    Спасибо! Ваш скрипт был очень полезен в поиске обходного пути для ошибки, с которой я столкнулся с openbox (он будет разбиваться каждый раз, когда я переключаю конфигурацию монитора, если окно было на внешнем мониторе). – Glutanimate 7 March 2013 в 10:14

Другие вопросы по тегам:

Похожие вопросы: