Как запустить пользовательский набор программ в определенной рабочей области?
Я использую несколько рабочих пространств, чтобы иметь разный контекст для разных работ. Поэтому я многократно запускаю один и тот же набор приложений в одной рабочей области. А также я запускаю одно и то же приложение в каждом наборе приложений, поэтому настройка рабочей области по умолчанию, в которой должно выполняться каждое приложение, не работает для этой цели.
Например:
- Рабочая область1: 1 терминал + 2 вкладки, открытые в Chrome + документ, открытый с помощью PDF Viewer
- Workspace2: 3 terminals + 4 tabs opened in Chrome + 1 tab opened in Firefox + Eclipse
Итак, есть ли способ иметь скрипт или что-то вроде set_workspace1.sh, который после запуска откроет все нужные программы в определенной рабочей области?
Кстати, я бегу 11.04
2 ответа
Я не думаю, что есть такая функция для стандартного оконного менеджера.
Но пирог дьявола может делать то, что вы хотите.
http://burtonini.com/blog/computers/devilspie/
Цитата с сайта Devil's Pie: "Devil's Pie можно настроить для обнаружения окон по мере их создания и сопоставления окна с набором правил. Если окно соответствует правилам, оно может выполнять ряд действий над этим окном. Например, Я могу сделать так, чтобы все окна, созданные X-Chat, появлялись во всех рабочих пространствах, а главное окно Gkrellm1 не появлялось в списке пейджеров или задач ".
Я надеюсь, что это помогло тебе,
Даниил
Технически говоря рабочие пространства называются viewports конкретный раздел расширенного рабочего стола, с определенными координатами, например 0, 0 это окно просмотра 1 и 1366, 0 будет тот, сразу справа.
Следует отметить, что в диспетчере параметров CompizConfig есть опция "фиксированного" открытия окна в определенной рабочей области, но можно создать скрипт, который вы упомянули. Вот мой пример.
#!/bin/bash
get_viewport()
{
xprop -root -notype _NET_DESKTOP_VIEWPORT | awk '{print $3,$4}'
}
spawn_viewport_1()
{
nohup gnome-terminal 2>&1 > /dev/null &
nohup chromium-browser 2>&1 > /dev/null &
}
spawn_viewport_2()
{
nohup xterm 2>&1 > /dev/null &
nohup firefox 2>&1 > /dev/null &
}
main()
{
case $(get_viewport) in
"0, 0") spawn_viewport_1 ;; # note , single space in "0, 0" is important
"1366, 0") spawn_viewport_2 ;;
esac
}
main
По сути, происходит то, что у меня есть две функции, каждая для определенной области просмотра. У меня также есть функция, которая проверяет, в каком окне просмотра я сейчас нахожусь. Если я в настоящее время нахожусь в области просмотра 1 (координаты 0,0), это вызовет один набор приложений. Если я вьюпорт 2 (координаты 1366,0), у нас будет другой набор приложений.