web-dev-qa-db-fra.com

Comment exécuter un ensemble personnalisé de programmes dans un espace de travail spécifique?

J'utilise plusieurs espaces de travail afin d'avoir un contexte différent pour différents travaux. Par conséquent, j'exécute le même ensemble d'applications dans le même espace de travail à plusieurs reprises. Et j'exécute également la même application dans chaque ensemble d'applications, donc la définition de l'espace de travail par défaut où chaque application doit s'exécuter ne fonctionne pas à cette fin.

Par exemple:

  • Workspace1: 1 terminal + 2 onglets ouverts dans Chrome + un document ouvert avec PDF Viewer
  • Workspace2: 3 terminaux + 4 onglets ouverts dans Chrome + 1 onglet ouvert dans Firefox + Eclipse

Alors, existe-t-il un moyen d'avoir un script ou quelque chose comme set_workspace1.sh qui une fois exécuté ouvre tous les programmes souhaités dans un espace de travail spécifique?

BTW, je cours 11.04

5
Andres

Je ne pense pas qu'il existe une telle fonction pour le gestionnaire de fenêtres standard.

Mais Devil's Pie peut faire ce que vous voulez.

http://burtonini.com/blog/computers/devilspie/

Citation du site Web de Devil's Pie: "Devil's Pie peut être configuré pour détecter les fenêtres au fur et à mesure qu'elles sont créées et faire correspondre la fenêtre à un ensemble de règles. Si la fenêtre correspond aux règles, elle peut effectuer une série d'actions sur cette fenêtre. Par exemple, je peux faire apparaître toutes les fenêtres créées par X-Chat sur tous les espaces de travail, et la fenêtre principale de Gkrellm1 n'apparaît pas dans le pager ou la liste des tâches. "

J'espère que cela vous a aidé,

Daniel

3
omnidan

Techniquement, les espaces de travail sont appelés viewports, une section spécifique du bureau étendu, avec des coordonnées spécifiques, par exemple 0, 0 est la fenêtre 1 et 1366, 0 serait celui immédiatement à droite.

Il convient de noter que Gestionnaire de paramètres CompizConfig a une option pour l'ouverture "fixe" d'une fenêtre sur un espace de travail spécifique, mais on peut créer un script comme vous l'avez mentionné. Voici mon exemple.

#!/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

Ce qui se passe essentiellement, c'est que j'ai deux fonctions, chacune pour une fenêtre spécifique. J'ai également une fonction qui vérifie dans quelle fenêtre je suis actuellement. Si je suis actuellement sur la fenêtre 1 (coordonnées 0,0), il générera un ensemble d'applications. Si je suis sur la fenêtre 2 (coordonnées 1366,0), nous aurons différents jeux d'applications générés.

0