目覚しに Amarok で音楽を流すことができます。
必要な物
- Amarok 2
- Qt 4 (Amarok の実行にも必要)
- zenity (ダイアログ)
- uuid (ランダム文字列の作成に利用)
メインスクリプト
Amarok の操作を担います。
ファイル名: amarokalarm
#!/bin/bash qdbus org.kde.amarok /amarok/MainWindow setDisabled 1 amarokalarmui & pid=$! qdbus org.kde.amarok /Player VolumeSet 0 qdbus org.kde.amarok /Player Play for volume in 10 20 30 40 50 60 70 80 90 100; do sleep 0.5 qdbus org.kde.amarok /Player VolumeSet $volume done cnt=$((0)) # およそ1時間 (正確では無い) while [ $cnt -lt 3600 ]; do sleep 1 cnt=$(($cnt+1)) line=`ps $pid | wc -l` if [ $line == 1 ]; then break fi done # 停止 if [ $cnt == 3600 ]; then cpid=`ps --ppid $pid | sed -e "1s/.*//g" -e "2,\\$s/\([ 0-9]\{5\}\).*/\1/g"` kill $cpid kill $pid zenity --error --text="遅刻だよ〜♪ 急げ〜★" --title="Amarok Alarm からオハヨー" & fi qdbus org.kde.amarok /Player Stop qdbus org.kde.amarok /amarok/MainWindow setEnabled 1
実行中 Amarok は操作無効になりますが、KDE 環境下ではこれとおなじ方法で操作しているウィジェットがあり、それが置いてあるとあまり意味がない(そのウィジェットを通じて操作できるため)。
3600 (2箇所)を別の数値に変えるとタイムアウトが変わります。(秒単位、小数無効。3600 = 1時間)
サブスクリプト
GUI表示を担当します。
ファイル名: amarokalarmui
#!/bin/bash rand=`uuid | sed "s,-.*,,g"` zenity --warning --text="おはようございます❣❣\\n朝ですよ〜♪" --title="Amarok Alarm からオハヨー" entry="" while [ x$entry != x$rand ]; do entry=`zenity --entry --text="解除するには $rand を入力してくださいね〜★" --title="Amarok Alarm からオハヨー"` done
UUID 全部入力すると長いので最初のパーツだけ(8文字)を切り取って利用します。それを呈示し、おなじ物を入力してもらうことで、アラームを解除できます。
❣ (文字:❣ UTF-8 Only) は ! のようなマークです。左に示した文字を置き換えてご使用ください(このページが EUC-JP のため)。
cron への設定
メインスクリプトのほうを今の DISPLAY、LANG、GTK_IM_MODULE、PATH の値とともに設定します。2つのファイルはパスの通ったところに置いてください。
補足事項
わざわざこんなことしなくてもさすがは Linux の世界w
http://www.kde-apps.org/content/show.php/Alarm?content=102901
にありますw