引き続き23日の続き。漸く出来るようになったんだが、道のりは長かった。しかも結局やったことは超簡単なんだが、まぁそんなもんだよね。
引き続き以下のエラーから始める訳だが、実際このエラーに騙されてはいけない。いや、このエラーがヒントにはなるんだが、ここでdbus が原因だと錯覚してはいけない。そもそもRhythmbox が動いてる段階で、dbus は正常に動いているはず。
Failed to execute dbus-launch to autolaunch D-Bus session
という訳で原因の切り分けのために、シェルスクリプトで動くのかどうか試したところ、ssh 経由のコンソールだと動かないので、恐らくディスプレイ経由のコンソールだと動くけど、cron なりssh 経由だと動かないと見た。Display が原因じゃないかとssh 経由のコンソールで色々弄っていると以下のエラーが出てくる。
Xlib: connection to ":0.0" refused by server Xlib: Client is not authorized to connect to Server
と違うエラーが出たので、何で拒絶されるんだと思い調べてみると、ここに回答が。"root で XDarwin を起動、あるいはすごく変な状況下が原因となります。" ということで、冷静に考えてみると、普段色々弄っているのは、root でやっているんだが、VNC にログインする時は一般ユーザで入って、コンソールでroot になって作業していた訳で、VNC のディスプレイに接続しようとしても、一般ユーザで入ってるのにroot で接続しようとしていた、という非常に間抜けな結果だった。ということで、rhythmbox を一般ユーザで起動して、ssh から一般ユーザでディスプレイを指定して起動するとあっさり動いた。
Could not open audio device for playback
これで調べると、ここを見るとLinux のバグらしく、とりあえずハードウェアごと再起動してみ、ということなので大人しくサクッと再起動すると音が鳴るようになった。
元々昔は音が鳴っていたのに、何で急に鳴らなくなったんだろうと思ったら、結論としては起動するユーザを間違えていただけ、というだけだったんだが、ものすごい時間が掛かったな。こうして文章にすると結構サクッと結論に辿り着いてる感があるけど、実際はこの何倍も行ったり来たりしてる訳で、自分はまだまだだなぁ、と感じる。
追記: 音量も時間によって調節することにした。以下のようにcrontab に追加すれば良いだろう。コマンドを見れば解るが、rhythmbox の音量を調節している訳ではないので注意。というか、rhyhtmbox-client には音量を調節するコマンドが無い。
$ crontab -e 0 1 * * * amixer set Master 80% > /dev/null 55 8 * * * amixer set Master 100% > /dev/null