回答:
1.基本的な目覚まし時計機能
サスペンドモードに入る
このソリューションでは、以下のスクリプトを実行してサスペンドモードに入る必要があります。これにより、コンピューターがサスペンドモードになり、(スクリプトで)ユーザーが定義した(クロック)時間にウェイクアップします。あなたの歌を再生します。
もちろん、スクリプトを手動で実行して使用することもできますが、で設定したキーの組み合わせを使用してスクリプトを使用できるようにする方が便利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ファイルは必須のファイルであることに注意してください。ファイルのエラーは深刻な問題につながる可能性があるため、注意してください!
NB
gksu
:sudo apt-get install gksu
。その場合、スクリプトを実行するコマンドはgksu /path/to/wakeup.py
であり、スクリプトを実行するたびにパスワードの入力を求められます。これで、キーの組み合わせを使用してサスペンドモードに入ることができ、ウェイクアップソングによって起こされます。
2. (任意の)キーまたはマウスを押すと停止機能を含む拡張バージョン
これと「基本」バージョンの違いは、このいずれかのアラームが時に停止していることである任意のキーストロークやマウスの動きが検出された(あなたがちょうど目が覚めたとき、コンピュータ上のRhythmboxを停止するよりも便利)、そして後のアラームが自動的に終了していること定義された期間。
セットアップは基本バージョンとほとんど同じですが、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
OPが彼のコンピューターはBIOSの「RAMへのサスペンド」機能をサポートしていないため、このオプションが使用されます。もご覧くださいman rtcwake
。
ストップ機能
停止機能は、曲の再生中に毎秒アイドル時間を測定し、最後のアイドル時間を記憶する機能によって機能します。IF最後のアイドル時間が現在の1を超えて、それがキーストロークやマウスイベントが発生した、とのRhythmboxが殺されることを意味します。
sudo visudo /etc/sudoers
?
ラップトップをケーブルでインターネットに接続できる場合は、他のコンピューターまたはスマートフォンを使用して「マジックパケット」を送信し、ウェイクアップすることができます。
「ウェイクオンラン」(WOL)を探します。
Jacobのpythonスクリプトの実行に問題があったため、bashで書き直しました。ダウンロードして実行可能にし、それに応じて変数を編集します。
いくつかのこと:アラーム時刻はを介して設定されdate -d
ます。からの例man date
:
起きた後、私vlc -L
はループでいくつかの音楽を再生するために使用します。パスがフォルダの場合、その中のファイルを再生しようとします。それが私がすることです。