Lenovo z5170にUbuntu 16.04 LTSがあります。ビープ音でバッテリー残量が少なくなっていることを通知するプログラム(どのプログラミング言語であっても)が必要です。バッテリーが切れる瞬間(10%のエネルギー)までプログラムはスリープ状態になっているはずですが、考えられるのはプロセッサ全体を使い果たして他のすべてを実行させないwhileループだけです。
1-そのようなプログラムをどのように実装すればよいですか?
2-特定のイベントでユーザーに通知する方法はどれですか?
推奨される重複メソッドに加えて、次のことができます。
upower -enumerate
を介してバッテリーインターフェイスパスを見つけます。
bash-4.3$ upower --enumerate
/org/freedesktop/UPower/devices/line_power_ACAD
/org/freedesktop/UPower/devices/battery_BAT1
/org/freedesktop/UPower/devices/DisplayDevice
次にupower --show-info
を使用して、その出力をトリップします。私の例では次のようになります:
bash-4.3$ upower --show-info /org/freedesktop/UPower/devices/DisplayDevice | awk '/percentage/{gsub(/\%/,""); print $2}'
100
あとは、簡単なスクリプトを使用して、その出力値が特定のしきい値以下かどうかを比較するだけです
#!/bin/bash
get_percentage()
{
# Note, | \ must have only new line after it, no space
upower --show-info /org/freedesktop/UPower/devices/battery_BAT1 |\
awk '/percentage/{gsub(/\%/,""); print $2}'
}
main()
{
while true
do
pcent=$(get_percentage)
[ $pcent -le 10 ] && notify-send "Battery Low" "Please plug in charger"
sleep 60 # check every minute
done
}
main
ビープ音による通知については、aplay
コマンドとnotify-send
の代わりに任意のオーディオファイルを使用できます。 GUIがない場合は、wall <<< "Battery low"
のようにwall
コマンドを使用することもできます。このコマンドはメッセージを表示するために印刷します。 [〜#〜] note [〜#〜]:gnome-terminal
の最近の更新のため、これはgnome-terminal
では機能しませんが、TTYおよびその他のターミナルエミュレーターでは引き続き機能しますする