1.Basic अलार्म घड़ी समारोह
सस्पेंड मोड में प्रवेश करना
इस समाधान के लिए, आपको नीचे स्क्रिप्ट चलाकर सस्पेंड मोड दर्ज करना होगा। यह कंप्यूटर को सस्पेंड मोड में ले जाता है और आपके द्वारा (स्क्रिप्ट में) परिभाषित एक (घड़ी-) समय पर जागता है। आपका गाना बजाना।
बेशक आप इसे उपयोग करने के लिए स्क्रिप्ट को मैन्युअल रूप से चला सकते हैं, लेकिन इसे एक कुंजी संयोजन के माध्यम से उपलब्ध कराना अधिक सुविधाजनक है, जिसमें सेट किया गया है System Settings > Keyboard > Shortcuts > Custom Shortcuts
।
सेट अप
एक खाली फ़ाइल में नीचे स्क्रिप्ट पेस्ट करें, जागने (घड़ी) का समय (1-24 घंटे, 1-60 मिनट में) सेट करें, अपने जागने के गीत के लिए पथ सेट करें, और इसे सहेजें wakeup.py
।
#!/usr/bin/env python3
import datetime
import subprocess
###############################################
# set wakeuptime and location of the mp3:
hour = 7
minutes = 15
command = "rhythmbox /path/to/wakeupsong.mp3"
###############################################
currtime = str(datetime.datetime.now().time()).split(":")[:2]
minutes_set = hour*60 + minutes
minutes_curr = int(currtime[0])*60 + int(currtime[1])
if minutes_curr < minutes_set:
minutes_togo = minutes_set - minutes_curr
else:
minutes_togo = minutes_set + 1440-minutes_curr
interval = minutes_togo*60
run = "rtcwake -m disk -s "+str(interval)+" && "+"sleep 20 &&"+command
subprocess.call(['/bin/bash', '-c', run])
स्क्रिप्ट निष्पादित करें
स्क्रिप्ट चलाने के लिए एक महत्वपूर्ण संयोजन सेट करें; खोलें System Preferences > Keyboard > Shortcuts > Custom Shortcuts
, कमांड जोड़ें
sudo /path/to/wakeup.py (sudo = assuming you do the next step below)
और एक कुंजी संयोजन चुनें
स्क्रिप्ट को व्यवस्थापक के विशेषाधिकारों की आवश्यकता है। पासवर्ड दर्ज किए बिना इसे चलाने के लिए, sudoers फ़ाइल खोलें:
sudo visudo
फ़ाइल के बहुत नीचे लाइन जोड़ें:
[your_username] ALL=NOPASSWD: [/path/to/wakeup.py]
ध्यान दें कि sudoers फ़ाइल एक आवश्यक फ़ाइल है; फ़ाइल में त्रुटियाँ संभवतः गंभीर समस्याएं पैदा करती हैं , इसलिए सावधान रहें!
एनबी
- जागने के बाद, अलार्म शुरू होने से पहले कंप्यूटर 20 सेकंड के लिए निष्क्रिय है।
- आप sudoers फाइल को संपादित करने के लिए नहीं करना चाहते हैं, तो आप स्थापित करने की आवश्यकता
gksu
: sudo apt-get install gksu
। उस स्थिति में, स्क्रिप्ट को चलाने का कमांड है gksu /path/to/wakeup.py
, और जब भी आप इसे चलाएंगे, तब आपको आपके पासवर्ड के लिए संकेत दिया जाएगा।
अब आप अपने प्रमुख संयोजन के साथ सस्पेंड मोड में प्रवेश कर सकते हैं और आप अपने जागने के गीत से जाग जाएंगे।
2. बंद संस्करण सहित (किसी भी) कुंजी या माउस हिट होने पर फ़ंक्शन
इस एक और "बुनियादी" संस्करण के बीच का अंतर यह है कि इसमें एक अलार्म बंद हो जाता है जब किसी कीस्ट्रोकेक या माउस की गति का पता लगाया जाता है (जब आप बस उठते हैं तो कंप्यूटर पर रिदमबॉक्स को रोकने की तुलना में अधिक सुविधाजनक होता है), और यह कि अलार्म स्वचालित रूप से बाहर निकल जाता है समय की एक निर्धारित अवधि।
सेटअप मूल संस्करण के रूप में बहुत अधिक है, लेकिन xprintidle
कीस्ट्रोके- या माउस आंदोलन घटनाओं का पता लगाने के लिए इसे स्थापित करने की आवश्यकता है:
sudo apt-get install xprintidle
लिपी:
#!/usr/bin/env python3
import subprocess
import time
import datetime
from threading import Thread
#-------------------------- edit settings below -------------------------------
max_wakeupduration = 1 # max time the song will play (minutes)
wakeup_hour = 7 # wake up hour (0-24)
wakeup_minute = 15 # wake up minute
wakeup_song = "/path/to/song.mp3" # path to wake up song
#------------------------------------------------------------------------------
def stop_wakeup():
time1 = int(time.time()); time2 = time1
last_idle = 0
playtime = max_wakeupduration*60
while time2 - time1 < playtime:
get_idle = subprocess.Popen(["xprintidle"], stdout=subprocess.PIPE)
curr_idle = int(get_idle.communicate()[0].decode("utf-8"))
if curr_idle < last_idle:
break
else:
last_idle = curr_idle
time.sleep(1)
time2 = int(time.time())
subprocess.Popen(["pkill", "rhythmbox"])
def calculate_time():
currtime = str(datetime.datetime.now().time()).split(":")[:2]
minutes_set = wakeup_hour*60 + wakeup_minute
minutes_curr = int(currtime[0])*60 + int(currtime[1])
if minutes_curr < minutes_set:
minutes_togo = minutes_set - minutes_curr
else:
minutes_togo = minutes_set + 1440-minutes_curr
return minutes_togo*60
def go_asleep():
sleeptime = calculate_time()
run = "rtcwake -m disk -s "+str(sleeptime)+" && "+"sleep 20"
subprocess.call(['/bin/bash', '-c', run])
combined_actions()
def play_song():
command = "rhythmbox "+wakeup_song
subprocess.Popen(['/bin/bash', '-c', command])
def combined_actions():
Thread(target = play_song).start()
Thread(target = stop_wakeup).start()
go_asleep()
व्याख्या
rtcwake
दोनों स्क्रिप्ट rtcwake
कमांड के चारों ओर लिखी गई हैं , जैसा कि यहां बताया गया है । आदेश का उपयोग कंप्यूटर को निलंबित करने और समय की एक निर्धारित मात्रा के बाद जागने के लिए किया जा सकता है (और वैकल्पिक रूप से जागने के बाद एक कमांड चलाएं)। -m disk
विकल्प प्रयोग किया जाता है, के बाद से ओपी अपने कंप्यूटर का समर्थन नहीं करता BIOS में सुविधा "राम को निलंबित" का उल्लेख किया। यह भी देखें man rtcwake
।
स्टॉप फंक्शन
स्टॉप फंक्शन एक ऐसे फंक्शन द्वारा काम करता है, जो हर सेकंड में समय को मापता है, जबकि गाना बज रहा है, और अंतिम निष्क्रिय समय को याद करता है। यदि अंतिम निष्क्रिय समय वर्तमान से अधिक है, तो इसका मतलब है कि कीस्ट्रोक या माउस घटना हुई है और रिदमबॉक्स मारा गया है।