# Display Power Management Signaling (日本語)

DPMS (Display Power Management Signaling) はコンピュータが操作されていないときにモニターを省電力モードに移行させる技術です。

それぞれの Timeout の詳細は ここ の Description セクションを見て下さい。

## X で DPMS を設定する

Note: Xorg 1.8 から DPMS は自動で検出され、カーネルの実行時に ACPI が有効になっていれば自動で有効になります。

以下を `/etc/X11/xorg.conf.d/` 下のファイルの `Monitor` セクションに追加してください:

    Option "DPMS" "true"

以下を `ServerLayout` セクションに追加してください、時間 (分単位) は必要に応じて変更してください:

    Option "StandbyTime" "10"
    Option "SuspendTime" "20"
    Option "OffTime" "30"

Note: `"OffTime"` オプションが機能しない場合は、以下で置き換えてください (`"blanktime"` を `"0"` に変更すると画面の暗転が無効になります):

    Option         "BlankTime" "30"

サンプルファイル `/etc/X11/xorg.conf.d/10-monitor.conf` は以下のようになります。

    Section "Monitor"
        Identifier "LVDS0"
        Option "DPMS" "false"
    EndSection

    Section "ServerLayout"
        Identifier "ServerLayout0"
        Option "StandbyTime" "0"
        Option "SuspendTime" "0"
        Option "OffTime" "0"
    EndSection

## xset を使って DPMS とスクリーンセーバーの設定を変更する

公式リポジトリの xorg-xset パッケージに入っている xset ツールを使うことでモニターを切ることが可能です。

Note: シェルにおいてこのコマンドを手動で使用する場合、正しく動作させるために `sleep 1;` を前に付ける必要があるかもしれません。例:

    $ sleep 1; xset dpms force off

Energy Star (DPMS) の機能を操作するには (タイムアウト値をゼロにするとそのモードが無効になります):

    $ xset -dpms Energy Star features off
    $ xset +dpms Energy Star features on
    $ xset dpms [standby [suspend [off]]]
    $ xset dpms force standby
    $ xset dpms force suspend
    $ xset dpms force off
    $ xset dpms force on  (also implicitly enables DPMS features)

### xset スクリーンセーバーコントロール

xset を使ってスクリーンセーバーをコントロールすることができます:

    $ xset s [timeout [cycle]]
    $ xset s default
    $ xset s on
    $ xset s blank
    $ xset s noblank
    $ xset s off
    $ xset s expose
    $ xset s noexpose
    $ xset s activate
    $ xset s reset

### 現在の設定を表示するには

    $ xset q

    ...

    Screen Saver:
      prefer blanking:  yes    allow exposures:  yes
      timeout:  600    cycle:  600
    DPMS (Energy Star):
      Standby: 600    Suspend: 600    Off: 600
      DPMS is Enabled
      Monitor is On

## サンプル

### DPMS をオフにする

    $ xset -dpms

### スクリーンセーバーを無効にする

    $ xset s off

### DPMS を無効にして画面が消えないようにする

動画やスライドショーを見るときに便利です:

    $ xset -dpms; xset s off

### 直ちに画面をオフにする

コンピュータから離れるとき、ディスプレイがオフになるよう設定したタイムアウトまで待つ必要はありません。xset コマンドを使って強制的にブラックアウトさせることができます。

    $ xset dpms force off

### 画面をスタンバイ状態にする

    $ xset dpms force standby

### 画面をサスペンド状態にする

    $ xset dpms force suspend

### 画面を消灯するための待機時間を5分から1時間に変更する

    $ xset s 3600 3600

### xset display.sh

以下のスクリプトをコピーして使うことも可能です:

    /usr/local/bin/display.sh

    #!/bin/bash
    # Small script to set display into standby, suspend or off mode
    # 20060301-Joffer

    case $1 in
        standby|suspend|off)
            xset dpms force $1
        ;;
        *)
            echo "Usage: $0 standby|suspend|off"
        ;;
      esac

実行可能属性をつけて (`chmod u+x /usr/local/bin/display.sh`) 実行してください `display.sh off`。後者を動かすには `/usr/local/bin` にパスを通す必要があります。

## setterm を使って Linux コンソールで DPMS を操作する

setterm ユーティリティはターミナルが認識するエスケープコードを出してターミナルを変更します。画面に表示されていようといまいが、リモートの ssh ターミナル、コンソールモード、シリアルコンソールなど無関係に、現在のターミナルデバイスにターミナルシーケンスを書き出します。

setterm の構文: (0 disables)

    setterm -blank [0-60|force|poke]
    setterm -powersave [on|vsync|hsync|powerdown|off]
    setterm -powerdown [0-60]

Note: 下の DPMS に関する短い記事をまだ読んでいないのであれば、ざっと読んで、どうやって X と同じように DPMS がコンソールで使えるのか理解すると良いでしょう。

### 画面がオフにならないようにする

次のコマンドを使うことができます:

    $ setterm -blank 0 -powerdown 0

また、次のコマンドでコンソールが黒くなるのを永続的に無効にすることができます:

    # echo -ne "\033[9;0]" >> /etc/issue

### 出力を cat にパイプでつなげてエスケープを表示する

    $ setterm -powerdown 2>&1 | exec cat -v 2>&1 | sed "s/\\^\\[/\\\\033/g"

### エスケープを tty にパイプでつなげて (書込・追記パーミッション) ターミナルを変更する

    $ setterm -powerdown 0 >> /dev/tty3

Note: `>>` is used instead of `>`. For permission issues using sudo in a script or something, you can use the tee program to append the output of setterm to the tty device, which tty's let appending sometimes but not writing.

#### tty 0-256 を設定する Bash ループ

    $ for i in {0..256}; do setterm -powerdown 0 >> /dev/tty$i; done; unset i;

## トラブルシューティング

### xset の DPMS 設定が xscreensaver で機能しない

xscreensaver は固有の DPMS 設定を利用します。詳しくは xscreensaver の設定を参照してください。

#### xscreensaver DPMS

以下のように `~/.xscreensaver` ファイルを編集したり、xscreensaver-demo GUI を使うことで xscreensaver の DPMS 設定を手動で設定することができます。

    timeout:	1:00:00
    cycle:		0:05:00
    lock:		False
    lockTimeout:	0:00:00
    passwdTimeout:	0:00:30
    fade:		True
    unfade:		False
    fadeSeconds:	0:00:03
    fadeTicks:	20
    dpmsEnabled:	True
    dpmsStandby:	2:00:00
    dpmsSuspend:	2:00:00
    dpmsOff:	4:00:00

## 参照

- PC Monitor DPMS specification explanation

Categories:

- X Server (日本語)
- Power management (日本語)