Como executar um bash .sh depois de iniciar um programa no PlayOnLinux?

3

Eu tenho um pequeno script que precisa ser executado toda vez que eu abro um programa de vinhos. O script é bem simples:

#!/bin/bash
xdotool windowmove 67108871 1440 0

Como obtenho o PlayOnLinux para executar este script toda vez que eu abro um determinado programa?

    
por Ruben Bakker 10.03.2013 / 15:09

2 respostas

0

Eu não uso o PlayOnLinux, mas talvez uma abordagem genérica seja de alguma utilidade.

A idéia básica é substituir o script invocador - aquele que executa seu programa agora - por um novo que execute seu novo script antes ou depois de executar o script de chamada (o que melhor se adequar ao que você deseja realizar - provavelmente após , no seu caso).

Se o seu script puder executar antes do seu programa, tudo o que você precisa fazer é encontrar o script ou programa que invoca seu programa e substituí-lo por outro (com um nome diferente, se possível, para não causar confusão ou pior).

O novo script executaria seu script de instalação e executaria o script original para invocar seu programa (usando o caminho completo para o script de chamada se o novo script tiver o mesmo nome que o original - para evitar um loop infinito).

Se seu script tiver que ser executado após seu programa ter iniciado (como no seu caso), isso é muito mais complicado. Eu não tenho ideia de como fazer isso, mas eu começaria a procurar obtendo o número do processo do programa e vendo se eu poderia procurar na janela pelo número do processo. (Eu não usei xdotool, mas olhando para a sua descrição sugere que talvez usando xdotool search ou xdotool getactivewindow windowmove ... pode ser útil. Parece que você pode fazer o que quiser, desde que você saiba o nome exclusivo da janela.)

Se você conseguir que isso funcione, invocá-lo envolveria apenas invocar o script original e seu script. Para fazer isso, seu novo script de chamada invocaria o script original e o novo script. Mas, seu script de chamada provavelmente não irá renunciar ao controle de volta ao seu script até que seu programa esteja completamente terminado e seja muito tarde para executar seu novo script.

Se você puder executar seu script de chamada com um & amp; depois de deixá-lo rodar em segundo plano, o controle voltará ao seu script e você poderá executar imediatamente o novo script para modificar a janela. Se isso funcionar, então $! conterá o número do processo do seu script de chamada, se isso ajudar.

HTH

    
por Joe 14.03.2013 / 05:40
0

Tente isto:
Supondo que o nome do arquivo do programa a ser lançado seja birds.exe em C: \ Arquivos de programas \
No início do script bash copie este código (com nome de arquivo modificado).

while ! ( ps aux |grep -v 'grep' | grep 'Birds.exe' >/dev/null ); do echo 'waiting for pgm to start...'; sleep 1; done; echo "Program 'Birds.exe' stared'"  

Altere o Birds.exe para corrigir o nome do arquivo. Assim, o resto do script é executado apenas se o programa for iniciado.

    
por totti 10.05.2013 / 11:17