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
承認された回答:
更新 :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
Ubuntu16.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
詳細については、リンク先の記事を参照してください。
関連:パイプされたコマンドはどのような順序で実行されますか?