2 votos

Cómo desencadenar una secuencia de comandos cuando se conecta un segundo monitor

Estoy en macOS El Capitán (de actualizar a la Alta Sierra pronto) y estoy buscando una herramienta que puede desencadenar un AppleScript o secuencia de comandos de shell cada vez que cuando el número de monitores/pantallas conectadas a los cambios en el sistema.

He intentado ControlPlane, pero no pudo obtener el gatillo en adjuntas-pantalla-cambiar de trabajo. Dos preguntas:

1) ¿alguien sabe que mostrar lo que provocó en ControlPlane definitivamente las obras en macOS El Capitán y mayor? (Lo que indica que estoy haciendo algo mal.)

O:

2) hay otra herramienta que puede actuar en un cambio de los números de la muestra cada vez que un monitor o pantalla es el (des-)conectado?


PS: estoy consciente de que hay otras preguntas en el StackExchange red relacionada con este tema (como ¿Cómo puedo ejecutar una secuencia de comandos cada vez que le conecto un monitor externo? o Restablecimiento de Mac OS X, Windows Posición después de-conexión de monitor externo), pero las respuestas no parecen aplicarse a El Capitán/Sierra Alta .

2voto

wch1zpink Puntos 11

Puede haber una manera más eficiente, pero si guarda este siguiente AppleScript código en el Editor de secuencias de Comandos, como una aplicación, después de personalizar a sus necesidades... ejecutar esta aplicación, tal y como está configurado actualmente, seguirá funcionando y verificación de cada cinco segundos, hasta que un monitor adicional es detectado.

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

Este próximo opción de detectar si el monitor está conectado o desconectado y seguirá funcionando

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

enter image description here enter image description here

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X