
Почему приложение с длительным временем загрузки (NetBeans, Eclipse и т. д.) совершает «переход» на текущий рабочий стол, даже если процесс был запущен на другом?
Если я перейду на рабочий стол 3 и запущу приложение, а затем перейду на рабочий стол 2, пока жду, то после загрузки приложения оно запустится на рабочем столе 2. Можно ли это как-то изменить?
решение1
Это довольно сложная проблема.
Менеджер окон (WM) должен, кто бы мог подумать, управлять окнами. Это включает, помимо прочего, их положение, размеры, рабочий стол и то, получают ли они декор или нет. Что не является частью WM, так это запуск приложений каким-либо образом, он будет видеть и управлять только окнами, которые этот процесс создаст. Так что же происходит?
- Переключиться на рабочий стол 2
- Запустить NetBeans
- Заставка создается как окно без украшений на рабочем столе 2
- Переключиться на рабочий стол 3
- Экран-заставка NetBeans остается на рабочем столе 2
- NetBeans завершает работу и, наконец, создает главное окно, которое, конечно же, отправляется на текущий рабочий стол, поскольку это совершенно новое окно.
Проблема в данном случае в том, что диспетчер окон совершенно не осознает (или не осознает, не уверен)ВОЗчто окно принадлежит. Есть две возможности:
Найдите оконный менеджер, который...
- ...поддержка группировки окон по родительскому процессу
- ...позволяют вам определять правила для каждого окна
Или вы получаете вспомогательное приложение, напримерПирог Дьяволачто позволяет определять правила окна.
решение2
Если вы используете compiz (да, вы можете это сделать даже в версии 12.04 ;) ), вы можете попробовать установить compiz, compizconfig-settings-manager
а затем перейти в Place Windows
подменю, чтобы добавить новый Fixed Window tab
, где вы выберете класс (имя) вашего приложения и рабочего стола.
В противном случае вы могли бы использоватьwmctrlчто позволит вам запускать ваши приложения и принудительно перенаправлять их на один из ваших рабочих столов.