AppliScript per fare clic sul pulsante verde (zoom) con Opzione giù

3

Basato su Applescript - il comando di attivazione rende l'applicazione "metà -attivo ", ho scritto il seguente script di Applescript che mi permetteva di fare clic sul pulsante verde (zoom) nell'angolo in alto a sinistra di una finestra. Voglio applicare lo script a MacVim e altri che hanno il pulsante verde come "AXFullScreenButton". Ma l'esecuzione dello script rende la finestra su FULL SCREEN anziché su una finestra "ingrandita". Qualcuno può dire cosa c'è che non va?

tell application "System Events"
    key down option
    click (first button whose subrole is "AXFullScreenButton") of ¬ 
            (first window whose subrole is "AXStandardWindow") of ¬
            (first process whose frontmost is true)
    key up option
    set frontApp to (name of first application process whose ¬
            frontmost is true) as string
end tell
tell application frontApp to activate
    
posta T_T 05.03.2015 - 01:57
fonte

2 risposte

5

Puoi utilizzare una delle azioni di " AXFullScreenButton ":

  • " AXZoomWindow " azione da ottimizzare.
  • " AXPress " azione a schermo intero.

Utilizza il comando perform action , in questo modo.

tell application "System Events"
    perform action "AXZoomWindow" of (first button whose subrole is "AXFullScreenButton") of (first window whose subrole is "AXStandardWindow") of (first process whose frontmost is true)
end tell
    
risposta data 18.12.2015 - 23:45
fonte
0

Nel caso in cui usi un'app che NON reagisce a AXZoomWindow in un modo standard (come BBEdit) o ti capita di avere diverse impostazioni "preferite" per windows di app diverse (Mi piace Mail meno largo di Safari), ho scritto uno script che massimizza la finestra in primo piano di un'applicazione e ripristina le preferenze individuali.

Ecco alcuni problemi che ho incontrato e ho dovuto risolvere:
1.) "frontmost process" quando chiamato in uno script è "System Events" o "ScriptEditor" - set visibile a 0.
(NON si applica alle scorciatoie di Karabiner.)
2.) max. i valori del desktop sono definiti da size of scroll area 1 of process "Finder"
3.) L'altezza della barra dei menu sul mio sistema è 22px, quindi ho dovuto sottrarli in vari posti 4.) Ho combinato valori per posizione e amp; dimensione in una variabile reciproca per app - Sostituisci con la tua! 5.) Per poter indirizzare solo le app che vuoi "Zoomare" c'è "maxMin" per escludere le altre -
  aggiungi o elimina app a tuo piacimento 6.) Ovviamente dovrai registrare lo script / app con "Accesso assistito" (Sicurezza / Preferenze di sistema)
7.) O scorciatoia questo script come un "Servizio" (tramite Automator) in Sys-Prefs, Tastiera, scorciatoie, ...
8.) ... o usa l'ingegnoso key-remapper Karabiner Elements con una semplice "Modifica complessa":

"from": {"key_code": "m", "modifiers": {"mandatory": ["left_option"]} },
  "to": [{"shell_command": "osascript ~/.config/myScpts/maxMin_zoom.app"}], **
"type": "basic"  
≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈
(** path and name: your choice)    

che offre una scorciatoia adeguata sul posto - Ho optato per "Opt-M" poiché la maggior parte delle combo "Z" sono in uso.
Ecco lo script (DELETE lines 2 & 3 per Karabiner):

tell application "System Events"
    set visible of first process whose frontmost is 1 to 0
    delay 0.2
    set dTopSize to size of scroll area 1 of process "Finder" as list
    set maxPos to {0, 22}
    set realApp to first process whose frontmost is true
    set froAppName to (name of first process whose frontmost is true) as string
    set maxMin to true

    if (froAppName is "BBEdit") then
        set appBounds to {0, 22, 888, (item 2 of dTopSize) - 22}
    else if (froAppName is "Safari") then
        set appBounds to {38, 22, 1372, (item 2 of dTopSize) - 22}
    else if (froAppName is "Mail") then
        set appBounds to {53, 22, 1314, (item 2 of dTopSize) - 22}
    else
        set maxMin to false
    end if
    if maxMin then
        if item 1 of (size of window 1 of realApp as list) is not equal to ¬
        item 1 of dTopSize then
            set position of window 1 of realApp to maxPos
            set size of window 1 of realApp to {(item 1 of dTopSize), ¬
            (item 2 of dTopSize) - 22}
        else
            set size of window 1 of realApp to {item 3 of appBounds, ¬
            item 4 of appBounds}
            set position of window 1 of realApp to {item 1 of appBounds, ¬
            item 2 of appBounds}
        end if
    end if
    tell realApp to set frontmost to true
end tell
    
risposta data 26.11.2018 - 14:39
fonte

Leggi altre domande sui tag