Execute um script enquanto trabalha em outro programa

0

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?

    
por joshsoj 05.08.2017 / 21:04

3 respostas

0

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).

    
por 05.08.2017 / 21:34
0

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

    
por 05.08.2017 / 23:32
0

Eu achei o comando "screen" útil na execução de programas de terminal separadamente.

Como usar o Linux Screen | rackaid

    
por 06.08.2017 / 02:01