私は Python の目覚まし時計スクリプトを持っています。これは、ある時点で私を起こす必要があります。就寝して実行したままにしておくと、使用している Linux Mint を搭載したラップトップは、しばらく非アクティブになると自動的にサスペンドします。スクリプトを防止するにはどうすればよいですか。停止しないようにして、実行し続けますか? 私のラップトップは私の部屋にありますが、光が邪魔で寝るのが面倒なので、ふたを閉める必要があります。これが私のスクリプトです。
import time
import sys
import webbrowser
alarm_HH = raw_input("Enter the hour you want to wake up at\n")
alarm_MM = raw_input("Enter the minute you want to wake up at\n")
print("You want to wake up at ", alarm_HH)
while True:
now = time.localtime()
if now.tm_hour == int(alarm_HH) and now.tm_min == int(alarm_MM):
webbrowser.open_new_tab("http://www.repeatmyvids.com/watch?v=SXLplRtMNfg&kmdom=youtube")
break
else:
timeout = 60 - now.tm_sec
if raw_input("Want me to stop?"):
break
[編集]
わかったので、python xlibモジュールをインストールしました。これは、インストールできる低レベルのpythonライブラリですsudo aptitude install python-xlib
。サスペンドまたはスリープを防ぐためにマウスポインターを移動するコードを数行追加しました。スクリプトは、ふたが閉じていて、どこからも入力がなくても機能します。
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(500,500)
d.sync()
これらのいくつかを追加したところ、コードは次のようになりました。
import time
import sys
import webbrowser
from Xlib import X, display
alarm_HH = input("Enter the hour you want to wake up at\n")
alarm_MM = input("Enter the minute you want to wake up at\n")
print("You want to wake up at ", alarm_HH)
while True:
now = time.localtime()
if now.tm_hour == int(alarm_HH) and now.tm_min == int(alarm_MM):
webbrowser.open_new_tab("http://www.repeatmyvids.com/watch?v=SXLplRtMNfg&kmdom=youtube")
break
else:
d = display.Display()
s = d.screen()
root = s.root
root.warp_pointer(500,500)
d.sync()
time.sleep( 5 )
root.warp_pointer(250,250)
d.sync()
time.sleep( 5 )
root.warp_pointer(100,100)
d.sync()
time.sleep( 5 )
root.warp_pointer(250,250)
d.sync()
サスペンドを防ぐためにポインターを移動するというアイデアをくれた EngHamoud に感謝します。