Chiude tutti i programmi dopo 1 minuto senza interazione dell'utente

0

Lavoro in un negozio, che vende computer Apple.

Sto cercando di trovare un modo per chiudere tutti i programmi aperti dopo alcuni minuti. È a causa del nostro Conto Demo Negozio per i clienti. Dopo aver aperto tutte le finestre, è abbastanza disordinato e voglio ottenere un'esperienza utente pulita.

Tutto ciò di cui ho bisogno è chiudere tutte le finestre. Dovrebbe funzionare come il comando:

killall -u admin

MA senza autorizzazione di amministratore

E dopo 1 minuto,

SENZA interazione dell'utente.

Forse, c'è un modo per: chiudi tutte le finestre e i programmi, senza mostrare qualcosa del tipo "vuoi davvero", disconnetti l'account demo e ricarica.

L'ho trovato, dopo aver cercato un po 'di tempo, ma non so se è quello che stavo cercando e come farlo funzionare:


Apple Script Log Out:

on run tell application "System Events" to log out end run


You can wrap this up in a bash alias using the osascript command: alias maclogout="osascript -e 'tell application \"System Events\" to log out'"

It is the same as clicking " > Log out [username]...", and will logout after a 2 minute wait

This is easily combined with the sleep command: alias delayedlogout="sleep 3600; maclogout"

..or could be combined into a single alias:

alias delayedlogout="sleep 3600; osascript -e 'tell application \"System Events\" to log out'"

Qualcuno potrebbe dare qualche consiglio? Grazie!

    
posta Lars 19.09.2015 - 09:18
fonte

2 risposte

1

Ecco qua. Un semplice script che puoi configurare per eseguire automaticamente in background usando launchd o altri mezzi di tuo gradimento ...

#
# 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

EDIT: la tua domanda ha già ricevuto una risposta, è solo che la tua azione, dopo il tempo di inattività, è diversa. Dai un'occhiata qui,

Come posso avviare automaticamente un'applicazione ogni volta che il Mac diventa inattivo?

EDIT2: Ecco qua. Aggiunta routine per chiudere correttamente le app se possibile, e in caso contrario, ucciderle e disconnettersi.

    
risposta data 19.09.2015 - 21:30
fonte
0

Penso che vorrete mantenere lo script di Vic indipendentemente dal fatto che funzioni o meno perché offre alcune opzioni che questo suggerimento non è possibile, ma se avete una versione recente del sistema, provate l'impostazione accessibile dal prefpane Security (click lock) > Avanzate (pulsante in basso a destra) > Disconnettersi dopo _ minuti di inattività. Penso che 5 possa essere il numero più basso che puoi tenere lì.

    
risposta data 07.08.2018 - 03:59
fonte

Leggi altre domande sui tag