バッテリーレベルを表示するconkyセットアップがあります。問題は、ラップトップを充電器から抜き差しするたびにconky-startupスクリプトを実行して適切に表示する必要があることです。私はこれが苦痛だと思います(クリックするとスクリプトを実行するランチャーがセットアップされていますが)、ラップトップを充電器から抜き差しするたびにスクリプトを実行するために必要なことを知りたいです。
これは、スタートアップアプリケーションとして追加でき、継続的に実行される非常に単純なスクリプトです。コメントで指定されているように、電源方式の変更を検出したときに実行するコマンドを挿入します。
#!/bin/bash
# Author: Serg Kolo
# Date: June 17,2015
# Description: this script detects changes in
# the powering method, and does something user
# specifies in appropriate field
on_ac_power
PREVIOUS=$(echo $?)
while [ 1 ]; do
# check if we're on ac power or not
on_ac_power
CURRENT=$(echo $?)
# check if previous values are current
# are different. If they are
# raise the flag.
if [ $CURRENT -ne $PREVIOUS ]; then
echo things changed
# Insert commands you wanna run here
# in the space below this comment
echo running custom stuff
# when done: make current value previous
# for future comparison
PREVIOUS=$(echo $CURRENT )
else
# if previous values and current are same
# it means we didn't switch from battery to
# ac or vice versa; do nothing
continue
fi
sleep 1
done
電源ケーブルを抜き差しすると、/ etc/pm/power.d内のすべてのスクリプトが、プラグイン時に「true」引数で、プラグ抜き時に「false」引数で実行されます。
そのファイルの最後にスクリプトを追加すると、実行されるはずです。
実行するスクリプトがたくさんある場合は、次のような行を追加してください。
if [ -f /path/to/the/script ]; then
. /path/to/the/script
fi
おそらく、.../power.d /ディレクトリ内のスクリプトが次の方法で実行可能であることを確認する必要があります。
cd /etc/pm/power.d/
chmod +x ./name_of_file
詳細については、この回答を確認してください: 電源がプラグインまたは-outされているときにスクリプトを実行するにはどうすればよいですか?
一般的なアプローチは次のとおりです。
#!/bin/bash
status="$(grep -Po '^charging\s+state:\s+\K.*$' /proc/acpi/battery/BAT0/state)"
if [[ $status = 'charging' ]]; then
##Charging, Do something
Elif [[ $status = 'discharging' ]]; then
##Discharging, Do something
Elif [[ $status = 'charged' ]]; then
##Charged, Do something
else
##Battery not found, Do something
fi
/proc/acpi/battery/BAT0/state
にはバッテリーの状態が含まれます。バッテリー名が異なる場合は、BAT0
を交換してください
ファイルのcharging state:
で始まる行には、バッテリーが充電中、放電中、充電中のいずれかのステータスが含まれます
その行のステータス文字列を変数status
に保存します
status
の値に応じて、必要な処理を実行できます。