Você poderia iniciar um servidor X virtual e apontar a variável $ DISPLAY do seu ambiente de scripts para aquele (provavelmente depois de configurar o acesso a esse servidor X).
Gostaria de saber como abrir um script em um espaço de trabalho diferente enquanto estiver trabalhando em outro espaço de trabalho. O script abre páginas diferentes a cada 2 segundos e dura 2 minutos para abrir todas as páginas da web. É irritante ter que esperar terminar todo o processo. Enquanto o processo está funcionando, não posso fazer nada porque a cada dois segundos uma outra página da Web é aberta e a tela foca nessa nova página da Web.
Este é um exemplo do script:
#!/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
Eu tentei usar o comando wmctrl enviando cada nova guia de ópera para o segundo espaço de trabalho ...
wmctrl -s 1 #Switches to workspace 1
opera --new-window &
sleep 2;
... mas a tela coloca o foco nesse espaço de trabalho e não posso trabalhar no primeiro espaço de trabalho.
Outra solução ineficaz é manter meu espaço de trabalho no espaço de trabalho 1 e abrir a nova guia no espaço de trabalho 2 em um período de tempo muito pequeno. Quero dizer:
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.
Isso não é eficaz. Percebo a mudança entre os espaços de trabalho.
Portanto, a ideia é trabalhar em um programa enquanto o script está sendo executado em outro espaço de trabalho.
Estou usando o Xubuntu 14.04. Ambiente de trabalho Xfce. Gerenciador de janelas Xfwm4.
Alguma idéia?
Você poderia iniciar um servidor X virtual e apontar a variável $ DISPLAY do seu ambiente de scripts para aquele (provavelmente depois de configurar o acesso a esse servidor X).
Você pode forçar um comando a ser executado em segundo plano, executando-o com n & depois disso.
Quando você faz isso, às vezes a saída ainda é impressa na sua sessão. Se você quiser que um script seja executado em segundo plano, você pode usar nohup. Além disso, o nohup manterá o processo em execução se você se desconectar. A saída neste caso será impressa em nohup.out
Eu achei o comando "screen" útil na execução de programas de terminal separadamente.