Ubuntu GNOME 15.04(14.10から)にアップグレードした後、pm-utils
の/etc/pm/sleep.d
フックがサスペンド/レジュームで実行されていないことに気付きました。
中断する前に明るさを保存し、再開後に復元するカスタムスクリプトがあります。手動でSudo pm-suspend
を実行すると、フックが実行されますが、ラップトップのふた(Ubuntuを中断する)を閉じると、スクリプトは実行されません。何か不足していますか?
/etc/pm/sleep.dの明るさスクリプトは(14.04と14.10で動作します):
#!/bin/bash
case "$1" in
suspend|suspend_hybrid|hibernate)
cat /sys/class/backlight/acpi_video0/brightness > /tmp/.brightness_level
# modprobe -r nvidiabl
;;
resume|thaw)
# modprobe nvidiabl
cat /tmp/.brightness_level > /sys/class/backlight/acpi_video0/brightness
rm /tmp/.brightness_level
;;
esac
Update:外部スクリプトを使用せずにsystemd
を使用して、より良いソリューションを見つけました。次のサービスを作成して有効にします。
[Unit]
Description=Save brightness on suspend
DefaultDependencies=no
RequiresMountsFor=/var/lib/systemd/backlight
Before=sleep.target
StopWhenUnneeded=yes
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/lib/systemd/systemd-backlight save acpi_video0
ExecStop=/lib/systemd/systemd-backlight load acpi_video0
TimeoutSec=90s
[Install]
WantedBy=sleep.target
Ubuntu 16.04注:ターゲットバックライトデバイス名の前に「backlight:」を付ける必要があります(例:backlight:acpi_video0
)。
実行して有効にします:systemctl enable suspend-save-backlight.service
(またはあなたがそれを呼ぶもの)。 acpi_video0は/sys/class/backlight
のバックライトシンボリックリンクの名前であり、ディスプレイの輝度を制御するために使用され、システムによって異なる場合があることに注意してください。
上記では、systemdのsystemd-backlight
実行可能ファイルを使用して、サスペンド前と再開後の輝度を保存およびロードします(再起動/ブート時に輝度を保存/ロードする/lib/systemd/system/[email protected]
からインスピレーションを受けています)。
古いソリューション(systemd
サービスをpm-utilsのサスペンドフックにリンク)
問題が見つかりました。 このArchWiki記事 によると:
systemdは、systemctl suspend、systemctl hibernate、またはsystemctl hybrid-sleepを使用する場合、pm-utilsを使用してマシンをスリープ状態にしません。 カスタムフック を含むpm-utilsフックは実行されません。ただし、systemdは、これらのイベントでカスタムスクリプトを実行するための2つの類似したメカニズムを提供します。
そのため、systemd
(15.04でデフォルトで使用されます)でそれを行う正しい方法は、次のように/etc/pm/sleep.d/
で明るさ制御スクリプトを実行する次のサービスファイルを作成することです。
/etc/systemd/system/root-suspend.service
:
[Unit]
Description=Local system suspend actions
Before=sleep.target
[Service]
Type=simple
ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness suspend
[Install]
WantedBy=sleep.target
/etc/systemd/system/root-resume.service
:
[Unit]
Description=Local system resume actions
After=suspend.target
[Service]
Type=simple
ExecStart=-/etc/pm/sleep.d/nvidiabl_brightness resume
[Install]
WantedBy=suspend.target
次に、以下を実行してこれらのサービスを有効にします。
systemctl enable root-suspend.service
systemctl enable root-resume.service
詳細については、リンクされた記事を参照してください。