En cours d'exécution: Xubuntu 14.04 32bit.
J'ai lu plusieurs documents obsolètes, ne fonctionnant pas, fonctionnant différemment pour lesquels je veux des réponses ici et ailleurs. Un script m'a amené à éteindre mon ordinateur portable au démarrage après l'avoir configuré pour un démarrage automatique.
J'ai aussi essayé d'installer complexshutdown malgré le fait que cet outil soit mort en 2011 et a un bogue sur Lauchpad qui dit que son option exacte n'est pas disponible. Ce n'est même pas installé le 14.04 ici.
Donc, si je peux poser cette question à nouveau sans être puni de "duplicate of" ...
Je suis à la recherche d'un script simple et direct qui est actuellement testé et fonctionne et que je peux mettre dans le démarrage automatique qui ne fait que vérifier l'activité (souris/clavier) et éteindre mon ordinateur portable s'il n'y en avait pas pendant 2 heures.
Merci.
C'est probablement la meilleure solution. Pas besoin d'économiseur d'écran peaufiner et en cours d'exécution.
Installer Sudo apt-get install xprintidle
Mettez ce script en démarrage automatique:
#!/bin/bash
idletime=$((1000*60*60*2)) # 2 hours in milliseconds
while true; do
idle=`xprintidle`
echo $idle
if (( $idle > $idletime )); then
#Sudo shutdown -P now
dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
fi
sleep 1
done
Les commentaires et la réponse de @Jobin m'ont amené à me questionner à nouveau et j'ai trouvé un script inachevé avec xprinttime
mais sans aucune boucle dans le script. Probablement pas fini ceci parce que ma connaissance linux/bash n'était pas bonne à l'époque. J'ai également mis le script que j'avais dans rc.local ou quelque chose du genre qui a déclenché l'arrêt du système au démarrage. Merci à @Jobin de nous avoir rappelé comment ajouter des applications de démarrage dans XFCE. Je le savais déjà, mais ... et le crédit pour la chose dbus, je ne l'ai jamais vu, mieux vaut alors arrêter, car il ne nécessite pas de racine.
Après avoir examiné plusieurs options pour la fermeture après un certain temps d'inactivité, il semble que xautolock
soit le moyen le plus simple. Tous les crédits à Sparhawk pour avoir parlé de xautolock
.
Merci à Sneetsher pour avoir signalé xscreensaver. À l’aide de xscreensaver, je pourrais spécifier manuellement ce qu’il faut faire après un certain temps d’inactivité. Pour utiliser xscreensaver, vous devez l'installer en utilisant:
Sudo apt-get install xscreensaver
ou installez-le à partir du centre de logiciel, puis exécutez-le une fois à l'aide de:
xscreensaver-demo
ou tapez "xscreensaver" sur le tableau de bord et ouvrez "Screensaver".
Cela créera un fichier ~/.xscreensaver
. Ouvrez-le et recherchez la ligne:
programs: \
et ajouter:
dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true \n\
juste en dessous de la
programs: \
ligne.
Vous pouvez spécifier le délai après lequel l'arrêt doit être déclenché en modifiant la ligne commençant par timout
. Le modifier pour
timeout: 2:00:00
arrêter après deux heures.
Regardez mon fichier .xscreensaver
ici .
Cela devrait mettre votre ordinateur hors tension après deux heures d'inactivité ou à l'heure que vous spécifiez dans le script.
Remarques:
Jetez un oeil à cette question pour voir comment ajouter xscreensaver au démarrage.
J'ai essayé d'utiliser un arrêt complexe, mais le bogue ici semble m'affecter et ne peut donc pas se produire. Sinon, une application graphique aurait été disponible pour cela.
Ceci pourrait être réalisé en utilisant xautolock, cependant, comme redanimalwar souligné, un délai d’attente supérieur à 1 heure n’est pas possible sans modification de son code source et recompilation.
Ceci est mon script simplifié, cela nécessite que vous installiez le paquet "xprintidle" et que vous modifiiez la commande shutdown afin qu'il soit possible de l'exécuter sans Sudo/mot de passe.
Sudo chmod u+s /sbin/shutdown
Sudo apt-get install xprintidle
Scénario
#!/bin/bash
idletime=$((15*60*1000)) # 15 min in milliseconds
idle=0
while [ $idle -lt $idletime ];do
idle=`xprintidle`
sleep 1
done
shutdown -P now
@Redanimalwar modifié script pour avertir l'utilisateur et donner une chance d'annuler l'arrêt. Pour les tests, il utilise 3 secondes et un message simple. S'il vous plaît ajuster à vos goûts. HTH.
#!/bin/bash
#https://askubuntu.com/questions/442795/
#http://ubuntuforums.org/showthread.php?t=2172828
function showProgress(){
#
# Force Zenity Status message box to always be on top.
sleep 1 && wmctrl -r "Progress Status" -b add,above &
(
echo "# Shutting Down in 5" ; sleep 2
echo "25"
echo "# Shutting Down in 4" ; sleep 2
echo "50"
echo "# Shutting Down in 3" ; sleep 2
echo "75"
echo "# Shutting Down in 2" ; sleep 2
echo "99"
echo "# Shutting Down in 1" ; sleep 2
echo "# Shutting Down now" ; sleep 2
echo "100"
) |
zenity --progress \
--title="Progress Status" \
--text="First Task." \
--percentage=0 \
--auto-close
return $?
}
#idletime=$((1000*60*60*2)) # 2 hours in milliseconds
idletime=$((1000*3)) # test, 3seconds
while true; do
idle=`xprintidle`
echo $idle
if (( $idle > $idletime )); then
showProgress && \
#Sudo shutdown -P now
#dbus-send --system --print-reply --dest=org.freedesktop.login1 /org/freedesktop/login1 "org.freedesktop.login1.Manager.PowerOff" boolean:true
#echo for tests. use command above to actually shutdown
echo shuting down the system. Just kidding ^_^ \
&& exit 0
fi
sleep 1
done