다른 작업공간에서 작업하는 동안 다른 작업공간에서 스크립트를 여는 방법을 알고 싶습니다. 스크립트는 2초마다 다른 웹페이지를 열고, 모든 웹페이지를 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.
어떤 아이디어가 있나요?
답변1
가상 X 서버를 시작하고 스크립팅 환경의 $DISPLAY 변수가 해당 서버를 가리키도록 할 수 있습니다(아마도 X 서버에 대한 액세스를 구성한 후).
답변2
명령 뒤에 n & 을 추가하면 명령이 백그라운드에서 실행되도록 강제할 수 있습니다.
이렇게 하면 세션에서 출력이 여전히 인쇄되는 경우가 있습니다. 스크립트를 백그라운드에서 실행하려면 nohup을 사용하면 됩니다. 또한 nohup은 연결을 끊더라도 프로세스를 계속 실행합니다. 이 경우 출력은 nohup.out에 인쇄됩니다.
답변3
저는 "screen" 명령이 터미널 프로그램을 단독으로 실행하는 데 도움이 된다고 생각합니다.