Wie lege ich eine Verknüpfung für "Immer im Vordergrund" für das Fenster fest?

27

In 12.04 (Unity) möchte ich der Option "Immer im Vordergrund" für ein Fenster eine Verknüpfung zuweisen. Wahrscheinlich so etwas wie Ctrl+ Shift+ Homeeinschalten und Ctrl+ Shift+ Endausschalten oder was auch immer. Gibt es eine Option, um dies irgendwo im Compiz Settings Manager zu tun?

Dieser (alte) Beitrag behauptete das

Aktivieren Sie für compiz zusätzliche WM-Aktionen. Überprüfen Sie die Eigenschaften und fügen Sie ALT+ Ain das Schlüsselfeld ein, um die Aktion Immer im Vordergrund umschalten zu können.

Aber das konnte ich nicht finden.

Ian Hincks
quelle
1
Hat es hier jemand geschafft, diese Funktion in Ubuntu 12.10 ohne Verwendung von ccsm auszuführen? danke
Suhaib

Antworten:

32

Es sollte auf jedem Ubuntu-Betriebssystem seit Version 9.04 funktionieren, ohne dass etwas installiert werden muss, und das Erstellen von Verknüpfungen sollte geändert werden.

Versuchen Sie Alt+ Space, T

  • Alt+ Space als erste Verknüpfung ruft das Kontextmenü auf

  • T wählt die Funktion "Immer im Vordergrund".

user294298
quelle
1
Dies ist die absolut beste Antwort auf der Seite.
Dotancohen
Bestätigt die Arbeit an Unity 14.04. Die Tatsache, dass Alt + Leertaste ein Pulldown-Menü aktiviert, hilft insbesondere bei selten verwendeten Funktionen.
Frank M
Dies sollte die ausgewählte Antwort sein. Vielen Dank!
Nam G VU
1
Dies wurde 2 Jahre nach der Frage gepostet, stellt nun aber die beste Antwort dar, sodass ich die akzeptierte Antwort ändere.
Ian Hincks
2
funktioniert nicht am 18.04, der T wählt nicht mehr die 'Always On Top'-Funktion.
Rvbarreto
14

Da dies noch niemand erwähnt hat, lasse ich einfach eine Lösung, die für mich unter Ubuntu 12.04 funktioniert hat.

Sie können eine normale Tastenkombination einrichten und mit wmctrl die Option "Immer im Vordergrund " aktivieren oder deaktivieren .

Gehen Sie zu Systemeinstellungen> Tastatur> Verknüpfungen> Benutzerdefinierte Verknüpfungen . Drücken Sie das + und geben Sie Ihrer Verknüpfung einen Namen. Geben Sie dann den folgenden Befehl ein.

wmctrl -r :ACTIVE: -b toggle,above

Wenn Sie es noch nicht haben, können Sie wmctrl von den Repos mit installieren

sudo apt-get install wmctrl

Sie sollten etwas haben, das so aussieht.

Screenshot mit einem Setup-Bildschirm für benutzerdefinierte Tastaturkürzel

Klicken Sie auf "Anwenden" und schon kann es losgehen!

Diese Lösung ergab sich aus einer Diskussion in Ubuntu-Foren .

Kasisnu
quelle
@ Suhaib Dieser Teil ist bereits in der Antwort. :)
Kasisnu
lol sorry. Weiß nicht, wie ich es verpasst habe xD
Suhaib
7

Wenn nicht, installieren Sie CCSM und zusätzliche Compiz-Plugins über:

sudo apt-get install compizconfig-settings-manager compiz-plugins-extra

Sei dir bitte bewusst. CCSM kann Unity3D auf einigen Systemen beenden.

Wenn Sie nicht Compiz-Plugins-extra bereits installiert haben, müssen Sie Compiz neu zu starten , um sie zu laden (auch wenn sie vor dem Neustart ganz gut in CCSM anzuzeigen) mit Alt+ F2und

compiz --replace

Sie können zusätzliche WM-Aktionen im Abschnitt Windows-Verwaltung unter CCSM anzeigen, wie in dem Beitrag erläutert, den Sie gefunden haben. Dort können Sie einfach die gewünschte Aktion einstellen.

heartsmagic
quelle
Eigentlich muss compiz nur neu gestartet werden, damit es die neuen Plugins kennt. Danach können Sie die Verknüpfungen im laufenden Betrieb ändern (dh Sie müssen Compiz nicht nach jeder Änderung einer Verknüpfung neu starten)
sup
Vielen Dank für die Info @sup. Ich habe es nur mit dem angegebenen Beitrag erklärt. Eigentlich habe ich es nicht selbst ausprobiert.
heartsmagic
Nun, ich habe es umformuliert, um es noch klarer zu machen :-).
sup
2

Eine andere, meiner Meinung nach bessere Lösung ist das Hinzufügen von Alt+ Aals Verknüpfung, um die Eigenschaft "Immer im Vordergrund" eines Fensters umzuschalten. Dies kann über den gconf-editor erfolgen . Befolgen Sie einfach die einfachen Anweisungen in diesem Video .

EDIT: Aus dem Video kopiert

  1. Wenn Sie 12.04 && 12.10 verwenden, müssen Sie den gconf-editor installieren

    sudo apt-get install gconf-editor

  2. Geben Sie das gconf-editorTerminal ein.

  3. Klicken Sie auf Apps

  4. Gehe zur Metacity

  5. window_keybindings

  6. Klicken Sie mit der rechten Maustaste in das rechte Feld und klicken Sie auf new key

  7. Wählen Sie stringaus der Dropdown-Liste.

  8. Füge das Wort hinzu toggle_above

  9. Schreiben Sie einen beliebigen Befehl. Dh: A und OK drücken

Getan :-)

Tamakisquare
quelle
es hat nicht funktioniert :-(
Suhaib
Ja, es funktioniert auch nicht für 12.10.
Super
Es sollte in 14.04 dconf-editor sein ... aber es funktioniert auch nicht.
Ed Villegas
1

Ich habe versucht, den wmctrlBefehl umzuschalten, aber er funktionierte auf meinem Ubuntu-Setup nicht. Das Umschalten würde einschalten, aber nicht ausschalten. (Ich denke, es könnte daran liegen, dass ich die Gnome-Desktop-Umgebung verwende, auf der wmctrlAFAIK etwas kaputt ist).

Trotzdem habe ich nach langem Nachforschen und Nacharbeiten, wie man richtigen Code in Bash schreibt, einen einzelnen Befehl erstellt, der die wmctrlBefehle innerhalb einer Logikebene verwendet, um den Status "Immer im Vordergrund" auf dem aktuellen GNOME-Desktop effektiv umzuschalten. Ich habe diese Antwort auf Ask Unix / Linux gepostet, dachte aber, ich würde sie auch hier posten, falls jemand das gleiche Problem hat.

Hier ist der Befehl:

bash -c 'wmctrl -r :ACTIVE: -b $([[ $(xprop -id $(xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}") _NET_WM_STATE) =~ "ABOVE" ]] && echo "remove" || echo "add"),above'

Es überprüft die Eigenschaft "_NET_WM_STATE" für den aktiven Fensterstatus mit xprops. Wenn sie den Text "ABOVE" enthält, bedeutet dies, dass die Option "Immer im Vordergrund" aktiviert ist. Dann wird nur der wmctrlBefehl mit dem entsprechenden Parameter addoder ausgeführt remove.


Befehlsaufschlüsselung (jeder Befehl wird in den nächsten eingefügt und ersetzt den Platzhalter):

  • Aktive Fenster-ID abrufen:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
    
  • Ermitteln Sie den Fensterstatus xpropanhand der folgenden ID:

    xprop -id $(■) _NET_WM_STATE
    
  • Überprüfen Sie, ob der Status "OBEN" enthält, was darauf hinweist, dass das Fenster auf "Immer im Vordergrund" eingestellt ist:

    [[ $(■) =~ "ABOVE" ]]
    
  • Gib "remove" zurück, wenn "true", sonst "add":

    ■ && echo "remove" || echo "add"
    
  • Führen Sie den wmctrlBefehl mit dem zurückgegebenen Wert als Parameter aus:

    wmctrl -r :ACTIVE: -b $(■),above
    
  • Senden Sie das Ganze an, bashdamit Sie die Befehlsersetzung ${ ... }, die Bash-Boolesche Auswertung [[ ... ]]und den Regex-Match-Operator verwenden können =~:

    bash -c '■'
    

    Insbesondere für diesen letzten Schritt habe ich sehr lange gebraucht, um das herauszufinden. Bis ich merkte, dass die Tastaturkürzel nicht standardmäßig in bash ausgeführt wurden, hatte ich keine Ahnung, warum die Befehle in der Konsole beim Testen funktionierten, aber im Hintergrund fehlschlugen, wenn sie direkt als Tastaturkürzel ausgeführt wurden. Es trieb mich ewig die Wand hoch!

Hinweis: Da Sie Anführungszeichen für den Befehl benötigen, den Sie an bash senden, musste ich beim Schreiben des Befehls darauf achten, dass ich nie mehr als eine Ebene tiefer ging (doppelte Anführungszeichen verwenden). Jede weitere Verschachtelung von Zeichenfolgen in Anführungszeichen hätte viele verwirrende Backslashes erforderlich gemacht, um den Anführungszeichen zu entgehen.

Geoff Davids
quelle
0

Es mag zu spät sein, aber wenn jemand erneut danach sucht und hierher kommt, gibt es für mich eine einfachere Lösung:

Auf Ubuntu und vielen anderen Distributionen, die GTK verwenden (sie teilen sich meistens das Einstellungsfeld), können Sie zu Einstellungen -> Tastatur> Verknüpfung gehen. In der "Liste" der Verknüpfung finden Sie den Eintrag nicht zugewiesen, um ein Fenster im Vordergrund zu halten. Ich bin mir des Namens auf Englisch nicht sicher, aber auf Französisch ist es "Activer / Désactiver la mise au premier plan de la fenêtre".

Stellen Sie es ein und das wars :)

Gabriel Genois
quelle