Come impostare una scorciatoia per "Sempre in primo piano" per la finestra?


27

In 12.04 (Unity), vorrei assegnare un collegamento all'opzione "Sempre in primo piano" per una finestra. Probabilmente qualcosa come Ctrl+ Shift+ Homeper accendere e Ctrl+ Shift+ Endper spegnere, o altro. Esiste un'opzione per farlo da qualche parte in Gestione impostazioni Compiz?

Questo (vecchio) post lo ha affermato

Per compiz, Abilita azioni WM extra. Controlla le proprietà e inserisci ALT+ Anel campo Chiave per attivare l'opzione Sempre in primo piano.

Ma non sono riuscito a trovarlo.


1
Qualcuno qui è riuscito a farlo funzionare in Ubuntu 12.10 senza usare ccsm? grazie
Suhaib,

Risposte:


32

Dovrebbe funzionare su tutti i sistemi operativi Ubuntu dalla versione 9.04 senza installare nulla, modificando la creazione di collegamenti.

Prova Alt+ Space, T

  • Alt+ Space come primo collegamento porta in primo piano il menu del mouse

  • T seleziona la funzione "Sempre in primo piano".


1
Questa è assolutamente la migliore risposta sulla pagina.
dotancohen,

Lavoro confermato su Unity 14.04. Il fatto che alt + spazio attivi un menu a discesa aiuta soprattutto per le funzioni usate di rado.
Frank M,

Questa dovrebbe essere la risposta selezionata. Grazie!
Nam G VU,

1
Questo è stato pubblicato 2 anni dopo la domanda, ma ora rappresenta la risposta migliore, quindi sto cambiando la risposta accettata.
Ian Hincks,

2
non funzionante su 18.04, la T non seleziona più la funzione "Sempre in primo piano".
rvbarreto,

14

Dato che nessuno lo ha ancora menzionato, lascerò una soluzione che ha funzionato per me su Ubuntu 12.04.

È possibile impostare una normale scorciatoia da tastiera e utilizzare wmctrl per attivare l'opzione "Sempre in primo piano".

Vai su Impostazioni di sistema> Tastiera> Scorciatoie> Scorciatoie personalizzate . Premi il + e dai un nome alla tua scorciatoia. Quindi immettere il seguente comando.

wmctrl -r :ACTIVE: -b toggle,above

Se non lo hai già, puoi installare wmctrl dai repository usando

sudo apt-get install wmctrl

Dovresti avere qualcosa di simile a questo.

Schermata che mostra una schermata di configurazione della scorciatoia da tastiera personalizzata

Hit applica e dovresti essere bravo ad andare!

Questa soluzione è nata da una discussione sui forum di Ubuntu .


@Suhaib Quella parte è già nella risposta. :)
Kasisnu,

lol, scusa. Non so come l'ho perso xD
Suhaib,

7

In caso contrario, installare CCSM e plug-in compiz extra tramite:

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

Sii consapevole per favore. CCSM può uccidere Unity3D su alcuni sistemi.

Se non hai già installato compiz-plugins-extra, devi riavviare Compiz per caricarli (anche se vengono visualizzati in CCSM bene prima del riavvio) con Alt+ F2e

compiz --replace

Puoi vedere Azioni WM extra nella sezione Gestione di Windows in CCSM come spiegato nel post che hai trovato. È possibile impostare facilmente l'azione desiderata lì.


In realtà, il riavvio di compiz è necessario solo per essere a conoscenza dei nuovi plugin. Successivamente, è possibile modificare le scorciatoie al volo (ovvero non è necessario riavviare Compiz dopo ogni modifica di una scorciatoia)
sup

Grazie per l'informazione @sup. L'ho appena spiegato usando il post indicato. In realtà non l'ho provato da solo.
heartsmagic

Bene, l'ho riformulato per renderlo ancora più chiaro :-).
sup

2

Un'altra, meglio credo, la soluzione è quella di aggiungere Alt+ Acome scorciatoia per attivare / disattivare la proprietà "Sempre in primo piano" di una finestra. Questo può essere fatto tramite gconf-editor . Segui le semplici istruzioni fornite in questo video .

EDIT: copiato dal video

  1. se stai usando 12.04 && 12.10 devi installare gconf-editor

    sudo apt-get install gconf-editor

  2. Digitare il gconf-editorterminale.

  3. Fai clic sulle app

  4. Vai a metacity

  5. window_keybindings

  6. fare clic con il tasto destro nella casella a destra e fare clic su new key

  7. Scegli stringdall'elenco a discesa.

  8. Aggiungi la parola toggle_above

  9. Scrivi qualsiasi comando tu voglia. ad es .: A e premere OK

Fatto :-)


non ha funzionato :-(
Suhaib il

Sì, non funziona neanche per il 12.10.
sup

Dovrebbe essere dconf-editor in 14.04 ... ma non funziona neanche.
Ed Villegas,

1

Ho provato a usare il wmctrlcomando toggle, ma non ha funzionato sulla mia configurazione di Ubuntu. La levetta si attiva, ma non si disattiva. (Penso che potrebbe essere perché sto usando l'ambiente desktop gnome, su cui wmctrlè leggermente rotto AFAIK).

Ad ogni modo, dopo molte ricerche e lavorando su come scrivere il codice corretto in bash, ho creato un singolo comando che utilizza i wmctrlcomandi all'interno di un livello logico per attivare efficacemente lo stato "sempre in primo piano" sul desktop GNOME corrente. Ho pubblicato questa risposta su Ask Unix / Linux, ma ho pensato di pubblicarla anche qui se qualcuno avesse avuto lo stesso problema.

Ecco il comando:

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'

Controlla la proprietà dello stato della finestra attiva "_NET_WM_STATE" utilizzando xpropse se contiene il testo "ABOVE" significa che l'opzione "sempre in primo piano" è attiva. Quindi esegue semplicemente il wmctrlcomando con il parametro addo removecome appropriato.


Ripartizione dei comandi (ogni comando viene inserito nel successivo, sostituendo il segnaposto):

  • Ottieni ID finestra attivo:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
    
  • Ottieni lo stato della finestra xpropusando l'id:

    xprop -id $(■) _NET_WM_STATE
    
  • Controlla se lo stato contiene "ABOVE", indicando che la finestra è impostata su "sempre in primo piano":

    [[ $(■) =~ "ABOVE" ]]
    
  • Restituisce "rimuovi" se vero, altrimenti restituisce "aggiungi":

    ■ && echo "remove" || echo "add"
    
  • eseguire il wmctrlcomando utilizzando il valore restituito come parametro:

    wmctrl -r :ACTIVE: -b $(■),above
    
  • Invia il tutto a in bashmodo da poter usare la sostituzione dei comandi ${ ... }, la valutazione booleana bash [[ ... ]]e l'operatore di corrispondenza regex =~:

    bash -c '■'
    

    Quest'ultimo passo, in particolare, mi ha impiegato molto tempo per capire. Fino a quando mi sono reso conto che le scorciatoie da tastiera non erano in esecuzione in bash per impostazione predefinita, non avevo idea del motivo per cui i comandi funzionavano nella console mentre li stavo testando ma fallendo silenziosamente quando eseguito direttamente come scorciatoia da tastiera. Mi ha spinto il muro per secoli!

Nota: poiché hai bisogno di virgolette attorno al comando che stai inviando a bash, ho dovuto fare attenzione quando scrivevo il comando che non sono mai andato oltre un livello più profondo (usando virgolette doppie). Qualsiasi ulteriore nidificazione di stringhe tra virgolette avrebbe richiesto molte barre inverse confuse per sfuggire alle virgolette.


0

Potrebbe essere troppo tardi, ma se qualcuno lo cerca di nuovo e vieni qui, c'è, per quanto mi riguarda, una soluzione più semplice:

Su Ubuntu e su molte altre distribuzioni che usano GTK (condividono principalmente il pannello delle impostazioni), puoi andare su Impostazioni -> tastiera> scorciatoia. Nella "lista" del collegamento, troverai la voce non assegnata per mantenere una finestra in cima. Non sono sicuro del nome in inglese, ma in francese è "Attore / Disegnatore la messa al primo piano della fenice".

Impostalo e basta :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.