PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Minimiertes Programm nach vorne bringen



unruhschuh
25-01-2009, 21:25
Hallo,

ich versuche zZ folgendes mit einem bash-script zu erreichen:

- Wenn Programm X nicht läuft starte es
- Wenn Programm X läuft und minimiert oder nicht im Vordergrund ist, bringe es nach vorne
- Wenn Programm X aktiv und im Vordergrund ist minimiere es

Teil eins ist schnell realisiert mit "ps -A | grep X" usw. aber wie kriege ich den Rest hin? Dabei stellen sich folgende Fragen:

Wie prüfe ich ob ein Programm/Fenster im Vordergrund/Hintergrund oder minimiert ist?

Wie bringe ich ein Fenster in den Vordergrund/Wie minimiere ich es?

Gruß

Thomas

ContainerDriver
26-01-2009, 10:39
Hallo,

welches DE/welchen WM verwendest du denn?

unruhschuh
26-01-2009, 16:24
Ich benutze das was bei ubuntu standardmäßig dabei ist, also gnome und auf einem rechner auch compiz. Mir wäre eine Lösung am liebsten, die allgemein funktioniert, also direkt mit dem x-server spricht. Aber eine gnomespezifische Lösung wäre auch erstmal ok.

Es muss auch kein Script sein, C ist auch in Ordnung, das liese sich ja auch in ein Script einbauen.

Gruß

Thomas

unruhschuh
27-01-2009, 02:07
So, hab's jetzt fast geschafft. Und zwar mit dem Programm wmctrl (http://sweb.cz/tripie/utils/wmctrl/), mit dem man den Window Manager steuern kann.

Mein bash script sieht jetzt so aus:


#!/bin/bash

i=`ps -A | grep mythfrontend`

if [ "$i" == "" ]
then
/usr/bin/mythfrontend
else
wmctrl -a mythfrontend.real
fi


Mit diesem script lässt sich mythtv jetzt zumindest starten und in den Fordergrund bringen, falls es schon läuft. wmctrl kann leider entgegen der Beschreibung auf der Homepage Fenster nicht minimieren.

Aber das Ziel, nicht von der Couch aufstehen zu müssen falls mythtv nicht läuft oder minimiert ist, ist erreicht :)

anda_skoa
27-01-2009, 15:01
Eventuell hängt der Leistungsumfang des von wmctl auch von dessen Version ab.

Die Website kann sich auf die neuste beziehen.

Ciao,
_

unruhschuh
27-01-2009, 17:06
Leider nicht: Bugreport (https://bugs.launchpad.net/ubuntu/+source/wmctrl/+bug/260875)


if an Application asks to toggle _NET_WM_STATE_HIDDEN the Window Manager should probably just ignore the request, since _NET_WM_STATE_HIDDEN is a function of some other aspect of the window such as minimization, rather than an independent state.

Ich interpretiere das so, dass es zwar funktionieren kann, falls der Window Manager das so handhabt, muss aber nicht.

Edit: Ich benutze momentan den folgenden Workaround:

Fenster mit "wmctrl -a <fenstername>" aktivieren und mit "xte 'keydown Alt_L' && xte 'key F9' && xte 'keyup Alt_L'" minimieren. Klappt natürlich nur, wenn der Shortcut fürs minimieren des aktiven Fensters auf Alt+F9 gelegt ist. Mir fehlt lediglich eine Möglichkeit festzustellen welches fenster gerade aktiv ist.