Starten eines Fensterprogramms in einem bestimmten Arbeitsbereich über die Befehlszeile

Starten eines Fensterprogramms in einem bestimmten Arbeitsbereich über die Befehlszeile

Ich frage mich, ob ich ein Fensterprogramm in einen bestimmten Arbeitsbereich „senden“ kann, wenn ich es über die Befehlszeile starte.

Ich möchte beispielsweise meinen Computer mit einer bestimmten Anzahl geöffneter Fensterprogramme in verschiedenen Arbeitsbereichen starten. Ist das möglich? Welche grundlegenden Konzepte stecken dahinter?

Ich verwende Unity auf Ubuntu 14.04.

Ich habe auch versucht zu starten gdevilspie, aber es scheintvon einem Fehler betroffen.

Danke! :)

Antwort1

Verwenden Sie wmctrlbeispielsweise gedit:

gedit & sleep 3; wmctrl -i -r `wmctrl -l -p | grep $! | awk '{ print $1 }'` -t 1
  • gedit &gedit im Hintergrund ausführen
  • sleep 33 Sekunden schlafen, auf die Fenstererstellung warten (mein Rechner ist etwas langsam)
  • $!gibt die PID des vorherigen Befehls zurück (z. B.: gedit pid)
  • wmctrl -l -p | grep PID | awk '{ print $1 }'WID von gedit PID abrufen
  • wmctrl -i -r WID -t 1Fenster mit WID auf den 2. Desktop verschieben

Ein anderer Weg:

wmctrl -s 1 ; gedit & sleep 3; wmctrl -s 0;
  • Wechseln Sie zum 2. Desktop, starten Sie gedit, warten Sie 3 Sekunden und wechseln Sie zurück zum 1. Desktop

Referenz:

Antwort2

Es ist im Prinzip dasselbe, was @user.dz geantwortet hat, nur parametrisiert, und anstatt 3 Sekunden zu warten, bis der Windows-Handler erstellt wird, läuft dieser hier in einer Schleife, bis er gefunden wird.

# workspace target
_WS=3
export DISPLAY=:0 

gedit &
_PID="$!" 
_WID=""
while [[ $_WID == "" ]]; do
  _WID=$(wmctrl -l -p 2>/dev/null | grep $_PID | awk '{ print $1 }')
sleep 1
done

wmctrl -i -r $_WID -t $_WS

verwandte Informationen