2021年05月16日

Linuxで時報システム

一定の時間ごとに注意を向ける必要のある作業が出てきた。

スマホのアラームは鳴り続けるので止めるのが面倒。リマインダーほど「やらなければ」というものでもないので、完了済みにしたり通知を消していくのは煩わしい。理想は質実剛健なデジタル腕時計が正時にピッピッと鳴るアレ。


音を鳴らすスクリプトを作って、cronに登録。

#!/bin/bash

export PULSE_RUNTIME_PATH=${XDG_RUNTIME_DIR:-/run/user/$(id -u)}/pulse
SOUND_DEVICE=alsa_output.pci-0000_00_1b.0.analog-stereo
SOUND_FILE=/usr/share/sounds/freedesktop/stereo/alarm-clock-elapsed.oga

timeout 2 paplay --device="$SOUND_DEVICE" "$SOUND_FILE"```

PULSE_RUNTIME_PATH

cronからpulseaudioを使おうとすると DISPLAY=:0 を指定しても下記のエラーが出て音が鳴らない。

Connection failure: Connection refused
pa_context_connect() failed: Connection refused

稼働中のpulseaudioが使っているディレクトリをPULSE_RUNTIME_PATHで指定してやる。OSやデスクトップ環境その他の要因で異なるかもしれないが、Lubuntu(Ubuntu+LXQt)だと /run/user/1000/pulse/ だった。 これをもう少し環境依存しない感じの変数に直してセット。

追記: DEなしのraspberry pi(Raspbian)でも同じ位置だった。

device引数

普段はBluetoothイヤホンを使っているが、時報は本体スピーカーから流したい。pacmd list-sinks で出力装置の一覧が取れるのでその中の name を引数に指定すると任意の装置から音を出すことができる。

~$ pacmd list-sinks
5 sink(s) available.
  index: 76
    name: <alsa_output.pci-0000_00_1b.0.analog-stereo>
    driver: <module-alsa-card.c>
    flags: HARDWARE HW_MUTE_CTRL HW_VOLUME_CTRL DECIBEL_VOLUME LATENCY DYNAMIC_LATENCY
    state: SUSPENDED

timeout 2

OS同梱の音素材でアラーム音があったものの、ピピ、ピピと6回。これが毎時鳴るのはやかましいし音編集も面倒なので2秒でぶったぎる。

もっと好みの音素材を探してくる余裕がある場合には、まったく必要のない指定。



posted by かぷらす at 10:30| Comment(0) | 作業記録・備忘録 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
コチラをクリックしてください
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。