Wie schreibe ich ein Skript, um eine Reihe von Programmen in einem bestimmten Arbeitsbereich zu öffnen?

35

Ich sah mich eine Weile um und konnte die Antwort auf mein folgendes Problem nicht herausfinden:

Ich habe unter Ubuntu 12.04 mit Unity sechs Desktops eingerichtet. Beim Start durchlaufe ich jeden Morgen die Routine, die gleichen fünf oder sechs Programme zu öffnen. Ich öffne jedes auf einem bestimmten Arbeitsbereich. Ich möchte dies automatisieren lassen. Gibt es eine Möglichkeit, dies zu skripten oder zu konfigurieren?

Zusätzliche Frage : Um die Angelegenheit weiter zu erschweren, starte ich zwei Bildschirme im Doppelansichtsmodus. Ich muss eigentlich jedes Programm auf einem bestimmten Bildschirm starten, vorzugsweise im Vollbildmodus.

Jahn
quelle
1
Das könnte hilfreich sein. Es zeigt auf wmctrl, aber ich habe es nicht benutzt: movingtofreedom.org/2010/08/10/…
RobotHumans
das könnte hilfreich sein. askubuntu.com/questions/87002/…
Suhaib
1
Gibt es aus einer sehr einfachen Sicht einen Grund, warum Sie Ihren Computer nicht im Suspend-Modus lassen können, wenn Sie ihn verlassen? Ich denke, es wäre eine schnelle Lösung für Sie, wenn Sie eine dauerhaftere Lösung finden ...
Adeyfk
Wenn Sie Desktop sagen, meinen Sie damit einen Arbeitsbereich?
p0llard
Möglicherweise können KDE-Aktivitäten dies tun.
Mechanische Schnecke

Antworten:

20

Mit der Idee von jdp407, compizconfig zu verwenden, wird eine bestimmte Anwendung einem bestimmten Arbeitsbereich zugeordnet, sodass sie JEDES MAL, wenn diese Anwendung geöffnet wird, im entsprechenden Arbeitsbereich abgelegt wird. Wenn dies nicht gewünscht ist, können Sie Folgendes tun:

1) Installieren wmctrl

sudo apt-get install wmctrl

2) Erstellen Sie eine Datei mit folgendem Inhalt und machen Sie sie ausführbar

#!/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) Rufen Sie dieses Skript .xsessionrcin Ihrem Home-Verzeichnis auf, um den Vorgang bei jeder Anmeldung zu automatisieren. Oder Sie rufen es bei Bedarf einfach von einem Terminal aus an. BEARBEITEN: Legen Sie es in "Startup Applications", nicht .xsessionrc. .xsessionrc wird ausgeführt, noch bevor die Desktop-Umgebung vollständig geladen wurde.


Möglicherweise möchten Sie eine benutzerdefinierte xsession wie in jdp407 vorgeschlagen erstellen, sodass Sie zwei Sitzungen zur Auswahl haben, eine, die diese Anwendungen automatisch öffnet, und eine, die dies nicht tut. Das erscheint mir aber unnötig.


Wenn Sie der Meinung sind, dass der Wechsel zu einem Arbeitsbereich, das Öffnen entsprechender Anwendungen und das anschließende Wechseln zum nächsten zeitaufwändig ist, können Sie alle Anwendungen auf einmal öffnen und dann die Fenster mithilfe von verschieben wmctrl. Beispielsweise

wmctrl -r 'Firefox' -t 1

verschiebt ein Fenster mit Firefox als Titel in Arbeitsbereich 1. Wenn mehr als ein Fenster vorhanden ist, wird das erste in der Liste der von verwalteten Fenster wmctrlverschoben. Sie müssen den Titel der Fenster kennen, die von den Anwendungen erstellt werden, um dies zu verwenden. Deshalb habe ich dies nicht als primäre Option vorgeschlagen. Wenn Titel eindeutig sind, wie dies bei den am häufigsten verwendeten Apps der Fall ist, ist dies der richtige Weg.


Anwendungen im Vollbildmodus öffnen:

Einige Anwendungen wie gnome-terminal verfügen über Befehlszeilenargumente, um ein Fenster im maximierten Zustand oder im Vollbildmodus zu öffnen. Wenn solche Optionen vorhanden sind, verwenden Sie sie. Ansonsten wmctrlwie folgt verwenden

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

Dies maximiert mein (bereits vorhandenes) Terminalfenster.

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

Dadurch wird das Fenster in den Vollbildmodus versetzt.


Sehen Sie sich die wmctrlManpage von an. Möglicherweise finden Sie Verwendung für weitere Funktionen.

S Prasanth
quelle
1
Anscheinend funktioniert die Verwendung von wmctrl zur Auswahl des Arbeitsbereichs in Post-Lynx-Verteilungen nicht. Die Option ‚es‘ kann nur auf ‚0‘ gesetzt werden, oder es wird einen Fehler werfen oder überhaupt nichts tun. Quelle: movingtofreedom.org/2010/08/10/…
p0llard
Ich benutze 12.04 mit unity2d (keine visuellen Effekten) und es funktioniert für mich. Scheint , als ob es nicht funktionieren wird mit visuellen Effekten aktiviert.
S Prasanth
wmctrlFunktioniert hier einwandfrei (LXDE und XFCE, Compositing über xcompgr aktiviert)
Glutanimate
Funktioniert bei mir in Mint 14 mit Cinnamon, danke!
k102
Verwenden Sie wmctrl -o X,Yin Ubuntu 14.04, um zu einem bestimmten Ansichtsfenster zu wechseln. Wenn Sie über mehrere Monitore verfügen, können Sie Anwendungen auf den anderen Monitor verschieben wmctrl -r "App name" -e G,X,Y,W,H. Funktioniert gut mit Einheit visuellen Effekten.
Nate
10

Hier gibt es zwei „Probleme“: Zum einen müssen Sie beim Anmelden bestimmte Programme öffnen. Zum anderen müssen sie in bestimmten Arbeitsbereichen geöffnet werden. Ich werde mich getrennt mit beiden befassen:

  1. Erstellen einer benutzerdefinierten X-Sitzung

    Das geht ganz einfach. Sie müssen lediglich ein X-Sitzungsskript erstellen und LightDM dann anweisen, es zu verwenden. Sie müssen die Befehle kennen, um die gewünschten Programme vom Terminal aus zu starten.

    1. Öffnen Sie das Terminal.
    2. Geben Sie ein touch ~/.customxsessionund drücken Sie die Eingabetaste.
    3. Geben Sie ein gedit ~/.customxsessionund drücken Sie die Eingabetaste.
    4. Sie haben jetzt einen Texteditor mit einer leeren Datei geöffnet.
    5. Sie müssen in dieser Datei eine X-Sitzung definieren. Ich habe unten in der Antwort ein Beispiel für die Datei "Füllen Sie die Lücken aus" erstellt. Ich denke , Ubuntu verwendet GNOME-Sitzung , wie es der Window - Manager, aber ich bin möglicherweise falsch. Ich kann es derzeit nicht testen (Laptop defekt). Wenn es also nicht wie erwartet funktioniert (z. B. Gnome statt Unity laden), müssen Sie möglicherweise Nachforschungen anstellen.
    6. Speichern Sie die Datei und schließen Sie Gedit.
    7. Geben Sie ein touch /usr/share/xsessions/multi.desktopund drücken Sie die Eingabetaste.
    8. Geben Sie ein gedit /usr/share/xsessions/multi.desktopund drücken Sie die Eingabetaste.
    9. Sie haben jetzt einen Texteditor mit einer leeren Datei geöffnet.
    10. Kopieren Sie den Code am Ende der Antwort (mit der Bezeichnung "/usr/share/xsessions/multi.desktop:") und fügen Sie ihn in Gedit ein.
    11. Speichern Sie die Datei und schließen Sie Gedit.
    12. Starten Sie neu. Wenn Sie zum Anmeldebildschirm gelangen und die verfügbaren Sitzungen anzeigen (klicken Sie auf das kleine Ubuntu-Logo neben Ihrem Benutzernamen), sollte eine Sitzung mit dem Namen "Multi-Session" angezeigt werden. Wenn Sie sich damit anmelden, sollten die Programme, die Sie in das X-Sitzungsskript eingefügt haben, automatisch geöffnet werden.
  2. Zuweisen von Programmen zu Arbeitsbereichen

    Dies ist ebenfalls recht einfach, erfordert jedoch eine zusätzliche Software, die nicht standardmäßig in Ubuntu installiert ist.

    1. Installieren Sie den compizconfig-settings-manager (Sie können das Software Center verwenden oder einfach sudo apt-get install compizconfig-settings-managerim Terminal ausführen ).
    2. Öffnen Sie die CompizConfig-Einstellungen im Dash.
    3. Öffnen Sie das Plugin "Windows platzieren" (es befindet sich im Abschnitt "Fensterverwaltung").
    4. Klicken Sie im Bereich "Windows mit festem Ansichtsfenster" auf "Neu".
    5. Klicken Sie auf das Plus-Symbol.
    6. Stellen Sie "Typ" als "Fenstertitel" ein und geben Sie den Fenstertitel eines der Programme in das Feld "Wert" ein. Stellen Sie sicher, dass 'Relation' auf 'AND' gesetzt ist, und klicken Sie auf 'Add'.
    7. Stellen Sie den Arbeitsbereich ein, indem Sie Zahlen in die Felder 'X' und 'Y' eingeben. Wenn Sie 4 Arbeitsbereiche für 'X' haben, ist '1' links und '2' rechts und für 'Y' ist '1' oben und '2' unten. Angenommen, Sie haben 6 Arbeitsbereiche, je nachdem, wie die Dinge eingerichtet sind. Wenn Sie "Y" auf "3" setzen, wird die unterste Zeile ausgewählt, und wenn Sie "X" auf "3" setzen, wird die dritte Spalte ausgewählt.
    8. Wiederholen Sie die Schritte 4 bis 7 für die übrigen Programme, denen Sie einen Arbeitsbereich zuweisen möchten.
    9. Schließen Sie die CompizConfig-Einstellungen.
  3. Einloggen

    Wenn Sie sich anmelden, müssen Sie Ubuntu mitteilen, dass Sie Ihre benutzerdefinierte X-Sitzung verwenden möchten.

    1. Starten Sie neu.
    2. Wenn Sie zum Anmeldebildschirm gelangen und die verfügbaren Sitzungen anzeigen (klicken Sie auf das kleine Ubuntu-Logo neben Ihrem Benutzernamen), sollte eine Sitzung mit dem Namen "Multi-Session" angezeigt werden. Wenn Sie sich damit anmelden, sollten die Programme, die Sie in das X-Sitzungsskript eingefügt haben, automatisch geöffnet und den von Ihnen ausgewählten Arbeitsbereichen zugewiesen werden.
  4. Probleme

    Vieles hätte schief gehen können, wenn Sie einen kleinen Fehler gemacht hätten oder wenn ich beim Schreiben dieser Antwort einen Fehler gemacht hätte. Wenn etwas schief geht, vergewissern Sie sich, dass Sie die Anweisungen befolgt haben, und korrigieren Sie alles, wenn Sie dies nicht getan haben. Wenn Sie immer noch ein Problem haben, hinterlassen Sie einen Kommentar.

~ / .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
quelle
1

Fügen Sie die erforderlichen Anwendungen in StarupApplications Program hinzu, und fügen Sie dann auch dieses Skript hinzu. Dies ist mein Skript: 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

// Fokus auf Terminal

wmctrl -a NetBeans IDE 7.1.1   -t 0 

Aber ich habe keine Ahnung, wie ich mit 2 Displays umgehen soll.

jkuruvila
quelle
Hallo Jeril! Willkommen bei Ask Ubuntu! Ihre Lösung funktioniert bei mir nicht. Wenn ich laufe wmctrl -d, habe ich nur einen "Desktop". Haben Sie dies auf Unity in Ubuntu 12.10 getestet?
Flimm
Hallo Flimm, ich benutze wmctrl -r, ich habe 4 Arbeitsbereiche. Meine Ubuntu-Version ist 12.04
jkuruvila