以前作った Amarok をアラームとして使うシェルスクリプトを機能は削らないまま簡素化した。
#!/bin/bash set -m charcode=`echo $LANG | sed -e 's,^.*\.,,g'` locknumber=`uuid | cut -f 1 -d -` msglate=`echo '遅刻だよ〜♪' | iconv -f UTF-8 -t $charcode` msgmorning=`echo 'おはよー♪' | iconv -f UTF-8 -t $charcode` msgunlock=`echo '解除するには <code>'"$locknumber"'</code> をいれてね♪' | iconv -f UTF-8 -t $charcode` msgnotrack=`echo 'Amarok のプレイリストに曲が入っていません!!' | iconv -f UTF-8 -t $charcode` msgamaroknotrun=`echo 'Amarok が起動していません!! \n(Amarok と通信できませんで>した)' | iconv -f UTF-8 -t $charcode` qdbus org.kde.amarok if [ $? != 0 ]; then kdialog --error "$msgamaroknotrun" --title "Amarok Alarm" exit 1 fi if [ `qdbus org.kde.amarok /TrackList GetLength` == 0 ]; then kdialog --error "$msgnotrack" --title "Amarok Alarm" exit 1 fi oriVol=`qdbus org.kde.amarok /Player VolumeGet` tarVol=25 qdbus org.kde.amarok /amarok/MainWindow setDisabled 1 qdbus org.kde.amarok /Player VolumeSet 0 qdbus org.kde.amarok /Player Play for f in `seq 0 100`; do qdbus org.kde.amarok /Player VolumeSet $(($tarVol*$f/100)) sleep 0.05 done sh -c "sleep 3600; ps --ppid $$ --pid $$ | cut -f 1 -d ' ' | grep -v \$\$ | xargs kill; qdbus org.kde.amarok /Player PlayPause; qdbus org.kde.amarok /Player VolumeSet $oriVol; qdbus org.kde.amarok /amarok/MainWindow setDisabled 0; kdialog --msgbox '$msglate' --title 'Amarok Alarm'" & pid=$! kdialog --msgbox "$msgmorning" --title 'Amarok Alarm' ret='' while [ x$ret != x$locknumber ]; do ret=`kdialog --inputbox "$msgunlock" "" --title 'Amarok Alarm'` done qdbus org.kde.amarok /Player PlayPause qdbus org.kde.amarok /Player VolumeSet $oriVol qdbus org.kde.amarok /amarok/MainWindow setDisabled 0 ps --ppid $pid --pid $pid | cut -f 1 -d ' ' | xargs kill
必要なもの
パッケージの名前は Momonga Linux のもので環境によっては違う場合もある。
coreutils bash amarok (2 以降 / 2.4 以降推奨) qt (4 以降 / 4.6 以降推奨) kdebase (4 以降 / 4.6 以降推奨) procps glibc-common uuid cron
でたぶん足りると思います。
$ ps
設定
鳴らしたい時間にこのスクリプトを起動するように cron に設定してあげれば OK。解除するには uuid から得た 6 桁の英数字を入力する。
必要な環境変数は
PATH LANG DISPLAY XIMMODULES
注意する点は
- 寝る前にスタンバイはもちろん、ログアウトしてはいけない。
- Amarok は予め起動しておくこと。
- Amarok の起動時にパスワードの入力などでユーザーからの入力待ちになることがあるためこのスクリプトから起動するようなことはしていない
- Amarok のプレイリストには予め何かしら入れておき、再生ボタンを押せば音がなる状態にしておくこと。
音量調整
目覚ましとして起動した時の最終音量は
tarVol=25
変数に設定する。(デフォルト: 25)
同じく初期音量は
qdbus org.kde.amarok /Player VolumeSet 0
の最後の 0 を変更する。(デフォルト: 0)