深い睡眠とアイドル睡眠の間を動的に切り替えます。

深い睡眠とアイドル睡眠の間を動的に切り替えます。

私は通常、2つの状況で定期的にラップトップをスリープモードに切り替えます。

  1. 何かを読んだり話したりする短い時間(数分)
  2. ランチタイムと出退勤時間が長い場合(1時間以上)

makeおよびsetコマンドのようにラップトップをスリープモードに切り替えるときは、スリープモードを設定するか、またはに設定する必要があるかをdeep判断できるツールまたはスクリプトがあるかどうか疑問に思います。s2idlesuspend_to_idlesuspend_to_deep

基本的にこれらの2つのオプションを切り替えるスクリプトを書くことができますが、/sys/power/mem_sleepa)sudoが必要で、b)ファイルの変更がすぐに考慮されるかどうかわかりません(そうだと思いますが、どこで確認するのかわかりません)、ご存知の方は情報をいただきありがとうございます。 )

編集:理論的根拠は、ラップs2idleトップがdeep睡眠から目を覚ますときに15〜30秒間遅い動作を防ぐために短い睡眠時間を使用し、同時により長い睡眠時間でバッテリーを節約するために後者を使用することです。

答え1

変更がすぐに反映されたことを確認できるように移行を実行するスクリプトを作成しました。/sys/power/mem_sleep少し退屈でしたが効果がありました。

fcontent=$(cat /sys/power/mem_sleep)

if [ "$fcontent" = "s2idle [deep]" ]; then
        echo "s2idle" | sudo tee /sys/power/mem_sleep
else
        echo "deep" | sudo tee /sys/power/mem_sleep
fi;

答え2

主な答えに対する代替案または追加事項:

~/bin2つの別々のスクリプト(内)と2つの対応するランチャーを作成しました。

suspend_deep.sh:

#!/bin/sh

echo deep | sudo tee -a /sys/power/mem_sleep

suspend idle:

#!/bin/sh

echo s2idle | sudo tee -a /sys/power/mem_sleep

送信機の位置は次のとおりです~/.local/share/applications

[Desktop Entry]
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true ~/bin/suspend_deep.sh
Icon=system-suspend
Name[en_US]=Suspend deep
Name=Suspend deep
Type=Application
Terminal=false

そして:

[Desktop Entry]
Exec=pkexec env DISPLAY=$DISPLAY XAUTHORITY=$XAUTHORITY KDE_SESSION_VERSION=5 KDE_FULL_SESSION=true ~/bin/suspend_idle.sh
Icon=system-suspend
Name[en_US]=Suspend idle
Name=Suspend idle
Type=Application
Terminal=false

現在の状態のみを変更するスイッチと比較して、このソリューションは以下のように現在の状態がわからない場合や期待どおりに機能しない場合に便利です。私にこれが起こりました。

答え3

マザーボードとカーネルがs2idleとs2ramの両方をサポートしている場合は、これらのコマンドを実行してすぐにサスペンドをトリガーし、必要な状態を取得できます。

s2ramの場合:

echo "mem" > /sys/power/state

s2idleの場合:

echo "freeze" > /sys/power/state

システムによって異なる場合があります。どのオプションがあるかを確認してください。

cat /sys/power/state

ただし、root権限がないとこれを達成する方法はありません。

関連情報