Thinkpadを持っていて、着信Jabberメッセージの通知にThinkLight(キーボードを照らすように設計された画面上の白いフラッシュライト)を使用したいと思います。
/sys/class/leds/tpacpi::thinklight/brightness
を255に変更するだけでよいので、簡単に理解できます。簡単なBashスクリプトを使用して、ライトを3回点滅させます。
ただし、これを実行できるようにするには、アクセス許可を変更する必要があります。rootだけでなくこのファイルも変更できます。
そして、起動するたびにSudo chmod o+w /sys/class/leds/tpacpi::thinklight/brightness
したくありません。
最善の解決策は、これにudev
を使用することだと思います。ただし、これまでudev
を使用したことがなく、オンラインで見つけたチュートリアルにかなり混乱しています。
私はこのudev
ルールを試しました:
KERNEL=="tpacpi::thinklight", MODE="0666"
と同様
KERNEL="thinklight", MODE="0666"
しかし、それは機能しません。 udevadm test /class/leds
の実行中にエラーは発生しませんが
助けとヒットをありがとう。または多分他の解決策。
グループleds
のメンバーにすべてのLEDへのアクセスを許可するために、次の2つのudevルールを使用しています。
SUBSYSTEM=="leds", ACTION=="add", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
SUBSYSTEM=="leds", ACTION=="change", ENV{TRIGGER}!="none", RUN+="/bin/chgrp -R leds /sys%p", RUN+="/bin/chmod -R g=u /sys%p"
動的に作成された属性を処理するには、ACTION=="change"
ルールが必要であることに注意してください。たとえば、LEDのトリガーが「タイマー」(echo timer > trigger
)に設定されている場合、追加の属性delay_on
およびdelay_off
が作成されます。 change
アクションは、これらの新しい属性にグループと権限が設定されるように指定されています。
0
を/sys/class/leds/.../brightness
に書き込むことにより、LEDがオフになるたびにchange
イベントが生成されることに気づきました。これは、明るさが0
に設定されている場合は常にLinuxLEDドライバーコードのクリアトリガーが原因のようです。そのため、2番目のルールにはENV{TRIGGER}!="none"
条件があり、LEDがオフになるたびにルールがトリガーされるのを防ぎます。
'KERNEL'の設定が間違っていると思います。 udevルールを作成およびデバッグするためのこの素晴らしいドキュメントから:
http://www.reactivate.net/writing_udev_rules.html#basic
カーネル=明るさ、そしておそらくサブシステム= LEDが必要だと思います
次に、ディストリビューションにinotifyのサポートがない場合に備えて。変更がudevdに表示されていることを確認してください。
# udevcontrol reload_rules