Cerrar todos los programas después de 1 minuto sin interacción del usuario

0

Trabajo en una tienda que vende computadoras Apple.

Estoy intentando encontrar una forma de cerrar todos los programas abiertos después de unos minutos. Es debido a nuestra cuenta de demostración de la tienda para los clientes. Después de abrir todas las ventanas, es bastante complicado y quiero obtener una experiencia de usuario limpia.

Todo lo que necesito es cerrar todas las ventanas. Debería funcionar como el comando:

killall -u admin

PERO sin permiso de administrador

Y después de 1 min,

SIN interacción del usuario.

Tal vez, hay una manera de: cerrar todas las ventanas y programas, sin mostrar algo como "¿realmente quieres"? cierre sesión en la cuenta de demostración y vuelva a cargar.

Encontré esto, después de buscar un tiempo, pero no sé si eso es lo que estaba buscando y cómo hacerlo funcionar:

  

Cierre de sesión de Apple Script:

     

en ejecución     Dile a la aplicación "Eventos del sistema" que se desconecte   end run

     

Puedes envolver esto en un alias de bash usando el comando osascript:   alias maclogout="osascript -e 'le dice a la aplicación \" Eventos del sistema \ "que cierre la sesión'"

     

Es lo mismo que hacer clic en " > Cerrar sesión [nombre de usuario] ...", y finalizará la sesión después de una espera de 2 minutos

     

Esto se combina fácilmente con el comando de suspensión:   alias delayedlogout="sleep 3600; maclogout"

     

..o podría combinarse en un solo alias:

     

alias delayedlogout="sleep 3600; osascript -e 'le dice a la aplicación \" Eventos del sistema \ "que cierre la sesión'"

¿Podría alguien dar algún consejo? Gracias!

    
pregunta Lars 19.09.2015 - 09:18

2 respuestas

1

Aquí tienes. Un script simple que puede configurar para ejecutarse automáticamente en segundo plano usando launchd u otros medios de su agrado ...

#
# From: http://www.dssw.co.uk/blog/2015-01-21-inactivity-and-idle-time
# Returns seconds system is idle, ie no user input...
#
set cmd to "echo $(('ioreg -w 0 -c IOHIDSystem | sed -e '/HIDIdleTime/ !{ d' -e 't' -e '}' -e 's/.* = //g' -e 'q'' / 1000000000))"

#
# How many seconds user can be idle before we log them out
#
set maxIdleAllowed to 60

#
# How frequently we check the idle time, in seconds...
#
set checkInterval to 30

#
# We loop forever...
#
repeat
    set secsIdle to 0

    try
        set answer to (do shell script cmd)
        set secsIdle to (answer as number)
    on error
        # May want to do something fancy here...
        exit repeat
    end try

    log secsIdle

    if secsIdle > maxIdleAllowed then
        logUserOut()
    end if

    delay checkInterval
end repeat

on logUserOut()

# Exclude Finder at minimum because bad things happen, so I am told...
set excludedApps to {"Finder"}

tell application "System Events"
    #set oAppList to get id of every application process whose background only is false
    set {processList, idList, pidList, bidList} to the {name, id, unix id, bundle identifier} of (every application process whose background only is false)
end tell

set i to 0
repeat with p in processList
    set i to i + 1

    log "ID: " & item i of idList
    log "PID:" & item i of pidList
    log "Name: " & p
    log "Bundle: " & item i of bidList

    if p is not in excludedApps then
        try
            log "Quit with out saving app with id: " & item i of idList

            # timeout to prevent blocking by certain apps...
            with timeout of 1 second

                # Use bundle id for some odd apps... soffice i'm talking to you!?!
                tell application id (item i of bidList) to quit saving no

            end timeout

        on error
            try
                log "Giving up, killing pid: " & (item i of pidList)
                do shell script "kill " & (item i of pidList)
            end try
        end try
    end if

    delay 1

    log "" & return
end repeat

# Finally, with all apps closed, kill our session...
tell application "loginwindow" to «event aevtrlgo»

end logUserOut

EDITAR: Su pregunta ya ha sido respondida realmente, es solo que su acción, después del tiempo de inactividad, es diferente. Echa un vistazo aquí a,

¿Cómo puedo iniciar una aplicación automáticamente cuando la Mac está inactiva?

EDIT2: Ahí tienes. Se agregó una rutina para cerrar las aplicaciones de forma agradable si es posible, y si no, elimínelas y finalice la sesión.

    
respondido por el Vic 19.09.2015 - 21:30
0

Creo que querrá mantener el guión de Vic si esto funciona o no porque ofrece algunas opciones que esta sugerencia no ofrece, pero si tiene una versión reciente del sistema, intente la configuración accesible desde el prefañado de Seguridad (haga clic en Bloquear) > Avanzado (botón en la parte inferior derecha) > Cerrar sesión después de _ minutos de inactividad. Creo que 5 puede ser el número más bajo que puedas mantener allí.

    
respondido por el Trellis 07.08.2018 - 03:59

Lea otras preguntas en las etiquetas