Une application complète serait probablement un peu exagérée; un script de fond minuscule fait le travail.
Le script ci-dessous va, comme une boucle, faire exactement comme vous le mentionnez: il garde l'écran "normal" pour un temps arbitraire (en minutes, vous pouvez utiliser des flottants pour définir les minutes) et noircir l'écran (s) ) ou le retourne à votre choix :), pour le "breaktime".
ou:
Le script
#!/usr/bin/env python3
import subprocess
import sys
import time
awaketime = int(float(sys.argv[1])*60)
sleeptime = int(float(sys.argv[2])*60)
def take_a_break():
get = subprocess.check_output(["xrandr"]).decode("utf-8").split()
screens = [get[i-1] for i in range(len(get)) if get[i] == "connected"]
for scr in screens:
# uncomment either one of the commands below [1]
# darken the screen, or...
subprocess.call(["xrandr", "--output", scr, "--brightness", "0"])
# turn it upside down :)
# subprocess.call(["xrandr", "--output", scr, "--rotate", "inverted"])
time.sleep(sleeptime)
for scr in screens:
# back to "normal"
subprocess.call(["xrandr", "--output", scr, "--brightness", "1"])
subprocess.call(["xrandr", "--output", scr, "--rotate", "normal"])
while True:
time.sleep(awaketime)
take_a_break()
Comment utiliser
- Copiez le script dans un fichier vide, enregistrez-le sous le nom
takeabreak.py
- À votre choix, supprimez le commentaire de la ligne 15 ou 17 (vous pouvez ignorer cette étape si vous souhaitez l’assombrir), comme indiqué dans le script.
-
Testez le script depuis un terminal par la commande:
python3 /path/to/takeabreak.py <uptime> <breaktime>
par exemple:
python3 /path/to/takeabreak.py 25 5
prendre une pause de 5 minutes après avoir travaillé toutes les 25 minutes
-
S'il fait ce que vous voulez, ajoutez-le aux applications de démarrage: Dash & gt; Applications de démarrage & gt; Ajoutez la commande:
/bin/bash -c "sleep 15 && python3 /path/to/takeabreak.py 25 5"
EDIT
Bien sûr, vous pouvez "habiller" le script avec tout ce que vous pouvez imaginer. La première chose qui me vient à l’esprit est un petit message, vous avertissant que la pause est proche…
Le code
#!/usr/bin/env python3
import subprocess
import sys
import time
awaketime = int(float(sys.argv[1])*60)
sleeptime = int(float(sys.argv[2])*60)
message = "Break in 15 seconds"
def take_a_break():
get = subprocess.check_output(["xrandr"]).decode("utf-8").split()
screens = [get[i-1] for i in range(len(get)) if get[i] == "connected"]
for scr in screens:
# uncomment either one of the commands below [1]
# darken the screen, or...
subprocess.call(["xrandr", "--output", scr, "--brightness", "0"])
# turn it upside down :)
# subprocess.call(["xrandr", "--output", scr, "--rotate", "inverted"])
time.sleep(sleeptime)
for scr in screens:
# back to "normal"
subprocess.call(["xrandr", "--output", scr, "--brightness", "1"])
subprocess.call(["xrandr", "--output", scr, "--rotate", "normal"])
while True:
time.sleep(awaketime-15)
subprocess.Popen(["notify-send", message])
time.sleep(15)
take_a_break()
EDIT 2
Éléments graphiques de base pour Unity
Comme indiqué dans les commentaires, sous une version (configurée) avec une fonctionnalité graphique de base, pour basculer le script et modifier les paramètres de disponibilité / pause. Si vous suivez les instructions, la configuration est assez simple:)
Ingrédients:
-
Deux scripts (plus bas):
-
takeabrake_run
qui est le script actuel, remplaçant le ou les scripts ci-dessus,
et
-
takeabreak_gui
qui est, comme prévu, le script permettant de gérer les paramètres (heure) et d'ajuster le script.
-
un fichier .desktop
:
[Desktop Entry]
Type=Application
Name=Take a Break
Exec=takeabreak_gui toggle
Icon=/path/to/takeabreak.png
Actions=Toggle script;Change time settings;
[Desktop Action Change time settings]
Name=Change time settings
Exec=takeabreak_gui timeset
OnlyShowIn=Unity;
[Desktop Action Toggle script]
Name=Toggle script
Exec=takeabreak_gui toggle
OnlyShowIn=Unity;
-
et une icône:
(clic droit & gt; enregistrer l'image sous takeabreak.png)
Comment configurer
- Créez, s’il n’existe pas encore, le répertoire
~/bin
- Déconnectez-vous ou entrez
source ~/.profile
pour "activer" la présence de ~/bin
in $PATH
-
Copiez les deux scripts ci-dessous dans deux fichiers vides, nommez-les (exactement)
takeabreak_gui
et
takeabreak_run
(pas d’extensions!) et les enregistrer dans ~/bin
- Rendez les deux scripts exécutables (!)
- Copiez l'icône (
right-click > save image as
) sur votre ordinateur. Nommez-le (exactement) comme takeabreak.png
-
Copiez le fichier .desktop
dans un fichier vide. Modifier la ligne:
Icon=/path/to/takeabreak.png
et remplacez le chemin d'accès à l'icône par le chemin réel.
C'est ça!
Les scripts:
-
takeabreak_run
#!/usr/bin/env python3
import subprocess
import sys
import time
awaketime = int(float(sys.argv[1])*60)
sleeptime = int(float(sys.argv[2])*60)
message = "Break in 15 seconds"
def take_a_break():
get = subprocess.check_output(["xrandr"]).decode("utf-8").split()
screens = [get[i-1] for i in range(len(get)) if get[i] == "connected"]
for scr in screens:
# uncomment either one of the commands below [1]
# darken the screen, or...
subprocess.call(["xrandr", "--output", scr, "--brightness", "0"])
# turn it upside down :)
# subprocess.call(["xrandr", "--output", scr, "--rotate", "inverted"]); time.sleep(0.2)
time.sleep(sleeptime)
for scr in screens:
# back to "normal"
subprocess.call(["xrandr", "--output", scr, "--brightness", "1"]); time.sleep(0.2)
subprocess.call(["xrandr", "--output", scr, "--rotate", "normal"]); time.sleep(0.2)
while True:
time.sleep(awaketime-15)
subprocess.Popen(["notify-send", message])
time.sleep(15)
take_a_break()
-
takeabreak_gui
#!/usr/bin/env python3
import os
import subprocess
import sys
# define the settings file's location
setting = os.environ["HOME"]+"/"+".time_setting"
# default values (if no settinghs were made)
default_up = "25"
default_break = "5"
arg = sys.argv[1]
def check_running():
# function to check if the script runs
try:
return subprocess.check_output(["pgrep", "-f", "takeabreak_run"]).decode("utf-8").strip()
except subprocess.CalledProcessError:
return False
def start(uptime, breaktime):
# function to start the script with arguments
print(uptime, breaktime)
subprocess.Popen(["takeabreak_run", uptime, breaktime])
def kill(pid):
# function to stop the script
subprocess.Popen(["kill", pid])
def message(msg):
# function to send a notification
subprocess.Popen(["notify-send", msg])
if arg == "toggle":
# the section below handles toggling the script
pid = check_running()
if pid != False:
kill(pid)
message("Take a break stopped...")
else:
try:
# if settings file exist: message, displaying set time
time_set = open(setting).read().strip().split()
uptime = time_set[0]; breaktime = time_set[1]
except FileNotFoundError:
# if no settings were made: use defaults
uptime = default_up; breaktime = default_break
message("Take a break started ("+uptime+"/"+breaktime+")")
start(uptime, breaktime)
if arg == "timeset":
# the section below handle creating the settings file and/or setting the time
command = 'zenity --entry --title="Edit time settings" --text="Enter uptime & breaktime:" --entry-text "'+\
default_up+' '+default_break+'"'
try:
t_set = subprocess.check_output(["/bin/bash", "-c", command]).decode("utf-8").split()
try:
if len([int(n) for n in t_set]) != 2:
msg = 'zenity --warning --text="Please enter both (and only) up- and breaktime."'
else:
msg = 'zenity --info --title="New setings" --text="Timesettings succsfully changed."'
open(setting, "wt").write((" ").join(t_set))
pid = check_running()
# if script runs, restart with new values
if pid != False:
kill(pid)
start(t_set[0], t_set[1])
message("Take a break restarted "+("/").join(t_set))
except ValueError:
msg = 'zenity --warning --text="Please only enter integers."'
subprocess.Popen(["/bin/bash", "-c", msg])
except subprocess.CalledProcessError:
pass
Modification des paramètres d’heure
Le "GUI" de base devrait fonctionner sans trop d'explications. Pour modifier les paramètres de l'heure, ajoutez le lanceur au lanceur Unity (faites glisser le fichier .desktop
sur le lanceur Unity ou verrouillez le lanceur), cliquez avec le bouton droit sur le lanceur et choisissez "Modifier les paramètres de l'heure": / p>
Entrez ensuite le "temps de disponibilité" (minutes) et "pause" (minutes), séparés par un espace. Le script a des précautions intégrées pour une saisie incorrecte:)
Si les paramètres d'heure sont modifiés pendant l'exécution du script, il redémarre automatiquement avec les paramètres modifiés:
FINALEMENT
Pour le moment probablement la dernière édition: le projet est maintenant sur tableau de bord - avec beaucoup des changements, plus d'options, etc. etc.
sudo add-apt-repository ppa:vlijm/takeabreak
sudo apt-get update
sudo apt-get install takeabreak
N'hésitez pas à déposer des bogues, etc. ici , ou commentez ici .
Merci à orschiro pour la belle question et Rinzwind pour les encouragements!
secondes de pause restantes (en utilisant l'option de compte à rebours)