Wie kann ich verhindern, dass neue Fenster über dem, was ich tue, auftauchen?

7

Wenn ich in Ubuntu 10.04 Netbook ein Programm öffnen möchte, geht es normalerweise so: Ein beliebiges offenes Programm
(Ein offenes Programm)

Dazu:
Verwenden eines Programmstarters zum Starten eines anderen Programms http://a.yfrog.com/img251/3201/workspace2002thumb.png

(Öffnen eines anderen Programms mit Kupfer )

dazu:
Das andere Programm wird gestartet und endet über dem aktuellen Programm

Wie kann ich das Verhalten so ändern, dass nach dem Starten des Programms der Fokus wieder auf das ursprüngliche Programm gelegt wird (und auf diesem bleibt) oder mit anderen Worten, alle neuen Fenster im Hintergrund geöffnet werden?

Ich verwende Ubuntu 10.04 Netbook mit Mutter, obwohl dies auch bei Verwendung von Metacity passiert ist.

digitxp
quelle

Antworten:

2

Bearbeiten: Tatsächlich gibt es einen Fehler in GNOME , mit dem Sie ganz einfach erreichen können, was Sie wollen. Alles, was Sie tun müssen, ist, ein Fenster, ein beliebiges Fenster , auf Immer oben zu setzen. Alle anschließend geöffneten Fenster werden im Hintergrund ausgeführt und nicht fokussiert. Ich empfehle Ihnen, z. B. ein Terminal so klein wie möglich zu machen, es z. B. in einer Ecke aus dem Weg zu räumen und Always On Top einzustellen.

Beachten Sie, dass dieses Update einfach zu implementieren ist, aber in Wirklichkeit eine unübersichtliche Problemumgehung ist, die keine echte Lösung darstellt, und nicht mehr funktioniert, sobald der verknüpfte Fehler behoben ist (obwohl dies mehr als 2 Release-Zyklen entfernt sein könnte).


Für Mutter gibt es einen Gconf-Schlüssel, um zu verhindern, dass Anwendungen den Fokus stehlen:

Starten Sie den gconf-Editor, navigieren Sie zu Apps -> Metacity -> General und setzen Sie "Fokus auf neue Fenster" auf streng.

Möglicherweise reicht dies nicht aus, und einige oder alle Apps werden weiterhin mit Fokus gestartet. Zumindest verhindert das oben Gesagte, dass vom Terminal gestartete Apps den Fokus stehlen, sodass Sie dies umgehen können, indem Sie die folgenden Schritte ausführen:

Stellen Sie sich vor, dass Menüelemente und Bedienfeldschaltflächen von Terminals aus gestartet werden, indem Sie das Feld "Befehl" ändern.

So firefoxwird

gnome-terminal -e firefox

Einige Anwendungen geben die Eingabeaufforderung nicht sofort zurück, daher ist ein weiterer Schritt in Form eines Skripts erforderlich.

Der Befehl lautet gnome-terminal -e "/bin/bglaunch.sh firefox"

Wobei /bin/bglaunch.sh das folgende Skript ist, mit dem die Anwendung im Hintergrund gestartet wird:

#!/bin/bash
nohup $1 >/dev/null & 
imoatama
quelle
1
Hast du schon die Chance bekommen, das zu versuchen?
Imoatama
@imoatama Es erscheint ein hässliches Terminal, wenn es ausgeführt wird, macht das Ding jedoch im Hintergrund offen.
digitxp
Ich habe jedoch nicht die Zeit, dies bei jedem Menüeintrag zu tun.
digitxp
Nur auf streng zu setzen war nicht genug? Dh wenn Sie Dinge nicht über das Terminal starten, stehlen sie den Fokus?
Imoatama
Eine einfachere Problemumgehung finden Sie in der bearbeiteten Antwort.
Imoatama
9

Installieren Sie im Ubuntu Software Center "Advanced Desktop Effects Settings (ccsm)".

Nach der Installation wird im Menü System-> Einstellungen ein neuer Menüpunkt mit dem Namen "CompizConfig Settings Manager" angezeigt. Klicken Sie darauf und navigieren Sie zu Allgemein-> Allgemeine Optionen-> Fokus und Verhalten erhöhen. Stellen Sie die "Fokusverhinderungsstufe" auf "Hoch" oder "Sehr hoch", um zu verhindern, dass sich neue Fenster im Vordergrund öffnen.

Nilpferd
quelle
Funktioniert das auch mit einem anderen Window Manager? Ich wäre geschraubt, wenn es Mutter wegen der schrecklichen Grafik des eeePC 1005HA durch Compiz ersetzen würde.
digitxp
1
Dies funktioniert nur mit Compiz. Wie schlechte Grafiken sprechen wir? Nach allem, was ich gehört habe, ist Mutter auch ziemlich anspruchsvoll, allerdings zumindest ein bisschen weniger als Compiz.
Imoatama
2

Eine Möglichkeit besteht darin, im Hauptmenü mit der rechten Maustaste auf die obere Leiste des Fensters zu klicken und sie so einzustellen, dass sie immer oben ist.

Ryan Gooler
quelle
schön und einfach! +1
Studiohack
1
Aber ich möchte, dass dieses Verhalten für jedes Fenster gilt, sodass es nicht funktioniert, wenn alle diese Fenster oben sind.
digitxp
1

Vor 20 Jahren waren "Focus Grabbing" -Einstellungen ein grundlegendes Merkmal der Systemanzeigeeinstellungen. Soviel zur "fortschrittlichen" Technologie. :(

Eine einfache Möglichkeit, das Programm im Hintergrund zu öffnen und das Terminal freizugeben, wäre "Firefox &". Das kaufmännische Und führt den Befehl als Hintergrundprozess aus. "/bin/bglaunch.sh Firefox" Ich glaube, ich würde ein Terminal starten, das dann Firefox startet.

Dave
quelle
0

Hallo! Versuche dies:

#!/bin/bash
delay=0.5
while true; do 
        windowId=`xdotool getwindowfocus`
        xdotool getwindowname $windowId
        xdotool windowactivate $windowId; 
        sleep $delay; 
done

Dieses Skript hängt davon ab, dass Sie die "Fokusverhinderungsstufe" so hoch einstellen, dass neu geöffnete Fenster nicht den Fokus erhalten. Es funktioniert mindestens unter Ubuntu 10.04 und 12.04, sollte aber überall funktionieren ... Wenn es für Sie fehlschlägt, sagen Sie es und wir können zusammen denken!

Dies ist eine Endlosschleife (unterbrechen Sie sie mit Strg + C), die das Fenster mit Fokus "aktiviert" (Fokus für Tastatureingabe). Das fokussierte Fenster "springt" also alle 0,5 Sekunden in den Vordergrund (Sie können den Verzögerungswert nach Ihren Bedürfnissen / Ihrem Geschmack verringern oder erhöhen).

Alle neu geöffneten Anwendungen und Fenster werden also weiterhin im Vordergrund geöffnet, aber sofort von dem fokussierten Fenster ausgeblendet!

Um es klar zu machen, werden sie nicht im Hintergrund geöffnet, aber dieses Skript bietet fast den gleichen Effekt. Fast, weil Sie, wenn Sie sehr unglücklich sind, immer noch auf das neu geöffnete Fenster klicken können, bevor das fokussierte Fenster in den Vordergrund gestellt wird. Dadurch wird das neue Fenster fokussiert ... Wenn Sie die Verzögerung verringern, können Sie dies verhindern, aber mehr CPU verbrauchen. Ich denke, weniger als 0,1 ist nicht gut, aber Sie müssen testen, um zu sehen, was für Sie besser funktioniert ...

PS.: Ihre xdotool-Version muss die folgenden Befehle unterstützen: getwindowfocus, getwindowname, windowactivate

Wassermann
quelle
Hallo Aquaris, können Sie zwei oder drei Hintergrundinformationen zu den tatsächlichen Funktionen dieser Zeile bereitstellen? (Sogar ein "Es macht, was das OP verlangt" ist
Nixda