Cambia la risoluzione LG UltraFine tramite AppleScript

2

Mi piacerebbe avere un AppleScript che cambi tra "Predefinito per la visualizzazione" in Preferenze di Sistema e "Ridimensionato" "Testo più grande".

Lo script dovrebbe rilevare lo stato corrente del display e passare all'altro stato (ad esempio, se in Predefinito per la visualizzazione, passare a testo più grande ridimensionato).

Sono andato così lontano con il mio script (che ho ricevuto da questo sito e questo stackexchange page ), ma sembra che non riesco a fare virtualmente "clic" a sinistra della maggior parte delle icone tra quelle disponibili:

tell application "System Preferences"
    activate
    set the current pane to pane id "com.apple.preference.displays"
    reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
end tell

local indexToUse

-- Now lets make the necessary changes
tell application "System Events"
    tell tab group 1 of window "LG UltraFine" of application process "System Preferences" of application "System Events"
        tell radio group 1

            if (value of radio button "Scaled") = 0 then
                -- Click the "Scaled" radio button
                click radio button "Scaled"

                tell radio group 2
                    click radio button 1 of radio group 2
                end tell

            else
                click radio button "Default for display"
            end if
        end tell

    end tell
end tell

-- Quit "System Preferences"
quit application "System Preferences"

Quando si esegue lo script, se le Preferenze di sistema sono in "Default for display", ottengo il seguente errore di script: System Events got an error: Can’t get radio group 2 of radio group 1 of tab group 1 of window "LG UltraFine" of application process "System Preferences". Invalid index.

Vorrei poter fare clic sul pulsante cerchiato in rosso nello screenshot allegato.

    
posta pdeli 08.08.2017 - 13:45
fonte

2 risposte

1

Grazie a @ wch1zpink e al suggerimento di utilizzare l'opzione Watch Me Do in Automator, ecco uno script che sembra finalmente fare il lavoro:

-- Portions of the script found on https://gist.github.com/mvaneijgen/2f48f859ca07d2e75b3a
-- Launch "System Preferences", open the "Displays" options and change to the "Display" tab
(* If error "System Events got an error: Script Editor is not allowed assistive access" appears, then System Preferences → Security & Privacy → Privacy → add Script Editor to "Allow the app to control your computer"*)
(* as per: https://stackoverflow.com/questions/31019916/is-not-allowed-for-assistive-access-error-when-running-applescript-from-java) *)

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane id "com.apple.preference.displays"
end tell

-- Now lets make the necessary changes
tell application "System Events"
    tell tab group 1 of window "LG UltraFine" of application process "System Preferences" of application "System Events"
        tell radio group 1

            if (value of radio button "Scaled") = 0 then -- Check if Scaled radio button is not selected
                click radio button "Scaled" -- Click the "Scaled" radio button

                -- and click on the icon above "Larger Text" (which is in fact a radio button)
                tell application "System Events"
                    tell tab group 1 of window "LG UltraFine" of application process "System Preferences" of application "System Events"
                        tell radio group 1 of group 2
                            click radio button 1
                        end tell
                    end tell
                end tell

                else -- Scaled radio button is already selected
                    click radio button "Default for display" -- therefore click on "Default for display"
            end if
        end tell
    end tell
end tell
    
risposta data 15.08.2017 - 00:26
fonte
0

Funziona su MacBook Pro con l'ultima versione di Sierra. Ho appena sostituito "Built in Retina display" con il tuo. Penso che dovrebbe funzionare per te.

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "LG UltraFine"
    click radio button "Scaled" of radio group 1 of tab group 1
    click radio button 1 of radio group 1 of group 1 of tab group 1
    delay 0.1 -- adjust this value as needed if you get a message that you need to click "ok".
    click button "OK" of sheet 1 -- on my MBP, choosing the lowest resolution displays a message that I need to click "ok". Just delete this command if you don't need it
end tell
quit application "System Preferences"

Questo è il messaggio che mostra che ho aggiunto il comando "click button" per

Questodovrebberiportarelarisoluzionedelloschermoaivaloripredefiniti

tellapplication"System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "LG UltraFine"
    click radio button "Scaled" of radio group 1 of tab group 1
    click radio button 3 of radio group 1 of group 1 of tab group 1
end tell
quit application "System Preferences"

Ed ecco la versione di commutazione

tell application "System Preferences"
    reveal anchor "displaysDisplayTab" of pane "com.apple.preference.displays"
end tell
tell application "System Events" to tell process "System Preferences" to tell window "LG UltraFine"
    click radio button "Display" of tab group 1
    click radio button "Scaled" of radio group 1 of tab group 1
    tell radio group 1 of group 1 of tab group 1
        set getResolution to get value of radio button 1
    end tell
    if getResolution then
        click radio button 3 of radio group 1 of group 1 of tab group 1
    else
        click radio button 1 of radio group 1 of group 1 of tab group 1
        delay 0.1 -- adjust this value as needed if you get a message that you need to click "ok".
        try
            click button "OK" of sheet 1 -- on my MBP, choosing the lowest resolution displays a message that I need to click "ok". Just delete this command if you don't need it
        end try
    end if
end tell
quit application "System Preferences"

Puoi anche "decodificarlo" (per mancanza di un termine migliore) usando Automator e "guardami fare". In Automator, avviare A "Watch me do recording" e al termine della registrazione, selezionare tutti i passaggi dell'azione registrata e la voce di menu Modifica / Copia. Quindi passa a ScriptEditor e crea un nuovo documento e "Incolla" ciò che hai copiato da Automator nel nuovo documento.

Puoi compilare lo script ed eseguirlo se lo desideri. Ancora più importante, tuttavia, ti mostrerà i nomi esatti degli elementi dell'interfaccia utente (scheda 1, area di scorrimento, ecc.) Che puoi utilizzare per sostituire il codice che ho postato in precedenza.

    
risposta data 09.08.2017 - 05:43
fonte

Leggi altre domande sui tag