2015/06/04

画面の色温度を下げてブルーライトを軽減するredshift

ブルーライトへの対処方法は幾つか存在するが、あなたならどうする?

私ならredshift、PCにredshift

本記事はブルーライトを軽減するソフトウェアについてを扱っており、神奈川県の県庁所在地については扱っていない。

元の記事は2014年の3月から4月にかけて書かれたが、前後半に分かれていた2つの記事を統合し、一部内容を追加・調整している。

  1. 概要
  2. ユーザインターフェースについて
  3. 基本的な使い方
    1. コマンド
    2. 公式のGUI(GTK+)版
  4. 色温度の指定と位置情報の取得について
  5. 色変化を一瞬で終了する(トランジション効果の無効化)
  6. 他ツールとの干渉/明るさとガンマの指定について
  7. 設定ファイル
  8. 関連:画面の表示色を利用したその他のブルーライト対策
    1. Compizのネガ反転機能を用いる
    2. 暗い色の視覚テーマを用いる

概要

目の疲れや睡眠への影響を起こすとされている “ブルーライト” はディスプレイの輝度以外に画面内に表示される色によっても量が変わるということが知られており、これを利用して画面の表示色全体を赤みがかった色に変化させる(色温度を下げる)ことでブルーライトによる先述の影響を軽減するソフトウェアが存在する。

redshiftはその1つで、X Window System(RandR方式とVidMode方式)とWindows(コマンドのみ/GUI無し)に対応しており、Mac OS Xの実験的なサポートもバージョン1.10で追加された。ディストリのパッケージ名は “redshift” 。

このソフトウェアは実行時の位置情報と時刻から現在が昼と夜のどちらかが判別され、夜になると自動的に夜間用の設定が適用されて昼間に動かしたときよりも色温度を下げてブルーライトをより軽減するようになっている。

色温度についてはWikipediaの “色温度” の記事なども参照。

ユーザインターフェースについて

redshiftの本体はコマンドとして動作し、動作に関係した指定はこのコマンドへのオプション指定か見出し:設定ファイルによって行う。

これを制御するためのGUIプログラムが複数存在し、公式のソフトウェアとしてはGTK+を用いたシステムトレイアイコンのプログラム(パッケージ名は “redshift-gtk”)がある。

また、redshift公式のソフトウェアではないが、デスクトップ環境上で使いやすくするためのプログラムが存在する(これらの使い方はここでは扱わない)。

基本的な使い方

コマンド

redshiftコマンドを実行すると画面の色温度が変わり、このプロセスに対してSIGINT(Ctrl-c含む)やSIGTERMといったUNIXシグナルを送ると元の色温度に戻って終了する。

(フォアグラウンドで実行)
$ redshift [オプション...]
(Ctrl-cでSIGINTを送ると終了)

(バックグラウンドで実行)
$ redshift [オプション...] &

(SIGTERMを送って終了させる)
$ killall redshift

(SIGINTを送って終了させる)
$ killall -INT redshift

また、動作中であってもSIGUSR1のUNIXシグナルを送る度に有効/無効を切り替えできる。これは後述のGUI版で動かしているときにも有効。

(これを有効時に実行すると無効に切り替わり、無効時に実行すると有効に切り替わる)
$ killall -USR1 redshift

公式のGUI(GTK+)版

GTK+を用いた公式のGUI版のredshift-gtk[2]では実行すると表示色が変化すると同時にシステムトレイにアイコンが表示され、メニュー項目から終了することができる他、有効/無効の切り替えなどもできる。

オプション指定についてはコマンド版と同じ指定が可能となっている(内部的にはオプションを全てコマンド版に丸投げしている)が、デスクトップ環境などのメニューの項目として用意されているものから起動するとオプションは付かない。付けたいオプションがある場合はその指定を含んだランチャを独自に作ってもよいが、代わりに見出し:設定ファイルを記述することを推奨する。

(GTK+版を実行)
$ redshift-gtk [オプション...] &

色温度の指定と位置情報の取得について

昼の太陽光のある環境と夜の照明のみの環境とでは最適な色温度が異なり、後者は前者よりもより赤っぽい(色温度が低い)色が適している。[3]

redshiftで使用される色温度の値の既定値はバージョン1.10時点では

  • 昼: 5500 [K]
  • 夜: 3500 [K]

となっているが、この値はオプション指定で変更可で、-t [昼用の色温度]:[夜用の色温度]オプションを付けると指定できる(例:-t 5250:3000)。

注意点として、プログラム非動作時の色温度は6500Kが想定されており、ディスプレイ側の色温度設定が “6500K” や “sRGB” の指定になっていない場合は指定通りの正確な色温度にはならない。[4]

実行時の位置情報の取得には幾つかの方法があり、手元の環境ではGeoClueという仕組みに基づいて位置情報が決定されていたが、位置の問い合わせ処理が行われるため、手動で位置情報を指定する-l [緯度]:[経度]オプションを用いて “-l 35:135” などのように指定(して問い合わせ処理をしないように)することもできる。

(2016/3/24)この位置情報を用いた昼夜判別処理は季節の変動で太陽の出ている時間帯が少しずつ変化していくのに対応しており、時期によらず昼と夜の境目の時刻に切り替わりが発生するようになっている。そのため、このオプションでは現在地の緯度と経度を正確に指定することが望ましい。

色変化を一瞬で終了する(トランジション効果の無効化)

表示色(色温度)が変わる際には段階的に変化していく(トランジション効果がかかる)が、-rオプションを付けるとこれが無効化され、一瞬で変わる。

他ツールとの干渉/明るさとガンマの指定について

このツールは “ガンマランプ” と呼ばれるものを赤/緑/青それぞれの成分について書き換えることで色温度を変化させるため、このガンマランプを書き換える他のツールを使用している場合はこのツールの実行時に効果が出なくなる(redshiftを終了すると戻る)。

明るさ(ソフトウェアによる調整をするもの)やガンマを変更するツール[5]を使用している場合はこのredshiftでも変更すること(ソフトウェアによる明るさ調整や色ごとのガンマ変更)ができるため、必要に応じてオプションで指定する。明るさとガンマの同時指定もできる。

明るさは-b [昼の明るさ/0から1の範囲の値]:[夜の明るさ/0から1の範囲の値](もしくは-b [昼夜共通の明るさ/0から1の範囲の値]・バージョン1.7以下はこちらのみ),ガンマは-g [赤のガンマ値]:[緑のガンマ値]:[青のガンマ値](もしくは-g [共通のガンマ値])で指定する。

設定ファイル

オプションで指定できる設定は設定ファイルを用いて指定することもできる。設定を試行錯誤するのはオプション指定で行い、定まってきたところで設定ファイルを記述して使うというのがいいかもしれない。

ファイルの場所は

  • 環境変数XDG_CONFIG_HOMEが定義済みの場合: ファイル名:${XDG_CONFIG_HOME}/redshift.conf
  • 環境変数XDG_CONFIG_HOMEが未定義の場合: [ホームディレクトリ]/.config/redshift.conf
  • Windowsの場合(未確認): %LOCALAPPDATA%\redshift.conf[6]

となり、新規に作成して配置する。

公式サイトのサンプルをもとにした設定例
[redshift]
;; 昼用の色温度 [5000-6000程度]
temp-day=5250
;; 夜用の色温度 [3000-4000程度]
temp-night=3000

;; トランジション効果を無効化し、一瞬で色温度を変化させる
transition=0

;; 昼夜共通の明るさ(ソフトウェア調整)
;; 共通で指定する場合は下の行頭の「;」を消して
;; 更に下2つの昼/夜用の設定項目の行の行頭に「;」を付ける
;brightness=0.8
;; 昼用の明るさ(ソフトウェア調整) ※バージョン1.8以上のみ
brightness-day=0.9
;; 夜用の明るさ(ソフトウェア調整) ※バージョン1.8以上のみ
brightness-night=0.7

;; 赤/緑/青のガンマを共通で指定する場合は下の行頭の「;」を消す
;gamma=0.8
;; 赤/緑/青のガンマをそれぞれ指定する場合は下の行頭の「;」を消す
;gamma=0.8:0.76:0.8

;; 位置情報を手動で指定
location-provider=manual

;; 標準の「randr」で問題がある場合行頭の「;」を消して「vidmode」にする
;; WindowsやMac OS XではOSごとの方式で動作
;adjustment-method=vidmode

;; 位置情報の指定値
[manual]
;; 緯度
lat=35.0
;; 経度
lon=135.0

関連:画面の表示色を利用したその他のブルーライト対策

Compizのネガ反転機能を用いる

CompizでCompizConfig 設定マネージャ(CCSM)を用いてネガ反転プラグイン(Negative)を有効にした上でキー操作を登録すると、そのキー操作を行ったときにウィンドウ単位もしくは画面全体がネガ反転される(それぞれキー操作を登録可)。これを多くのWebページを参照する際やその他色々なソフトウェアの使用時などに状況に応じて用いることで暗い色で表示される場面が増え、ブルーライトの軽減ができる。

暗い色の視覚テーマを用いる

GUIツールキットの視覚テーマには暗めの色を用いた視覚テーマがあり、外観設定でこうしたものを選択することでブルーライトの軽減ができる。また、プログラムを記述するテキストエディタの類では色付けの視覚テーマが切り替えられたり文字色と背景色などの色を個別に設定できたりする場合もあるため、こうした設定で暗い色が使われるようにすることでブルーライトが軽減できる。

使用したバージョン:
  • redshift 1.8, 1.9.1, 1.10
[1]: Ubuntuのほうが先にパッケージ化されたが、後にDebianでも独自にパッケージ化され、今後はDebian向けのパッケージに基づいたものに一本化される可能性がある
[2]: バージョン1.7以下では “gtk-redshift” と呼ばれていた
[3]: 更に、寝る時間が近い時間帯は睡眠への影響もあるとされるため、昼と明るさの環境が同じであっても色温度を下げてブルーライトを軽減したほうがよい
[4]: 他の色温度設定になっている場合、ブルーライトの軽減自体はされるが、ディスプレイに表示される実際の色温度が適切なレベルになる保証はない
[6]: 環境変数LOCALAPPDATAの既定値はWindows Vista以上では[システムドライブ]:\Users\[ユーザ名]\AppData\Local