Gnome Shell - Ohne Fensterleiste arbeiten (glücklich sein)

Ich arbeite auf linux mit ubuntu und der gnome shell und mag die Fensterliste (mittels Knöpfen zwischen geöffneten Fenstern wechseln) im Panel nicht. Ständig bin ich nur am Suchen welcher Knopf denn nun mein gewünschtes Fenster ist.

Fensterliste

Ich arbeite i.d. Regel mit 5 Programmen intensiv (Browser, Email-Client, Entwicklungsumgebung, Chat und Terminal), alles andere wird mal gestartet und hin und wieder benutzt (Office-module, verschiedene Programme unserer Software zu Service-Zwecken). Deswegen hab ich schon seit längerem die Fensterliste rausgeschmissen und dafür den Fensterwähler (mit einem Menü zwischen den geöffneten Fenstern wechseln) in das Panel getan. Das ist nur noch ein Knopf, und im Menu ist der vollständige Fenstertitel zu lesen und ich kann schnell das richtige Fenster finden.

Trotzdem wollte ich gerne Iconknöpfe für meine 5 wichigsten Programme (ein kleines Bild sagt mehr als tausend Worte), damit ich schnell zwischen diesen Tools wechseln kann.
Ein gutes Programm, das dabei hilft ist "alltray". Man startet alltray und kann dann auf ein Fenster klicken, z.B den Browser, und sofort schließt sich das Fenster und findet sich als Icon im systray-bar im Panel wieder. Ein Klick auf das Icon, bringt das Fenster geöffnet nach vorne, bzw. wenn es offen ist, wird es wieder iconifiziert.
Alles war prima. Bis ich vor einigen Tagen von ubuntu 12.04 auf ubuntu 14.04 upgraden musste. Ich habe es ja auch gerne getan, denn das das neue ubuntu läuft auch auf einem neuen Rechner, der 10x schneller compiliert.

Aber !! -

das ubuntu-team hat sich leider dazu entschlossen den systray zu entfernen (WTF). Angeblich würden sich die Knöpfe ja sooo uneinheitlich verhalten, das geht ja nun gar nicht. Grrmmmpf.

Es gibt zwar ein paar workaround patches, aber die haben nicht so richtig funktioniert. Ich habe nun nach einigem Grübeln und Suchen nun folgende Lösung für mich gefunden:

Die Startknöpfe meiner Lieblingsprogramme im Panel starten nun nicht das Executable sondern ein Shellscript.

Diese Script benutz xdotool, um die WindowID zu ermitteln, um dann anschließend das entsprechende Fenster in den Vordergrund zu holen oder das Executable zu starten.
Beispiel für Firefox:

#!/bin/sh
window=$(xdotool search --name "Mozilla Firefox")
echo $window
if [ "$window" = "" ]
then
  exec firefox
else
  xdotool windowactivate $window
fi


Der search Befehl kann mit --name ( = Fenstertitel ) oder --class arbeiten.
Da muss man ein wenig rumprobieren damit man nur eine WindowID bekommt. Aber immer klappt das nicht,  zum Beispiel mit gnome-terminal, dann probiert man eben alle durch:

#!/bin/sh
window=$(xdotool search --class "Terminal")
echo $window
if [ "$window" = "" ]
then
  exec gnome-terminal
else
  for id in $window
  do
    xdotool windowactivate $id
  done
fi

Zusatzlich habe ich noch einen zweiten terminal Starter, der den terminal direkt startet, falls ich mal ein zweites Terminal-Fenster brauche.

xdotool bietet eine Menge Möglichkeiten, ich könnte das Script noch so erweitern, das bei einem Klick auf das Icon, sich das Fenster schließt falls es schon offen ist, aber noch war der Leidensdruck dafür bei mir noch nicht groß genug.
Wer noch mehr will: was xdotool nicht kann, kann dann eventuell wmctrl.

 

Neuen Kommentar schreiben

Filtered HTML

  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • Zulässige HTML-Tags: <a> <em> <strong> <cite> <blockquote> <code> <ul> <ol> <li> <dl> <dt> <dd> <strike>
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.

Plain text

  • Keine HTML-Tags erlaubt.
  • Internet- und E-Mail-Adressen werden automatisch umgewandelt.
  • HTML - Zeilenumbrüche und Absätze werden automatisch erzeugt.
CAPTCHA
Du musst diese schwere Aufgabe bewältigen, um einen Hinweis darauf zu geben, dass du ein "realer" Mensch bist.
Fill in the blank.