Как запустить bash .sh после запуска программы в PlayOnLinux?

У меня есть маленький скрипт, который нужно выполнять каждый раз, когда я открываю винную программу. Сценарий довольно прост:

#!/bin/bash
xdotool windowmove 67108871 1440 0

Как заставить PlayOnLinux запускать этот скрипт каждый раз, когда я открываю определенную программу?

3
задан 10 March 2013 в 18:09

2 ответа

Попробуйте:
Предполагается, что имя файла для запуска программы - birds.exe из C: \ Program Files \
В начале скрипта bash скопируйте это код (с измененным именем файла).

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'"  

Измените Birds.exe на правильное имя файла. Таким образом, остальная часть сценария выполняется только в том случае, если программа запущена.

0
ответ дан 10 March 2013 в 18:09

Я не использую PlayOnLinux, но, возможно, общий подход будет полезен.

Основная идея состоит в том, чтобы заменить вызывающий скрипт - тот, который запускает вашу программу сейчас, - новым, который запускает ваш новый скрипт до или после запуска вызывающего скрипта (в зависимости от того, что лучше всего подходит для того, что вы хотите выполнить - возможно, после в вашем случае).

Если ваш сценарий может запустить до вашей программы, то все, что вам нужно сделать, - это найти сценарий или программу, которая вызывает вашу программу, и заменить ее другим сценарием (с другим именем, если это возможно, поэтому чтобы не вызвать путаницы или хуже).

Новый скрипт будет запускать ваш скрипт установки, а затем запускать оригинальный скрипт для вызова вашей программы (используя полный путь к вызывающему скрипту, если ваш новый скрипт имеет то же имя, что и исходный - чтобы избежать бесконечного цикла.)

Если ваш скрипт должен запускаться после запуска вашей программы (как это может быть в вашем случае), это намного сложнее. Я понятия не имею, как это сделать, но я бы начал искать, получив номер процесса программы и посмотрев, могу ли я посмотреть в окне по номеру процесса. (Я не использовал xdotool, но, глядя на его описание, можно предположить, что, возможно, использование поиска xdotool или xdotool getactivewindow windowmove ... может быть полезным. Похоже, вы можете делать все, что захотите, если знаете уникальное имя окна.) [ 116]

Если вы можете заставить это работать, то вызов его будет просто включать вызов исходного сценария, а затем ваш сценарий. Для этого ваш новый вызывающий скрипт будет вызывать исходный сценарий, а затем новый сценарий. Но ваш вызывающий сценарий, вероятно, не откажется от управления вашим сценарием, пока ваша программа не будет полностью завершена и пока не будет слишком поздно запустить ваш новый сценарий.

Если вы можете запустить свой вызывающий скрипт с & amp; после того, как он будет запущен в фоновом режиме, управление вернется к вашему сценарию, и вы можете немедленно запустить новый сценарий, чтобы изменить окно. Если это работает, то $! будет содержать номер процесса вашего вызывающего скрипта, если это поможет.

НТН

0
ответ дан 10 March 2013 в 18:09

Другие вопросы по тегам:

Похожие вопросы: