LINUX.ORG.RU
ФорумAdmin

Управление приложениями

 ,


0

1

Проблема:

Есть OpenSuSE c KDE.

Есть 150 экземпляров одного и того же приложения с разными параметрами запуска. Запускается через wine, ибо виндовое. Наименование .exe файла для каждого экземпляра уникально. Заголовок окна, к сожалению, одинаковый у всех.

Нужно: раскидывать автоматом окна по рабочим столам и комнатам.

Решения: DevilsPie, wmctrl.

Минус решений: window_name и application_name одинаковые и соответствуют заголовку окна. Среди параметров, по которым devilspie ловит окно не найден параметр, в котором бы было наименование этого самого appname.exe. WMctrl тоже не слишком помогает в этом деле, ибо единственный вменяемый разный параметр, по которому можно дифференцировать одинаковые окна это id вида 0х... Вариант добавлять в демон, который следит за окнами, писать их id, и из списка id строить параметры для wmctrl не прельщает.

Всё написано - и как распихать по координатам, и как по рабочим столам и как по комнатам. Единственно он все приложения протаскивает по всем рабочим столам и комнатам, и останавливается на последнем правиле))) Весело, забавно, но не так, как должно быть.

Может кому-нибудь приходилось делать что-то подобное?

Может быть есть нормальный способ изменения заголовка окна при старте? Само приложение в параметрах такого не имеет.

Промелькнул вариант с windows_class, но то, что возвращает кнопка, в параметрах системы - оформление окон - определить свойства окна: «Wine (appname.exe wine)» это одно, а devilspie возвращает для того же окна в windows_class только Wine. Есть предположение, чо нужно взять класс класса, чтобы получить «Wine (appname.exe wine)», но devilspie не принимает параметров для window_class.

Получилось такое вот интересное решение данной проблемы:

z=$(pgrep «$prname») zxid=$(wmctrl -l -p | grep «$z» | grep -Eo '^.{10}') if [ «$zxid» != «» ] then wmctrl -i -r $zxid -N «$winname» wmctrl -i -r $zxid -e ${geometry[$A]} wmctrl -i -r $zxid -t $Desktop fi

Что тут происходит: 1. Идём в процессы и ищем там по наименованию процесса его ИД. 2. Выпытываем у wmctrl все открытые окна, выбираем нужный нам ИД, и выбираем XID приложения. 3. Если XID таки не пустой (окно есть, это важно, ибо plasma стирает рабочий стол, если попытаться переместить несуществующее окно). 4. Переименовываем окно, чтобы у нас небыло 150 окон с одинаковыми названиями. 5. Перемещаем окно в нужное место экрана. 6. Перемещаем окно на нужный рабочий стол.

Вуаля. Надеюсь кому-нибудь поможет.

PearlyDragon ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.