Как запустить пользовательский набор программ в определенной рабочей области?

Я использую несколько рабочих пространств, чтобы иметь разный контекст для разных работ. Поэтому я многократно запускаю один и тот же набор приложений в одной рабочей области. А также я запускаю одно и то же приложение в каждом наборе приложений, поэтому настройка рабочей области по умолчанию, в которой должно выполняться каждое приложение, не работает для этой цели.

Например:

  • Рабочая область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), у нас будет другой набор приложений.

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