Tam bir uygulama muhtemelen büyük olasılıkla bir türden olacaktır; Küçük bir arka plan betiği işi yapıyor.
Aşağıdaki betik, bir döngü içinde, tam olarak bahsettiğiniz gibi yapacaktır: keyfi bir süre için "normal" ekranını tutar (dakikalar içinde, dakikaları kısmi olarak ayarlamak için yüzerleri kullanabilirsiniz) ve ya siyahları ekrandan çıkarır ) veya "mola zamanı" için, seçiminize :) baş aşağı döndürür.
veya:
Komut dosyası
#!/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()
Nasıl kullanılır?
- Komut dosyasını boş bir dosyaya kopyalayın,
takeabreak.py
olarak kaydedin
- Seçiminizde, komut satırında belirtildiği gibi 15 veya 17 numaralı satırları (ekranın karartılmasını istiyorsanız bu adımı atlayabilirsiniz) kaldırın.
-
Komut dosyası tarafından komut dosyasını bir uçbirimden sınayın:
python3 /path/to/takeabreak.py <uptime> <breaktime>
örneğin:
python3 /path/to/takeabreak.py 25 5
Her 25 dakikada bir çalıştıktan sonra 5 dakika ara verin
-
İstediğinizi yaparsa, onu başlangıç uygulamalarına ekleyin: Dash & gt; Başlangıç Uygulamaları & gt; Komutu ekle:
/bin/bash -c "sleep 15 && python3 /path/to/takeabreak.py 25 5"
DÜZENLEME
Elbette, senaryoyu hayal edebileceğiniz bir şeyle "giydirebilirsiniz". Aklıma ilk gelen küçük bir mesaj, molanın yakında olduğunu size bildiren ...
Kod
#!/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
Unity için Temel GUI öğeleri
Açıklamada ele alındığı gibi, betiğin üzerine geçiş yapmak ve çalışma zamanı / kesinti ayarlarını değiştirmek için temel GUI işlevselliği ile bir sürümün (kurulumun) altında. Talimatları izlerseniz, kurulum oldukça basittir:)
Malzemeler:
-
İki komut dosyası (aşağıda):
-
Yukarıdaki kod (lar) yerine geçen gerçek kod olan
takeabrake_run
,
ve
-
Beklendiği gibi (time-) ayarlarını yönetmek ve komut dosyasını açmak için betik olan
takeabreak_gui
.
-
.desktop
dosyası:
[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;
-
ve bir simge:
(takeabreak.png olarak resmi kaydet & gt; kaydet)
Nasıl ayarlanır?
- Oluşturma, henüz mevcut değilse, dizin
~/bin
-
source ~/.profile
içeriğinde ~/bin
varlığını "etkinleştirmek" için çıkış yapın veya çalıştırın veya $PATH
dosyasını çalıştırın.
-
Aşağıdaki komut dosyalarını aşağıdaki iki boş dosyaya kopyalayın, onları (tam olarak) adlandırın
takeabreak_gui
ve
takeabreak_run
(uzantı yok!) ve bunları ~/bin
dosyasına kaydedin
- Her iki komut dosyasını da çalıştırabilirsiniz (!)
- Simgeyi (
right-click > save image as
) bilgisayarınıza kopyalayın. Adını (tam olarak) takeabreak.png
olarak adlandırın
-
.desktop
dosyasını boş bir dosyaya kopyalayın. Satırı düzenle:
Icon=/path/to/takeabreak.png
ve simgenin yolunu gerçek yolla değiştirin.
İşte bu!
Komut dosyaları:
-
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
Zaman ayarlarını düzenleme
Temel "GUI" çok fazla açıklama yapmadan çalışmalıdır. Zaman ayarlarını düzenlemek için, başlatıcıyı Unity Launcher'a ekleyin (ya .desktop
dosyasını Unity Launcher üzerinden sürükleyin ya da Launcher'a bir mola verin), başlatıcıya sağ tıklayın ve "Zaman ayarlarını değiştir" seçeneğini seçin:
Ardından, bir boşlukla ayrılmış "çalışma zamanı" (dakika) ve "kesinti zamanı" (dakika) girin. Komut dosyası, yanlış giriş için yerleşik önlemlere sahiptir:)
Komut dosyası çalışırken zaman ayarları değiştirilirse, değiştirilen ayarlarla otomatik olarak yeniden başlatılır:
NİHAYET
Muhtemelen en son düzenleme için: proje şu anda lansmanı sitesinde çok değişiklik, daha fazla seçenek vb.
sudo add-apt-repository ppa:vlijm/takeabreak
sudo apt-get update
sudo apt-get install takeabreak
Hataları dosyalamaktan çekinmeyin. burada veya yorum yapın here .
Güzel soru için orschiro'ya ve teşvik için Rinzwind'e teşekkürler!
kalan saniye saniye (geri sayım seçeneği ile)