Я хотел бы знать, как открыть скрипт в другом рабочем пространстве, работая в другом рабочем пространстве. Скрипт открывает разные веб-страницы каждые 2 секунды, и ему требуется 2 минуты, чтобы открыть все веб-страницы. Дождаться завершения всего процесса раздражает. Пока процесс работает, я ничего не могу сделать, потому что каждые две секунды открывается другая веб-страница, и экран фокусируется на этой новой веб-странице.
Это пример сценария:
#!/bin/bash
# Defining the screen size
a="$(xrandr | fgrep '*' | awk -F ' ' '{print $1}' | awk -F 'x' '{print $1}')"
b="$(xrandr | fgrep '*' | awk -F ' ' '{print $1}' | awk -F 'x' '{print $2}')"
# First tab
opera --new-window
sleep 1;
wmctrl -r :ACTIVE: -e 1,$((0)),$((0)),$((a)),$((b)) ;
sleep 2;
# Second tab
opera --new-window
sleep 2;
# Third tab
opera --new-window
sleep 2;
...
# n tab
opera --new-window
Я пытался использовать команду wmctrl, отправляя каждую новую вкладку Opera во вторую рабочую область ...
wmctrl -s 1 #Switches to workspace 1
opera --new-window &
sleep 2;
... но экран помещал фокус в эту рабочую область, и я могу Не работаю в первом рабочем пространстве.
Другое неэффективное решение - оставить мое рабочее пространство в рабочем пространстве 1 и открыть новую вкладку в рабочем пространстве 2 за очень короткий период времени. Я имею в виду:
wmctrl -s 0; # The workspace I am working in.
wmctrl -s 1; opera --new-window & sleep 0.01; #Change to workspace 2 and open the new tab in a short time.
wmctrl -s 0; # Change to workspace 1.
sleep 2;
wmctrl -s 1; opera --new-window & sleep 0.01;
wmctrl -s 0 #... and so on.
Это не эффективно. Я замечаю смену рабочих пространств.
Итак, идея состоит в том, чтобы работать в одной программе, пока сценарий выполняется в другой рабочей области.
Я использую: Xubuntu 14.04. Окружение рабочего стола Xfce. Оконный менеджер Xfwm4.
Есть идеи?
Вы можете запустить виртуальный X-сервер и указать переменную $DISPLAY вашей среды сценариев на этот (, возможно, после настройки доступа к этому X-серверу ).
Вы можете принудительно запустить команду в фоновом режиме, запустив ее с n & после нее.
Когда вы делаете это, иногда выходные данные все еще печатаются в вашем сеансе. Если вы хотите, чтобы скрипт работал скрыто в фоновом режиме, вы можете использовать nohup. Кроме того, nohup продолжит работу, если вы отключитесь. Вывод в этом случае будет напечатан в nohup.out
Я обнаружил, что команда "экран" полезна при отдельном запуске терминальных программ..