我想知道如何在另一个工作区工作时在不同的工作区中打开脚本。该脚本每 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”命令对于单独运行终端程序很有帮助。