1 votes

Réduire toutes les fenêtres de l'application en cours, à l'exception de la fenêtre active.

Je passe à Safari, par exemple, et je trouve la fenêtre que je veux. Je peux Command-Option-H pour cacher toutes les autres applications, mais je également Je veux réduire toutes les fenêtres Safari, sauf celle que j'utilise (la plus en avant).

Y a-t-il un moyen de le faire ? Je me contenterais d'un AppleScript que je pourrais déclencher avec Keyboard Maestro.

0 votes

J'ai mis à jour ma réponse avec un bloc supplémentaire de code vous pouvez essayer.

1voto

user3439894 Points 52496

Voici un AppleScript qui atteint les résultats de ce que vous aviez explicitement et spécifiquement demandé à l'origine, avant de modifier la question après qu'il y ait été répondu.

tell application "Safari"
    activate
    tell application "System Events"
        keystroke "h" using {command down, option down}
    end tell
    set miniaturized of (windows whose index is not 1) to true
end tell

Remarque : L'AppleScript ci-dessus fonctionne pour moi sous OS X 10.8.5 et Safari 6.2.8 mais je ne l'ai pas testé sur une autre version d'OS X. Cela dit, je pense qu'il fonctionnera parfaitement sur d'autres versions d'OS X.


Mise à jour pour répondre à l'édition de la question originale :

J'ai joué un peu avec différentes méthodes et ce que j'ai trouvé, c'est que, parmi les méthodes que j'ai essayées, la plupart des applications fonctionnaient, mais pas toutes. En d'autres termes, je n'ai pas trouvé de méthode universelle qui fonctionne avec toutes les applications que j'utilise normalement. J'ai donc ajouté un bloc de code que vous pouvez essayer et voir si ça peut marcher pour vous.

Idéalement, il suffirait de masquer toutes les autres applications et de réduire les fenêtres non actives de l'application en cours afin d'obtenir une apparence lisse dans l'action, mais le Finder a présenté un défi. Ainsi, dans cet exemple code Le Finder doit d'abord minimiser toutes ses fenêtres et ramener ce qui était le plus en avant, tandis que les autres applications ont un effet de cascade pour minimiser les fenêtres non actives tout en laissant la fenêtre la plus en avant telle quelle.

tell application "System Events"
    set frontApp to name of first application process whose frontmost is true
    set windowName to name of first window of application process frontApp
end tell

if not frontApp is "Finder" then
    tell application frontApp
        activate
        tell application "System Events"
            keystroke "h" using {command down, option down}
        end tell
        set miniaturized of (windows whose name is not windowName) to true
    end tell
else
    tell application frontApp
        activate
        tell application "System Events"
            keystroke "h" using {command down, option down}
            keystroke "m" using {command down, option down}
            tell process frontApp to click menu item windowName of menu 1 of menu bar item "Window" of menu bar 1
        end tell
    end tell
end if

0 votes

Travaux ! Cependant, je cherchais quelque chose qui fonctionnerait pour n'importe quelle application avant. Ajout de set frontApp to name of first application process whose frontmost is true et le fait de changer "Safari" en frontApp dans la première ligne ne semble pas fonctionner !?

0 votes

@Alesh Houdek, Dans votre commentaire vous avez dit, " Je cherchais quelque chose qui fonctionnerait pour n'importe quelle application. " et Ce n'est pas du tout ce que vous avez dit dans votre question. car vous avez explicitement et spécifiquement dit " Je passe à Safari et trouve la fenêtre que je veux. Je peux utiliser Command-Option-H pour masquer toutes les autres applications, mais je veux aussi réduire toutes les fenêtres Safari, sauf celle que j'utilise (la plus à l'avant). "ce qui est exactement ce que fait l'AppleScript que j'ai fourni !

1 votes

C'est vrai ! !! Je suppose que je pensais à "par exemple". Très mauvaise question. Quand même, c'est bizarre que ça ne marche pas avec ma petite modification.

-1voto

TemporaryEfx Points 1

Cet AppleScript demandera à l'application active de minimiser toutes les fenêtres. sauf la fenêtre active (c'est-à-dire la plus en avant).

set theFrontApp to (path to frontmost application as Unicode text)
tell application theFrontApp
    set theWindows to the windows whose miniaturized is false
    set theFrontID to the id of the front window
    repeat with theWindow in theWindows
        if the id of theWindow is not theFrontID then set the miniaturized of theWindow to true
    end repeat
end tell

Props à @barryels pour la nifty extrait pour l'application frontale.

0 votes

Cela échoue si Finder est l'application la plus en vue.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X