0 votes

Fermer tous les programmes après 1 minute sans intervention de l'utilisateur

Je travaille dans un magasin qui vend des ordinateurs Apple.

J'essaie de trouver un moyen de fermer tous les programmes ouverts après quelques minutes. C'est à cause de notre compte de démonstration pour les clients. Après avoir ouvert toutes les fenêtres, c'est assez désordonné et je veux obtenir une expérience utilisateur propre.

Il me suffirait de fermer toutes les fenêtres. Cela devrait fonctionner comme la commande :

killall -u admin

MAIS sans l'autorisation de l'administrateur

ET après 1 min,

SANS interaction avec l'utilisateur.

Il y a peut-être un moyen de le faire : fermer toutes les fenêtres et tous les programmes, sans afficher quelque chose comme "voulez-vous vraiment le faire", se déconnecter du compte de démonstration et recharger.

J'ai trouvé ceci, après avoir cherché un certain temps, mais je ne sais pas si c'est ce que je cherchais et comment le faire fonctionner :


Apple script Déconnexion :

o demander à l'application "System Events" de se déconnecter terminer l'exécution


Vous pouvez l'intégrer dans un alias bash à l'aide de la commande osascript : alias maclogout="osascript -e 'tell application \"System Events\" to log out'" (dire à l'application "System Events" de se déconnecter)

C'est la même chose que de cliquer sur " > Déconnexion [nom d'utilisateur]...", et la déconnexion se fera après 2 minutes d'attente.

Il est facile à combiner avec le sommeil alias delayedlogout="sleep 3600 ; maclogout"

ou pourraient être combinés en un seul alias :

alias delayedlogout="sleep 3600 ; osascript -e 'tell application \"System Events\" to log out'" (dire à l'application "System Events" de se déconnecter)

Quelqu'un pourrait-il nous donner des conseils ? Merci de votre compréhension.

1voto

Vic Points 1820

Voilà. Un simple script que vous pouvez configurer pour qu'il s'exécute automatiquement en arrière-plan en utilisant launchd ou d'autres moyens de votre choix...

#
# 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 réponse à votre question a déjà été donnée, c'est juste que votre action, après le temps d'inactivité, est différente. Jetez un coup d'œil ici,

Comment lancer automatiquement une application lorsque le Mac est inactif ?

EDIT2 : Voilà. Ajout d'une routine pour fermer les applications gentiment si possible, et si ce n'est pas le cas, les tuer et se déconnecter.

0voto

Trellis Points 495

Je pense que vous voudrez conserver le script de Vic, que cela fonctionne ou non, car il offre certaines options que cette suggestion ne propose pas, mais si vous avez une version récente du système, essayez le paramètre accessible à partir du pré-fenêtre Sécurité (cliquez sur le cadenas) > Avancé (bouton en bas à droite) > Déconnexion après _ minutes d'inactivité. Je pense que 5 est le chiffre le plus bas que vous puissiez conserver.

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X