Comment définir un raccourci pour "Always on Top" pour la fenêtre?

27

Dans 12.04 (Unity), je voudrais attribuer un raccourci à l'option "toujours en haut" pour une fenêtre. Probablement quelque chose comme Ctrl+ Shift+ Homepour activer et Ctrl+ Shift+ Endpour désactiver, ou autre chose. Existe-t-il une option pour le faire quelque part dans le Gestionnaire de paramètres Compiz?

Ce (vieux) post affirmait que

Pour compiz, activez les actions WM supplémentaires. Vérifiez les propriétés et insérez ALT+ Adans le champ Clé pour l'action Toggle Always-On-Top.

Mais je n'ai pas pu trouver ça.

Ian Hincks
la source
1
Quelqu'un a-t-il réussi à faire fonctionner Ubuntu 12.10 sans utiliser ccsm? merci
Suhaib

Réponses:

32

Il devrait fonctionner sur tous les systèmes d'exploitation Ubuntu depuis la version 9.04 sans rien installer, sans modifier la création de raccourcis.

Essayez Alt+ Space, T

  • Alt+ Space comme le premier raccourci fait apparaître le menu du clic droit de la souris

  • T sélectionne la fonction "Always On Top".

user294298
la source
1
C'est absolument la meilleure réponse sur la page.
dotancohen
Travail confirmé sur Unity 14.04. Le fait que alt + espace active un menu déroulant aide surtout pour les fonctionnalités rarement utilisées.
Frank M
Ce devrait être la réponse choisie. Merci!
Nam G VU
1
Cela a été publié 2 ans après la question, mais représente maintenant la meilleure réponse, donc je modifie la réponse acceptée.
Ian Hincks
2
ne fonctionne pas le 18.04, le T ne sélectionne plus la fonction 'Always On Top'.
rvbarreto
14

Comme personne ne l'a encore mentionné, je vais simplement laisser une solution qui a fonctionné pour moi sur Ubuntu 12.04.

Vous pouvez configurer un raccourci clavier normal et utiliser wmctrl pour basculer l'option "Always on Top".

Accédez à Paramètres système> Clavier> Raccourcis> Raccourcis personnalisés . Appuyez sur le + et donnez un nom à votre raccourci. Entrez ensuite la commande suivante.

wmctrl -r :ACTIVE: -b toggle,above

Si vous ne l'avez pas déjà, vous pouvez installer wmctrl à partir du référentiel en utilisant

sudo apt-get install wmctrl

Vous devriez avoir quelque chose qui ressemble à ceci.

Capture d'écran montrant un écran de configuration de raccourci clavier personnalisé

Cliquez sur Appliquer et vous devriez être prêt à partir!

Cette solution est issue d'une discussion sur les forums Ubuntu .

Kasisnu
la source
@Suhaib Cette partie est déjà dans la réponse. :)
Kasisnu
lol désolé. Je ne sais pas comment j'ai raté ça xD
Suhaib
7

Sinon, installez CCSM et les plugins compiz supplémentaires via:

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

Soyez conscient s'il vous plaît. CCSM peut tuer Unity3D sur certains systèmes.

Si vous n'avez pas déjà installé compiz-plugins-extra, vous devez redémarrer Compiz pour les charger (même s'ils s'affichent très bien dans CCSM avant le redémarrage) avec Alt+ F2et

compiz --replace

Vous pouvez voir Extra WM Actions sous la section Windows Management sur CCSM comme expliqué dans le message que vous avez trouvé. Vous pouvez y définir facilement l'action souhaitée.

cœur magique
la source
En fait, le redémarrage de compiz n'est nécessaire que pour qu'il soit au courant des nouveaux plugins. Ensuite, vous pouvez modifier les raccourcis à la volée (c'est-à-dire que vous n'avez pas besoin de redémarrer Compiz après chaque changement de raccourci)
sup
Merci pour l'info @sup. Je viens de l'expliquer en utilisant le post donné. En fait, je ne l'ai pas essayé moi-même.
heartsmagic
Eh bien, je l'ai reformulé pour le rendre encore plus clair :-).
sup
2

Une autre solution, meilleure je pense, consiste à ajouter Alt+ Acomme raccourci pour basculer la propriété "Always on Top" d'une fenêtre. Cela peut être fait via gconf-editor . Suivez simplement les instructions simples données dans cette vidéo .

EDIT: Copié de la vidéo

  1. si vous utilisez 12.04 && 12.10 vous devez installer gconf-editor

    sudo apt-get install gconf-editor

  2. Saisissez le gconf-editorterminal.

  3. Cliquez sur les applis

  4. Aller à la métacité

  5. window_keybindings

  6. clic droit dans la case de droite et cliquez sur new key

  7. Choisissez stringdans la liste déroulante.

  8. Ajoutez le mot toggle_above

  9. Écrivez la commande que vous voulez. c'est-à-dire: A et appuyez sur OK

Terminé :-)

tamakisquare
la source
cela n'a pas fonctionné :-(
Suhaib
Oui, cela ne fonctionne pas non plus pour 12.10.
sup
Ce devrait être dconf-editor en 14.04 ... mais ça ne marche pas non plus.
Ed Villegas
1

J'ai essayé d'utiliser la wmctrlcommande à bascule, mais cela n'a pas fonctionné sur ma configuration Ubuntu. La bascule serait activée, mais pas désactivée. (Je pense que c'est peut-être parce que j'utilise l'environnement de bureau gnome, sur lequel wmctrlAFAIK est légèrement cassé).

Quoi qu'il en soit, après beaucoup de recherches et de travail pour écrire le bon code en bash, j'ai créé une seule commande qui utilise les wmctrlcommandes dans une couche de logique pour basculer efficacement l'état `` toujours au top '' sur le bureau GNOME actuel. J'ai posté cette réponse sur Ask Unix / Linux, mais j'ai pensé la publier ici aussi au cas où quelqu'un aurait le même problème.

Voici la commande:

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'

Il vérifie la propriété d'état de la fenêtre active "_NET_WM_STATE" en utilisant xprops, et s'il contient le texte "AU-DESSUS" cela signifie que l'option 'toujours au sommet' est active. Ensuite, il exécute simplement la wmctrlcommande avec le paramètre addou removeselon le cas.


Répartition des commandes (chaque commande est insérée dans la suivante, en remplacement de l' espace réservé):

  • Obtenir l'ID de la fenêtre active:

    xprop -root -f _NET_ACTIVE_WINDOW 0x " \$0\\n" _NET_ACTIVE_WINDOW | awk "{print \$2}"
    
  • Obtenez l'état de la fenêtre en xproputilisant l'id:

    xprop -id $(■) _NET_WM_STATE
    
  • Vérifiez si l'état contient "AU-DESSUS", indiquant que la fenêtre est définie sur "toujours en haut":

    [[ $(■) =~ "ABOVE" ]]
    
  • Renvoyer "supprimer" si vrai, sinon retourner "ajouter":

    ■ && echo "remove" || echo "add"
    
  • exécuter la wmctrlcommande en utilisant la valeur renvoyée comme paramètre:

    wmctrl -r :ACTIVE: -b $(■),above
    
  • Envoyez le tout à bashafin que vous puissiez utiliser la substitution de commandes ${ ... }, l'évaluation booléenne bash [[ ... ]]et l'opérateur de correspondance d'expression régulière =~:

    bash -c '■'
    

    Cette dernière étape en particulier m'a mis très longtemps à comprendre. Jusqu'à ce que je réalise que les raccourcis clavier ne s'exécutaient pas dans bash par défaut, je ne savais pas pourquoi les commandes fonctionnaient dans la console pendant que je les testais mais échouaient silencieusement lorsqu'elles étaient exécutées directement en tant que raccourci clavier. Cela m'a fait monter le mur pendant des siècles!

Remarque: parce que vous avez besoin de guillemets autour de la commande que vous envoyez à bash, j'ai dû faire attention lors de l'écriture de la commande que je ne suis jamais allé plus d'un niveau de plus (en utilisant des guillemets doubles). Toute imbrication supplémentaire de chaînes entre guillemets aurait nécessité de nombreuses barres obliques inverses pour échapper aux guillemets.

Geoff Davids
la source
0

Il est peut-être trop tard mais si quelqu'un le recherche à nouveau et vient ici, il y a, pour moi, une solution plus simple:

Sur Ubuntu et sur de nombreuses autres distributions utilisant GTK (ils partagent principalement le panneau de configuration), vous pouvez aller dans Paramètres -> clavier> raccourci. Dans la "liste" des raccourcis, vous trouverez l'entrée non affectée pour garder une fenêtre en haut. Pas sûr du nom en anglais mais en français c'est "Activer / Désactiver la mise au premier plan de la fenêtre".

Réglez-le et c'est tout :)

Gabriel Genois
la source