Come si attiva uno script quando è collegato un secondo monitor

0

Sono su macOS El Captain (l'aggiornamento a High Sierra a breve) e sto cercando uno strumento che possa attivare un AppleScript o script di shell ogni volta che cambia il numero di monitor / display collegati al sistema.

Ho provato ControlPlane , ma non ho potuto far funzionare il trigger su display-display-change . Due domande:

1) Qualcuno sa che l'attivazione del display in ControlPlane funziona sicuramente su macOS El Captain e superiori? (Indicando che sto facendo qualcosa di sbagliato.)

o

2) C'è un altro strumento che può agire su un cambio di numeri di display ogni volta che un monitor / display è (dis-) connesso?

PS : sono consapevole che ci sono altre domande nella rete StackExchange relative a questo argomento (come Come posso eseguire uno script ogni volta che collego un monitor esterno? o Reset Mac OS X Windows Position dopo aver deselezionato il monitor esterno ), ma le risposte non sembrano applicabili a El Captain / High Sierra.

    
posta halloleo 13.08.2018 - 06:42
fonte

1 risposta

0

Potrebbe esserci un modo più efficiente ma se si salva questo codice AppleScript in Script Editor, come applicazione, dopo averlo personalizzato in base alle proprie esigenze ... l'esecuzione di questa applicazione, come attualmente configurato, continuerà a essere eseguita e controllata ogni cinque secondi , fino a quando non viene rilevato un altro monitor.

property displayCount : 1

repeat until displayCount is greater than 1
    tell application "Image Events"
        set theDisplays to count of displays
    end tell
    set displayCount to theDisplays
    delay 5 -- How Often To Check How Many Connected Monitors.. In Seconds
end repeat

-- The Following Line Will Execute When An Additional Display Is Connected
-- Replace The Following Code With Whatever Actions You Choose

activate
display dialog "New Display Connected" buttons {"Cancel", "OK"} default button "OK"

-- OR use the "run script" command as in the sample below

--set theScript to (path to desktop as text) & "whatever.scpt"
--set runScript to run script alias theScript

return

Questa opzione successiva rileva se un monitor è connesso o disconnesso e continuerà a funzionare

property displayCount : missing value
property tempDisplayCount : missing value

countDisplays()

repeat
    repeat until displayCount is greater than 1
        countDisplays()
    end repeat
    displayConnected()
    countDisplays()
    copy displayCount to tempDisplayCount
    repeat until tempDisplayCount is not equal to displayCount
        countDisplays()
    end repeat
    copy displayCount to tempDisplayCount
    if tempDisplayCount is greater than displayCount then
        displayConnected()
    else if tempDisplayCount is equal to displayCount then
        displayDisconnected()
    end if
end repeat

on displayConnected()
    -- The Following Lines Will Execute When An Additional Display Is Connected
    -- Replace The Following Code With Whatever Actions You Choose
    -- OR use the "run script" command as in the sample below
    -- set theScript to (path to desktop as text) & "whatever.scpt"
    -- set runScript to run script alias theScript
    activate
    set newDisplayConnected to button returned of (display dialog "New Display Connected" buttons {"Stop Monitoring", "Continue Monitoring"} default button "Continue Monitoring")
    if newDisplayConnected is "Stop Monitoring" then
        quit me
    end if
end displayConnected

on displayDisconnected()
    -- The Following Lines Will Execute When A Display Is Disconnected
    -- Replace The Following Code With Whatever Actions You Choose
    -- OR use the "run script" command as in the sample below
    -- set theScript to (path to desktop as text) & "whatever.scpt"
    -- set runScript to run script alias theScript
    activate
    set newDisplayDisconnected to button returned of (display dialog "A Display Was Disconnected" buttons {"Stop Monitoring", "Continue Monitoring"} default button "Continue Monitoring")
    if newDisplayDisconnected is "Stop Monitoring" then
        quit me
    end if
end displayDisconnected

on countDisplays()
    tell application "Image Events"
        set theDisplays to count of displays
    end tell
    set displayCount to theDisplays
    delay 5 -- How Often To Check How Many Connected Monitors.. In Seconds
end countDisplays

    
risposta data 14.08.2018 - 17:46
fonte

Leggi altre domande sui tag