Yoga 900には、自動回転動作を可能にする加速度計があります。
インストール時に https://github.com/hadess/iio-sensor-proxy (Linux *、LightDM)monitor-sensorを実行することができます。
➜ ~ monitor-sensor
Waiting for iio-sensor-proxy to appear
+++ iio-sensor-proxy appeared
=== Has accelerometer (orientation: undefined)
=== Has ambient light sensor (value: 0.000000, unit: Lux)
Accelerometer orientation changed: normal
Light changed: 49.999999 (Lux)
Light changed: 79.999998 (Lux)
Accelerometer orientation changed: left-up
Accelerometer orientation changed: normal
Accelerometer orientation changed: left-up
Accelerometer orientation changed: bottom-up
iio-sensor-proxy
を使用すると、データはdbusで利用できるようになります。それは形をしています:
signal time=1479631365.562013 sender=:1.15 -> destination=(null destination) serial=449861 path=/com/ubuntu/Upstart; interface=com.ubuntu.Upstart0_6; member=EventEmitted
string "dbus"
array [
string "SIGNAL=PropertiesChanged"
string "BUS=system"
string "INTERFACE=org.freedesktop.DBus.Properties"
string "OBJPATH=/net/hadess/SensorProxy"
string "SENDER=:1.4"
string "ARG0=net.hadess.SensorProxy"
]
特定のdbusイベントでのみウェイクアップするスクリプトを実行することは可能ですか?できれば、独自のPythonスクリプトまたはCプログラムを作成するのではなく、すでに存在するデーモンでイベントループを再利用します。/etc/dbus.d/handlers/net/hadess/SensorProxy
にファイルを追加するようなものは本当にクールです。
monitor-sensor
を実行しないと、iio-sensor-proxy
が実際に実行されていても、dbusにメッセージが表示されないようです。これらのメッセージは、誰かがそれらを聞いている場合にのみ送信されますか?
[*] Linux V 4.8.1-040801-generic#201610071031 SMP Fri Oct 7 14:34:10 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
PS:monitor-sensor
を使用する場合のpowertopによると:
14.7 mW 1.5 ms/s 8.8 Process dbus-monitor
答えは、Linuxでこれを処理するための標準的な方法を説明し、バッテリー使用量の観点から最もフレンドリーなソリューションである必要があります。
私はLinuxの第一人者ではありませんが、dbus-monitor
は確かに使用するツールのようです。
投稿への回答 dbusをリッスンし、メッセージでスクリプトを起動するデーモンを作成する方法 言います:
に基づく https://askubuntu.com/questions/150790/how-do-i-run-a-script-on-a-dbus-signal
#!/bin/bash interface=org.gnome.ScreenSaver member=ActiveChanged dbus-monitor --profile "interface='$interface',member='$member'" | while read -r line; do echo $line | grep ActiveChanged && your_script_goes_here done
それを/ etc/init.d/monitor-for-unlockに貼り付けて実行可能にし、rc2.dでソフトリンクを作成します。
chmod +x /etc/init.d/monitor-for-unlock cd /etc/rc2.d ln -s /etc/init.d/monitor-for-unlock .
記事 D-Busの監視 追加:
おそらく、dbus-monitorの最も強力な機能は、一度に1つのウォッチ式のみを使用することに制限されていないという事実です。次の例では、3つのTomboy信号すべてを同時に監視し、awkを使用してdbus-monitorからの出力を解析し、意味のあるメッセージを表示します。
#!/bin/bash OJECT="'org.gnome.Tomboy'" IFACE="'org.gnome.Tomboy.RemoteControl'" DPATH="'/org/gnome/Tomboy/RemoteControl'" WATCH1="type='signal', sender=${OJECT}, interface=${IFACE}, path=${DPATH}, member='NoteAdded'" WATCH2="type='signal', sender=${OJECT}, interface=${IFACE}, path=${DPATH}, member='NoteSaved'" WATCH3="type='signal', sender=${OJECT}, interface=${IFACE}, path=${DPATH}, member='NoteDeleted'" dbus-monitor "${WATCH1}" "${WATCH2}" "${WATCH3}" | \ awk ' /member=NoteAdded/ { getline; print "Created note " substr($2,7) } /member=NoteSaved/ { getline; print "Added note " substr($2,7) } /member=NoteDeleted/ { getline; print "Deleted note " substr($2,7) } '
これは、おてんば娘のアイコンをクリックして新しいメモを作成し、自動保存を待ってから、削除オプションを選択してメモを削除したときに生成される出力です。
$ ./test Created note //tomboy/3da026dc-f6ee-4637-8a94-bec6e2844824" Added note //tomboy/3da026dc-f6ee-4637-8a94-bec6e2844824" Deleted note //tomboy/3da026dc-f6ee-4637-8a94-bec6e2844824"