Comment envoyer la fenêtre actuellement active à l'arrière?

15

Existe-t-il un raccourci ou tel pour envoyer la fenêtre actuellement active à l'arrière de l'écran tout en la gardant ouverte (pour qu'elle se retrouve "sous" toutes les autres fenêtres ouvertes)?

Tetsujin
la source
2
H enverra l'application actuelle (y compris toutes ses fenêtres) à l'arrière et la masquera jusqu'à ce que vous la rameniez à l'avant (à partir du dock ou par -TAB pour resélectionner l'application). Dans la plupart des applications, Shift-- ~ fera défiler les fenêtres de l'application actuelle, ce qui est probablement le plus proche de ce que vous recherchez.
Mic Channel
Je le sais, ce n'est pas ce que je veux.
1
Si vous voulez l'envoyer à l'arrière, quelle fenêtre devrait être votre objectif? La fenêtre sélectionnée précédente?
sayzlim

Réponses:

10

Réponse courte: Non , Apple ne fournit pas d'API qui vous permet de modifier un index de fenêtre d'application sauf en mettant une fenêtre au premier plan (index 1). Il n'y a pas de solutions élégantes . Mais:

Réponse longue: Oui , vous pouvez utiliser AppleScript pour déplacer efficacement une fenêtre à l'arrière d'une pile de fenêtres compatibles AppleScript en collectant une liste de fenêtres, puis en les déplaçant rapidement ( sauf la plus en avant) vers l'avant, en laissant la fenêtre choisie À l'arrière.

Voici un exemple d'AppleScript qui envoie la fenêtre du Finder la plus en avant à l'arrière.

tell application "Finder"
    set winList to every window whose visible is true
    if not winList = {} then
        repeat with oWin in (items 1 through -2 of reverse of winList)
            set index of oWin to 1
        end repeat
    end if
end tell

Ce script est basé sur une solution de JMichaelTX discutée sur le forum KeyboardMaestro.

Le remaniement est incroyablement rapide, mais dans l'éditeur de script, vous pouvez inspecter son fonctionnement, en laissant "506" en bas et en faisant apparaître "502-505" d'une manière qui préserve leur ordre:

get every window whose visible = true
    --> {Finder window id 506, Finder window id 505, Finder window id 504, Finder window id 503, Finder window id 502}
set index of Finder window id 502 to 1
    --> 1
set index of Finder window id 503 to 1
    --> 1
set index of Finder window id 504 to 1
    --> 1
set index of Finder window id 505 to 1
    --> 1

Vous pouvez mapper cet AppleScript à un service ou à un raccourci clavier, soit en a) en plaçant le script dans une action Exécuter AppleScript dans un service Automator, ou b) en utilisant un lanceur (Alfred, Keyboard Maestro, etc.). Pour plus de détails sur l'affectation du clavier Applescript, voir: Comment attribuer un raccourci clavier à un AppleScript que j'ai écrit?

Cela peut satisfaire les besoins des PO - cela ne ressort pas clairement de la publication d'origine. Cette solution peut également être étendue à plusieurs applications compatibles AppleScript. Je ne suis cependant pas au courant d'une solution pour le faire fonctionner efficacement avec un mélange de fenêtres scriptables et non scriptables, car dans AppleScript, les System Eventsfenêtres adressables pour les applications non scriptables n'ont pas de set indexverbe / propriété. Il existe une action "AXRaise" pour certaines fenêtres lorsque les appareils fonctionnels / l'accessibilité sont activés, mais cela ne s'applique pas non plus à toutes les fenêtres. Il existe des hacks élaborés qui impliquent de parcourir chaque application active et d'afficher / masquer ou de réduire / restaurer les fenêtres, mais ils sont un gâchis.

Discussions connexes:

JeremyDouglass
la source
Est-il possible d'envoyer la fenêtre d'une application à l'arrière, au lieu de la fenêtre d'une application spécifique?
Di Liu
Malheureusement, depuis Mojave, cela ne semble plus fonctionner.
Edward Falk
Depuis Mojave, ma compréhension est que le contrôle du Finder avec AppleScript a maintenant besoin d'autorisations pour s'exécuter (non testé). Si vous obtenez des erreurs comme errAEEventNotPermitted, il existe des solutions pour ajouter ces autorisations - voir les discussions connexes: forums.developer.apple.com/thread/106949
JeremyDouglass
2

Votre question n'est pas très claire, mais si vous voulez un raccourci pour parcourir toutes les fenêtres de l'application actuellement active, vous devriez pouvoir le faire avec le Command~raccourci clavier.

La ~clé est généralement située à gauche de la 1clé.

Juste pour clarifier, le Command~raccourci clavier fait défiler toutes les fenêtres de l'application actuelle dans laquelle vous vous trouvez. Par exemple, si vous utilisez MS Word et que trois documents sont ouverts, il parcourra ces trois documents.

Cependant, le Command~raccourci clavier ne fait pas défiler les onglets. Par exemple, si Safari est ouvert avec trois fenêtres et que chaque fenêtre a cinq onglets ouverts, l'utilisation de ce raccourci fera défiler les trois fenêtres, pas les onglets individuels.

Une autre option qui peut atteindre ce que vous voulez est le CommandMraccourci clavier. Cependant, cela minimise la fenêtre actuellement active sur le Dock, donc je pense que ce n'est pas ce que vous voulez.

Si j'ai mal compris votre question, veuillez clarifier.

Monomeeth
la source
Je pense que c'est le cas d'utilisation que souhaite l'OP: disons que j'ai l'application de messages ouverte devant mon application de messagerie et que je veux rapidement mettre l'application de messagerie au premier plan et envoyer des messages à l'arrière-plan, je peux faire un clavier raccourci et l'application de messages sera derrière mon application de messagerie. J'ai essayé votre raccourci clavier et cela n'a pas réussi.
owlswipe
Je pense que vous voulez dire la clé. ~ est le seul imprimé lorsque Shift est maintenu et `est pressé
Crowder