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

32

J'ai regardé autour de moi pendant un moment et n'arrivais 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ébut, chaque matin, je passe par une routine d'ouverture des mêmes cinq ou six programmes. J'ouvre chacun sur un espace de travail spécifique. Je voudrais avoir cette automatisé. Est-il possible de créer un script ou de le configurer?

Question supplémentaire : pour compliquer encore la situation, je lance deux écrans en mode double vue. Je dois en fait commencer chaque programme sur un écran spécifique, de préférence en plein écran.

    
posée Jahn 26.10.2012 - 09:46
la source

3 réponses

19

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

1) Installez wmctrl

sudo apt-get install wmctrl

2) Créez un fichier avec le contenu suivant et rendez-le 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 .xsessionrc dans votre 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 que le chargement de l'environnement de bureau ne soit terminé.

Vous voudrez peut-être créer une session xsure personnalisée comme suggéré par jdp407, de sorte que vous ayez deux sessions à choisir, une qui ouvre ces applications automatiquement et une autre qui ne l’ouvre pas. Mais cela ne me semble pas nécessaire.

Si vous estimez que passer à un espace de travail, ouvrir les applications appropriées et passer à la suivante prend du temps, vous pouvez ouvrir toutes les applications en une seule fois, puis déplacer les fenêtres en utilisant wmctrl . Par exemple

wmctrl -r 'Firefox' -t 1

déplacera une fenêtre avec Firefox dans son titre à l’espace de travail 1. Si plusieurs fenêtres existent, la première de la liste des fenêtres gérées par wmctrl sera déplacée. Vous devez 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 sont sans ambiguïté, comme c'est le cas avec les applications les plus couramment utilisées, c'est la voie à suivre.

Ouverture d'applications en plein écran:

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

wmctrl -r '[email protected]' -b add,maximized_vert,maximized_horz

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

wmctrl -r '[email protected]' -b add,fullscreen

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

Parcourez la page de manuel de wmctrl . Vous pouvez trouver plus d’utilisation de ses fonctionnalités.

    
réponse donnée S Prasanth 02.01.2013 - 06:32
la source
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 vais traiter 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 devrez connaître les commandes pour lancer les programmes que vous souhaitez depuis le terminal.

    1. Ouvrir un terminal.
    2. Tapez touch ~/.customxsession et appuyez sur Entrée.
    3. Tapez gedit ~/.customxsession et appuyez sur Entrée.
    4. Vous avez maintenant un éditeur de texte ouvert avec un fichier vide.
    5. Vous devez définir une session X dans ce fichier. J'ai créé un exemple de fichier 'remplir les blancs' 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 cassé) donc si cela ne fonctionne pas comme prévu (par exemple, charge Gnome au lieu de Unity), vous devrez peut-être faire des recherches.
    6. Enregistrez le fichier et fermez Gedit.
    7. Tapez touch /usr/share/xsessions/multi.desktop et appuyez sur Entrée.
    8. Tapez gedit /usr/share/xsessions/multi.desktop et appuyez sur Entrée.
    9. Vous avez maintenant un éditeur de texte ouvert avec un fichier vide.
    10. Copiez et collez le code situé en bas de la réponse (intitulé «/usr/share/xsessions/multi.desktop:») dans Gedit.
    11. Enregistrez le fichier et fermez Gedit.
    12. Redémarrez. 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 un appelé Multi-Session. Si vous vous connectez avec lui, les programmes que vous mettez dans le script de session X doivent s'ouvrir automatiquement.
  2. Affectation de programmes aux espaces de travail

    Ceci est aussi assez facile, mais il faut un logiciel supplémentaire non installé dans Ubuntu par défaut.

    1. Installez compizconfig-settings-manager (vous pouvez utiliser le Software Center ou simplement exécuter sudo apt-get install compizconfig-settings-manager dans Terminal).
    2. Ouvrez les paramètres CompizConfig à partir du tableau de bord.
    3. Ouvrez le plug-in "Place Windows" (il se trouve dans la section "Gestion des fenêtres").
    4. Cliquez sur "Nouveau" dans la section "Windows avec fenêtre 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 case "Valeur". Assurez-vous que «Relation» est défini sur «AND» et cliquez sur «Ajouter».
    7. Définissez l'espace de travail en saisissant des nombres dans les cases "X" et "Y". Lorsque vous avez 4 espaces de travail pour 'X', '1' est à gauche et '2' à droite, et pour 'Y', '1' est en haut et '2' en bas. Vu que vous avez 6 espaces de travail, en fonction de la configuration des éléments, le réglage de «Y» sur «3» sélectionnera la ligne du bas et le réglage de «X» sur «3» sélectionnera la troisième colonne.
    8. Répétez les étapes 4 à 7 pour les autres programmes auxquels vous souhaitez attribuer un espace de travail.
    9. Fermer les paramètres de CompizConfig.
  3. Connexion

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

    1. Redémarrez.
    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 appelée Multi-Session. Si vous vous connectez avec ce programme, les programmes que vous mettez dans le script de session X doivent s’ouvrir automatiquement et être affectés aux espaces de travail que vous avez choisis.
  4. Problèmes

    Beaucoup de choses auraient pu mal tourner, que ce soit en faisant une petite erreur ou en faisant une erreur en écrivant cette réponse. Si quelque chose ne va pas, assurez-vous de suivre les instructions à la lettre, et corrigez tout ce qui n’est pas le cas. 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
    
réponse donnée p0llard 01.01.2013 - 20:40
la source
1

Ajoutez les applications requises dans le programme StarupApplications Et puis ajoutez ce script aussi. 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

// se concentrer sur le terminal

wmctrl -a NetBeans IDE 7.1.1   -t 0 

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

    
réponse donnée jkuruvila 03.01.2013 - 15:44
la source

Lire d'autres questions sur les étiquettes