基本的に、私は このコメント を有効な答えにしたいと思います。
ターミナルを使用してバッテリーの状態を確認する方法? :からバッテリーの割合を抽出する方法を知っています
upower -i $(upower -e | grep BAT) | grep --color=never -E percentage|xargs|cut -d' ' -f2|sed s/%//
そして、基本的な通知をポップアップする方法:
notify-send "battery low"
しかし、この擬似コードに従って出力を永続的に監視し、通知を送信する(bash?)スクリプトを設定するにはどうすればよいですか。
if battery_status < 10%
then notify-send "battery low"
そしてシステムをサスペンド状態にしたSudo pm-suspend
ステップ1:すべてのユーザーがpm-suspendにアクセスできるようにし、パスワードを要求しない
Sudo visudo
を実行し、ファイルの最後に次の行を追加します:yourusername ALL=NOPASSWD: /usr/sbin/pm-suspend
ソース: パスワードなしで特定のSudoコマンドを実行する方法
ステップ2:batwatch.desktopファイルを作成します:
これは、監視スクリプトを自動的に起動するファイルです。ファイルは$HOME/.config/autostart/
フォルダーに保存する必要があります。
[Desktop Entry]
Type=Application
Exec=/home/serg/bin/batwatch.sh
Hidden=false
NoDisplay=false
Name=Battery Monitor Script
スクリプトが/home/serg/bin
フォルダーにあることに注意してください。任意のフォルダを使用できますが、標準のために/ usr/binまたは/ home/username/binの方が優先されます。
ソース: 起動時にスクリプトを実行する方法
ステップ3:実際のスクリプトを作成し、Exec = lineと同じ場所に保存します
これが実際のスクリプトです。ここではbashを使用していますが、korn Shellでも動作するはずです。コメントを追加したので、それらを読んで、スクリプトの動作を正確に理解してください
#!/bin/bash
# Check if the battery is connected
if [ -e /sys/class/power_supply/BAT1 ]; then
# this line is for debugging mostly. Could be removed
#notify-send --icon=info "STARTED MONITORING BATERY"
zenity --warning --text "STARTED MONITORING BATERY"
while true;do
# Get the capacity
CAPACITY=$( cat /sys/class/power_supply/BAT1/uevent | grep -i capacity | cut -d'=' -f2 )
case $CAPACITY in
# do stuff when we hit 11 % mark
[0-9]|11)
# send warning and suspend only if battery is discharging
# i.e., no charger connected
STATUS=$( cat /sys/class/power_supply/BAT1/uevent | grep -i status | cut -d'=' -f2 )
if [ $(echo $STATUS) == "Discharging" ]; then
#notify-send --urgency=critical --icon=dialog-warning "LOW BATTERY! SUSPENDING IN 30 sec"
zenity --warning --text "LOW BATTERY! SUSPENDING IN 30 sec"
sleep 30
gnome-screensaver-command -l && Sudo pm-suspend
break
fi
;;
*)
sleep 1
continue
;;
esac
done
fi
ステップ4:リブートして、スクリプトが機能するかどうかをテストします
このために、[0-9]|11)
を任意の値に調整できます。たとえば、65)
は65%で一時停止します。電源に接続されていない(充電されていない)場合にのみ停止します。
あなたがこれを気に入ったら教えてください、そしてそれがうまくいくなら、私の投票の左側にある灰色のチェックマークをクリックしてください!
乾杯!
バッテリーが完全に充電されたときに通知するために、Vaioで同様のスクリプトを作成しました。私はUPOWERを使用してバッテリーの状態に関する更新を提供し、これらの関連セクションを抽出しました。コードは次のとおりです。
#!/bin/bash
while true;do
STATE=$( upower -i /org/freedesktop/UPower/devices/battery_BAT0 | grep "state:" | cut -b 26- )
if [ $STATE = "fully-charged" ]
then
zenity --info --text "Battery Full!"
break
fi
done