Shell-Befehl, um ein Programmfenster vor ein anderes zu bringen?

12

Gibt es einen Shell-Befehl, um ein bereits gestartetes Programm in gnome vor ein anderes zu bringen?

dh:

Gedit und Nautilus werden gestartet. Nautilus ist im Hintergrund und Gedit im Vordergrund.

Wie bringe ich Nautilus mit einem Shell-Befehl nach vorne?

NES
quelle
1
Sonstiges: superuser.com/questions/183680/...
karthick87

Antworten:

14

Hinweis:

  • Weitere Informationen zu xdotool finden Sie hier .
karthick87
quelle
Sicher bearbeiten Sie Ihren Beitrag gerade, als ich meinen verfasse ... :()
frabjous
Sie können Ihren Fensternamen mit wmctrl -l finden. Der Name ist der Text nach dem letzten Bindestrich: <Fenster-ID> <desktop-ID> <Clientcomputer> <Fenstertitel>
jorfus
8

Eine weitere Option ist xdotool :

xdotool search --class Nautilus windowactivate

frabjous
quelle
2
Schlägt für mich mitXGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)
Tino
Wahrscheinlich funktioniert der Fehler hier - meiner Erfahrung nach --classname oder --name (falls bekannt) manchmal, wenn --class dies nicht tut.
Frabjous
In meinem Fall war es möglich, ein Fenster mit der ID von zu xwininfoöffnen und mehrere zusätzliche verschiedene xdotoolBefehle auszugeben (an die ich mich nicht mehr erinnere). Als ich versuchte, das zu automatisieren (um es loszuwerden xwininfo), bekam ich visuelle Artefakte aufgrund von ansonsten versteckten Fenstern, die ebenfalls ausgewählt wurden. Ich habe einfach keine generische Möglichkeit gefunden, beliebige Fenster richtig zu adressieren. Nach dem Umschalten auf wmctrl -aalles funktionierte sofort einwandfrei ohne weitere Anpassungen. Bitte beachten Sie, dass ich mag xdotool, aber es scheint schwierig zu sein, genau das richtige Fenster damit zu öffnen.
Tino
2

Bei der Verwendung xdotoolscheint es schwierig zu sein, alle Fenster für eine bestimmte Anwendung oder Klasse mit nur einem Befehl nach vorne zu bringen . forAm Ende habe ich bessere Ergebnisse, wenn ich es auf Shell-Ebene in eine Schleife einwickle. Verwenden von Bash:

for WINDOW in $(xdotool search --desktop 0 Firefox); do
   xdotool windowactivate ${WINDOW}
done

Einige Bemerkungen:

  • Standardmäßig xdotool searchwird das Muster (hier Firefox) in Fenstername, Klasse und Klassenname durchsucht. Wenn Sie Ihren Suchraum einschränken möchten, verwenden Sie die entsprechenden --class, --nameoder --classnameOptionen.
  • Die --desktop 0Option beschränkt die Suche auf den ersten Desktop. Dies scheint eine Problemumgehung zu sein, um das XGetWindowProperty[_NET_WM_DESKTOP] failed (code=1)in einigen Kommentaren erwähnte zu vermeiden .
  • Zum Zeitpunkt dieses Schreibens ist das xdotoolProjekt seit 2015 ins Stocken geraten. Es bleibt jedoch immer noch mein bevorzugtes Werkzeug. Aus persönlichen Gründen ist Jordan Sissel (der ursprüngliche Autor) nicht so aktiv wie er, also zögern Sie nicht, einen Beitrag zum Projekt zu leisten.
Sylvain Leroux
quelle