Neofetchを活用したLinux端末におけるバッテリー状態監視の設定方法

電力モジュールの基本有効化

Neofetchの標準ビルドには電源状態を取得するモジュールが組み込まれている。ターミナル起動時に直感的に充電率を確認するため、シェル環境の初期化スクリプトに別名定義を追加する構成が推奨される。

# ~/.zshrc または ~/.bashrc への追記例
evaluate_power_status() {
    neofetch --battery --battery_display infobar --color_blocks 6
}
alias power='evaluate_power_status'

出力フォーマットと構成ファイルの調整

表示項目やレイアウトは設定ファイル経由で制御する。ユーザーディレクトリ配下の設定ファイルを読み込み、print_info()ブロック内で表示フラグを有効化する。

# ~/.config/neofetch/config.conf
print_info() {
    # ... 既存設定 ...
    info "Battery" battery
    info "Power State" power_state
    info "Charge Level" battery_bar
}

システムファイル連携による劣化率算出

Neofetch単体では経年劣化率(健康度)を直接計算できないため、/sys/class/power_supply/配下の仮想ファイルから生データを読み取り、外部関数で処理するアプローチを採用する。

# 劣化率算出ロジック
get_battery_health() {
    local current_cap=$(cat /sys/class/power_supply/BAT*/capacity 2>/dev/null)
    local design_cap=$(cat /sys/class/power_supply/BAT*/capacity_last 2>/dev/null)
    if [[ -n "$design_cap" && "$design_cap" -gt 0 ]]; then
        echo $(( (current_cap * 100) / design_cap ))%
    else
        echo "N/A"
    fi
}

# 設定ファイル内での適用
# info "Wear Level" "$(get_battery_health)"

閾値監視と自動化ワークフロー

常時稼働環境や長時間の作業中に残量が一定値を下回った際、自動的にデスクトップ通知を発行する監視ループを構築する。upowerコマンドを利用することで、デバイス名の変動に強い構成となる。

#!/bin/bash
# monitor_charge.sh
THRESHOLD=20
CURRENT=$(upower -i /org/freedesktop/UPower/devices/battery_BAT0 \
    | grep -E '^\s+percentage:' | awk '{print $2}' | tr -d '%')

if [[ -n "$CURRENT" && "$CURRENT" -le "$THRESHOLD" ]]; then
    notify-send "バッテリー残量警告" "現在の充電率: ${CURRENT}% (閾値: ${THRESHOLD}%)" -u critical
fi

# cron ジョブへの登録
# */10 * * * * /path/to/monitor_charge.sh

トラブルシューティング

  • 電源項目が出力されない/sys/class/power_supply/ディレクトリ内のデバイス名がBAT1BAT2として認識されている可能性を確認。デバイスパスの動的解決を追加する。
  • 進行状況バーの表示が崩れる:ターミナルの文字幅に合わせて--bar_lengthパラメータを調整する。例:neofetch --battery_display bar --bar_length 25
  • データ反映に遅延がある:カーネルモジュールの情報更新頻度に依存するため、sudo apt update && sudo apt install --only-upgrade neofetchで最新版にアップデートし、依存ライブラリも再構築する。

タグ: neofetch linux shell-script battery-monitoring sysfs

5月19日 15:42 投稿