Todoはなかなか進まない進捗に対して、一定の時間でTODOを読み上げ、進捗を迫るものである。あまりに進捗しないので作ってみた。GistSystrayNotifyを開始するとSystrayに常駐し、Systrayから終了できるようにした。Systrayへの常駐はMailDeliver2同様、yadを使うようにした。$!Yadのオプションについて分析してみよう。項目名とコマンドを!で分けている。テキストの内容となるファイルZenityとは結構な違いがあることに注意。Yadは通常ブロックするため、Yadが終了しなければ戻らない。そのため、Notifyするためのプログラムをサブシェルでバックグラウンドプロセスとして実行し、そのプロセスID($!)を取得し、Yadが戻ったらKillすれば良い、ということになる。JTalk)Notifyは単一のプロセスIDを振るためにサブシェルで実行し、バックグラウンドプロセスとすることでループさせる。&単純なsleepによるループである。Sendを使って通知に表示となる。Festivalといったソフトウェアと比べて非常に自然で、日本語に対応している。複雑なソフトウェアだ。Manjaro(Arch)では、AURにあるopen-jtalkパッケージをインストールする。JdicファイルはAURにも存在していないが、辞書ディレクトリとして/usr/share/open-jtalk/dic/を使用することができる。精度は異なるかもしれない。JDicで/usr/libexecが指定されている部分を/usr/libに変更しなくてはいけない。女声を使用するためにはopen-jtalk-voice-meiをインストールする。JTalkは非常に自然で、Twitterの読み上げにも使えそうだが(twとの組み合わせがいいだろう)、複数行を扱うことができないため、Perlで変換している。JTalkは標準出力に吐くことはできないようだ。