Comment puis-je script pour ouvrir un ensemble de programmes chacun sur un espace de travail spécifique?

35

J'ai regardé autour pendant un moment et ne pouvais pas trouver la réponse à mon problème suivant:

J'ai une configuration de six ordinateurs de bureau sur Ubuntu 12.04 avec Unity. Au démarrage, chaque matin, je suis habitué à ouvrir les mêmes cinq ou six programmes. J'ouvre chacun sur un espace de travail spécifique. J'aimerais que cela soit automatisé. Y at-il un moyen de script ou de configurer cela?

Question supplémentaire : Pour compliquer encore les choses, j'utilise deux écrans en mode d'affichage double. En fait, je dois démarrer chaque programme sur un écran spécifique, de préférence en plein écran.

Jahn
la source
1
Vous pourriez trouver cela utile. Cela pointe vers wmctrl, mais je ne l'ai pas utilisé: movingtofreedom.org/2010/08/10/…
RobotHumans
cela pourrait être utile. askubuntu.com/questions/87002/…
Suhaib
1
Pour en revenir à une vue très simple, y a-t-il une raison pour laquelle vous ne pouvez pas laisser votre machine en mode suspension quand vous partez? Je penserais que ce serait une solution rapide pour vous pendant que vous trouvez une solution plus permanente ...
Adeyfk
Lorsque vous parlez de bureau, vous voulez dire un espace de travail?
p0llard
Les activités de KDE pourraient peut-être faire cela.
Escargot mécanique

Réponses:

20

L'idée de jdp407 d'utiliser compizconfig associera une application particulière à un espace de travail particulier, de sorte que CHAQUE FOIS que cette application est ouverte, elle est placée dans l'espace de travail correspondant. Si cela n'est pas souhaité, vous pouvez procéder comme suit:

1) Installer wmctrl

sudo apt-get install wmctrl

2) Créer un fichier avec le contenu suivant et le rendre exécutable

#!/bin/bash
wmctrl -s 0 #Switches to workspace 0 [workspaces are numbered from 0]
gnome-terminal & #Say you want a terminal in the 0th workspace
nautilus & #Maybe a file browser too
sleep 2 #Windows take some time to open. If you switch immediately, they'll open up in wrong workspaces. May have to change the value 2.
wmctrl -s 1 #Switches to workspace 1
firefox & #You get the idea. Continue for all workspaces
sleep 2
wmctrl -s 0 #You will be left at this workspace when the script finishes executing

3) Appelez ce script depuis .xsessionrcvotre répertoire personnel [si vous devez créer ce fichier] pour automatiser le processus à chaque connexion. Ou vous pouvez simplement l'appeler depuis un terminal en cas de besoin. EDIT: Mettez-le dans "Applications de démarrage", pas .xsessionrc. .xsessionrc s'exécutera avant même que le chargement de l'environnement de bureau soit terminé.


Vous souhaiterez peut-être créer une xsession personnalisée, comme suggéré par jdp407, afin de choisir entre deux sessions: une qui ouvre ces applications automatiquement et une autre qui ne le fait pas. Mais cela me semble inutile.


Si vous sentez que passer à un espace de travail, ouvrir les applications appropriées puis passer au suivant prend beaucoup de temps, vous pouvez ouvrir toutes les applications en une fois, puis déplacer les fenêtres à l’aide de wmctrl. Par exemple

wmctrl -r 'Firefox' -t 1

déplacera une fenêtre avec Firefox dans son titre en espace de travail 1. S'il existe plusieurs fenêtres, la première dans la liste des fenêtres gérées par wmctrlsera déplacée. Vous aurez besoin de connaître le titre des fenêtres qui seront créées par les applications pour l'utiliser. C'est pourquoi je n'ai pas suggéré cela comme option principale. Si les titres ne sont pas ambigus, comme c'est le cas avec les applications les plus utilisées, c'est la voie à suivre.


Ouverture d'applications en plein écran:

Certaines applications telles que gnome-terminal ont des arguments de ligne de commande pour ouvrir une fenêtre en mode maximisé ou en mode plein écran. Si de telles options existent, utilisez-les. Sinon utilisez wmctrlcomme suit

wmctrl -r 'prasanth@nb37' -b add,maximized_vert,maximized_horz

Cela maximise ma fenêtre de terminal (déjà existante).

wmctrl -r 'prasanth@nb37' -b add,fullscreen

Cela envoie la fenêtre en mode plein écran.


Parcourez wmctrlla page de manuel de. Vous pouvez trouver une utilisation pour plus de ses fonctionnalités.

S Prasanth
la source
1
Apparemment, utiliser wmctrl pour sélectionner l’espace de travail ne fonctionne pas dans les distributions post-Lynx. L'option '-s' peut uniquement être définie sur '0', sinon une erreur sera générée ou rien du tout. Source: movingtofreedom.org/2010/08/10/…
p0llard, le
J'utilise 12.04 avec unity2d (aucun effet visuel) et cela fonctionne pour moi. On dirait que cela ne fonctionnera pas si les effets visuels sont activés.
S Prasanth
wmctrlfonctionne très bien ici (LXDE et XFCE, composition via xcompgr activé)
Glutanimate 2/02/13
Fonctionne pour moi dans Mint 14 avec Cinnamon, merci!
k102
Dans Ubuntu 14.04, utilisez wmctrl -o X,Ypour vous déplacer dans une fenêtre spécifique. Si vous avez plusieurs moniteurs, vous pouvez déplacer des applications vers l'autre moniteur à l'aide de wmctrl -r "App name" -e G,X,Y,W,H. Fonctionne bien avec des effets visuels d'unité.
Nate
10

Il y a deux «problèmes» ici: le premier consiste à ouvrir un ensemble spécifique de programmes lorsque vous vous connectez; la seconde consiste à les ouvrir sur des espaces de travail spécifiques. Je traiterai les deux séparément:

  1. Création d'une session X personnalisée

    C'est assez facile à faire. Vous devez simplement créer un script de session X, puis demander à LightDM de l’utiliser. Vous aurez besoin de connaître les commandes pour lancer les programmes que vous voulez depuis le terminal.

    1. Terminal ouvert.
    2. Tapez touch ~/.customxsessionet appuyez sur Entrée.
    3. Tapez gedit ~/.customxsessionet appuyez sur Entrée.
    4. Vous allez maintenant avoir un éditeur de texte ouvert avec un fichier vierge.
    5. Vous devez définir une session X dans ce fichier. J'ai créé un exemple de fichier "Remplir les espaces" au bas de la réponse. Je pense que Ubuntu utilise gnome-session comme gestionnaire de fenêtres, mais je me trompe peut-être. Je ne peux pas le tester pour le moment (ordinateur portable en panne), donc si cela ne fonctionne pas comme prévu (par exemple: charge Gnome au lieu de Unity), vous devrez peut-être effectuer des recherches.
    6. Enregistrez le fichier et fermez Gedit.
    7. Tapez touch /usr/share/xsessions/multi.desktopet appuyez sur Entrée.
    8. Tapez gedit /usr/share/xsessions/multi.desktopet appuyez sur Entrée.
    9. Vous allez maintenant avoir un éditeur de texte ouvert avec un fichier vierge.
    10. Copiez et collez le code au bas de la réponse (intitulé «/usr/share/xsessions/multi.desktop:») dans Gedit.
    11. Enregistrez le fichier et fermez Gedit.
    12. Redémarrer. Lorsque vous accédez à l'écran de connexion, si vous regardez les sessions disponibles (cliquez sur le petit logo Ubuntu à côté de votre nom d'utilisateur), vous devriez en voir une qui s'appelle Multi-Session. Si vous vous connectez avec elle, les programmes que vous avez mis dans le script de session X devraient s'ouvrir automatiquement.
  2. Affectation de programmes aux espaces de travail

    C’est aussi très facile, mais il faut un logiciel supplémentaire qui n’est pas installé par défaut dans Ubuntu.

    1. Installez compizconfig-settings-manager (vous pouvez utiliser le centre logiciel ou simplement exécuter sudo apt-get install compizconfig-settings-managerdans un terminal).
    2. Ouvrez les paramètres CompizConfig à partir du tableau de bord.
    3. Ouvrez le plug-in 'Place Windows' (dans la section 'Gestion de la fenêtre').
    4. Cliquez sur "Nouveau" dans la section "Windows avec fenêtre d'affichage fixe".
    5. Cliquez sur l'icône "Plus".
    6. Définissez "Type" comme "Titre de la fenêtre" et entrez le titre de la fenêtre de l'un des programmes dans la zone "Valeur". Assurez-vous que "Relation" est réglé sur "ET" et cliquez sur "Ajouter".
    7. Définissez l'espace de travail en entrant des nombres dans les cases "X" et "Y". Lorsque vous avez 4 espaces de travail pour 'X', '1' est laissé à gauche et '2' à droite, et pour 'Y', '1' est en haut et '2' en bas. Étant donné que vous avez 6 espaces de travail, en fonction de la manière dont les choses sont configurées, définir "Y" sur "3" sélectionnera la rangée du bas et définir "X" sur "3" sélectionnera la 3ème colonne.
    8. Répétez les étapes 4 à 7 pour les programmes restants auxquels vous souhaitez affecter un espace de travail.
    9. Fermez les paramètres CompizConfig.
  3. Se connecter

    Lorsque vous vous connectez, vous devez indiquer à Ubuntu que vous souhaitez utiliser votre session X personnalisée.

    1. Redémarrer.
    2. Lorsque vous accédez à l'écran de connexion, si vous regardez les sessions disponibles (cliquez sur le petit logo Ubuntu à côté de votre nom d'utilisateur), vous devriez en voir une qui s'appelle Multi-Session. Si vous vous connectez avec elle, les programmes que vous avez insérés dans le script de session X devraient s'ouvrir automatiquement et être attribués aux espaces de travail que vous avez choisis.
  4. Problèmes

    Cela aurait pu mal tourner, que ce soit si vous faites une petite erreur ou si je me suis trompé en écrivant cette réponse. Si quelque chose ne va pas, assurez-vous que vous avez suivi les instructions à la lettre et corrigez quoi que ce soit si vous ne l'avez pas déjà fait. Si vous avez toujours un problème, laissez un commentaire.

~ / .customxsession:

#!/usr/bin/env bash
program-command-1 &
program-command-2 &
program-command-3 &
program-command-4 &
program-command-5 &
program-command-6 &
exec gnome-session

/usr/share/xsessions/multi.desktop:

[Desktop Entry]
Name=Multi-Session
Exec=/home/your-username/.customxsession
P0llard
la source
1

Ajoutez les applications requises dans le programme StarupApplications, puis ajoutez également ce script. Ceci est mon script: ManageWorkSpaces.sh

echo "Jeril"
wmctrl -r NetBeans IDE 7.1.1 -t 0
wmctrl -r /bin/bash -t 1
wmctrl -r Google Chrome -t 2
wmctrl -r jerilkuruvila - Skype™ -t 3

// focus sur le terminal

wmctrl -a NetBeans IDE 7.1.1   -t 0 

Mais je n'ai aucune idée de la gestion de 2 écrans.

Jkuruvila
la source
Salut Jeril! Bienvenue sur Ask Ubuntu! Votre solution ne fonctionne pas pour moi. Si je cours wmctrl -d, je n'ai qu'un seul "bureau". Avez-vous testé cela sur Unity dans Ubuntu 12.10?
Flimm
Bonjour Flimm, j'utilise wmctrl -r, j'ai 4 espaces de travail. Ma version Ubuntu est 12.04
jkuruvila