GNU/Linux >> Linux の 問題 >  >> Ubuntu

Ubuntu –バッテリーのしきい値が低いときにラップトップをスリープ状態にする方法は?

Ubuntuを使用していますが、デスクトップ環境ではなくウィンドウマネージャーとしてi3を使用しています。

バッテリーが0%に達すると、コンピューターは突然シャットダウンし、警告などは表示されません。

たとえば4%のバッテリーでスリープするように設定できる簡単なスクリプトまたは構成はありますか?

承認された回答:

これは、電池残量をチェックしてカスタムコマンドを呼び出す小さなスクリプトです。ここではpm-hibernate 、バッテリーレベルが特定のしきい値を下回っている場合。

#!/bin/sh

###########################################################################
#
# Usage: system-low-battery
#
# Checks if the battery level is low. If “low_threshold” is exceeded
# a system notification is displayed, if “critical_threshold” is exceeded
# a popup window is displayed as well. If “OK” is pressed, the system
# shuts down after “timeout” seconds. If “Cancel” is pressed the script
# does nothing.
#
# This script is supposed to be called from a cron job.
#
###########################################################################

# This is required because the script is invoked by cron. Dbus information
# is stored in a file by the following script when a user logs in. Connect
# it to your autostart mechanism of choice.
#
# #!/bin/sh
# touch $HOME/.dbus/Xdbus
# chmod 600 $HOME/.dbus/Xdbus
# env | grep DBUS_SESSION_BUS_ADDRESS > $HOME/.dbus/Xdbus
# echo 'export DBUS_SESSION_BUS_ADDRESS' >> $HOME/.dbus/Xdbus
# exit 0
#
if [ -r ~/.dbus/Xdbus ]; then
  . ~/.dbus/Xdbus
fi

low_threshold=10
critical_threshold=4
timeout=59
shutdown_cmd='/usr/sbin/pm-hibernate'

level=$(cat /sys/devices/platform/smapi/BAT0/remaining_percent)
state=$(cat /sys/devices/platform/smapi/BAT0/state)

if [ x"$state" != x'discharging' ]; then
  exit 0
fi

do_shutdown() {
  sleep $timeout && kill $zenity_pid 2>/dev/null

  if [ x"$state" != x'discharging' ]; then
    exit 0
  else
    $shutdown_cmd
  fi
}

if [ "$level" -gt $critical_threshold ] && [ "$level" -lt $low_threshold ]; then
  notify-send "Battery level is low: $level%"
fi

if [ "$level" -lt $critical_threshold ]; then

  notify-send -u critical -t 20000 "Battery level is low: $level%" 
    'The system is going to shut down in 1 minute.'

  DISPLAY=:0 zenity --question --ok-label 'OK' --cancel-label 'Cancel' 
    --text "Battery level is low: $level%.nn The system is going to shut down in 1 minute." &
  zenity_pid=$!

  do_shutdown &
  shutdown_pid=$!

  trap 'kill $shutdown_pid' 1

  if ! wait $zenity_pid; then
    kill $shutdown_pid 2>/dev/null
  fi

fi

exit 0

非常にシンプルなスクリプトですが、アイデアが浮かび、ニーズに簡単に適応できると思います。バッテリーレベルへのパスは、システムによって異なる場合があります。もう少し移植性が高いのは、おそらくacpi | cut -f2 -d, バッテリーレベルを取得します。このスクリプトは、cronによって毎分実行するようにスケジュールできます。 crontab -eを使用してcrontabを編集します スクリプトを追加します:

*/1 * * * * /home/me/usr/bin/low-battery-shutdown

別の解決策は、GnomeやXfceなどのデスクトップ環境をインストールすることです(そしてウィンドウマネージャーをi3に変更します)。上記の両方の停止環境は、コンピューターの電源オフを処理する電源管理デーモンを備えています。ただし、意図的にそれらを使用せず、より最小限のソリューションを探していると思います。

関連:シェルスクリプトで環境変数を「エクスポート」する方法は?
Ubuntu
  1. Ubuntu 20.04でターミナルをカスタマイズする-それを行う方法は?

  2. Ubuntu14.04にNagiosをインストールする方法

  3. Ubuntu16.04にNagiosをインストールする方法

  1. Ubuntu –独自のディストリビューション(Linux)に表示されるシェルを作成する方法??

  2. Ubuntu Server 13.10は、ラップトップの蓋を閉じるときにスリープ状態になりますか?

  3. Ubuntuをロックアップする方法は?

  1. Ubuntu 20.04 LTSでラップトップバッテリーのステータスを確認する方法は?

  2. UbuntuにWifiネットワークカードを認識させる方法は??

  3. Ubuntuをきれいに見せるにはどうすればよいですか?