私はThinkpadを持っており、ThinkLight(キーボードを照らすように設計された画面上の白い点滅ライト)を使用して着信Jabberメッセージに関する通知を受け取りたいと思います。
実装が簡単です。/sys/class/leds/tpacpi::thinklight/brightness
255に変更してください。ライトを3回点滅させる単純なBashスクリプトを使用して実行します。
ただし、これを行うには、ルートのみがこのファイルを変更できないように権限を変更する必要があります。起動するたびにこれを実行し
たくありません。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
あなたの助けとクリックに感謝します。あるいは、他の解決策があるかもしれません。
答え1
グループメンバーにすべてのLEDへのアクセスを/etc/udev/rules.d/
許可するには、次の2つのudevルール(以下のファイル)を使用します。leds
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のトリガが「Timer」()に設定されている場合、追加のプロパティがecho timer > trigger
作成されますdelay_on
。グループと権限を設定するには、これらの新しいプロパティのdelay_off
アクションを指定します。change
書き込みをしてLEDを消すたびにイベントが発生することを確認しましたchange
。これは、明るさがに設定されるたびにLinux LEDドライバコードの消去が実行されるためです。したがって、2番目のルールには、LEDが消灯するたびにルールが実行されないようにする条件があります。0
/sys/class/leds/.../brightness
0
ENV{TRIGGER}!="none"
私のテストでは、カーネル5.4では、明るさが0に設定されていると、変更イベントはもはや発生しません。 Linux gitリポジトリを見ると、この問題はカーネル4.9で修正されたようです。したがって、4.9以上のカーネルでは、ENV{TRIGGER}!="none"
ルールの2番目の部分は必要ありません。
答え2
「カーネル」設定が間違っているようです。 udevルールの作成とデバッグに関する優れたドキュメントから:
http://www.reactivated.net/writing_udev_rules.html#basic
KERNEL=明るさとSUBSYSTEM=LEDが必要なようです。
その後、ディストリビューションにinotifyサポートがない場合。 udevdが変更を確認できることを確認してください。
# udevcontrol reload_rules