Bashプログラミング
 Computer >> コンピューター >  >> プログラミング >> Bashプログラミング

星空観察の夜に役立つ!Linuxのナイトビジョン用Bashスクリプト「redscreen.sh」の使い方

Linuxはサーバーや開発者の環境で使われることがよく話題になりますが、実は天文学の分野でも幅広く活用されています。Linux向けには、星図やスカイマップ、望遠鏡駆動システムを制御するインターフェースなど、天体観測に役立つツールが数多く存在します。しかし、天文学者にとって大きな課題のひとつが、暗闇の中で目の順応を保ちながらコンピューターを操作することです。

なぜ「暗順応」を守る必要があるのか

夜間の屋外で観測を行う際、天文学者は「暗順応(ダークアダプテーション)」と呼ばれる目の状態を維持しなければなりません。人間の目が薄暗い環境に完全に慣れるまでには、最大で30分ほどかかるとされています。ところが、通常の色味と明るさのままスマートフォンやノートパソコンの画面を見てしまうと、せっかくの順応が失われ、暗闇での視力が大きく低下してしまいます。

誰にでも分かりやすい例を挙げると、夜、布団の中でスマートフォンを読んでいる状態からふと立ち上がってトイレに行くとき、足元の障害物がほとんど見えず戸惑った経験はありませんか?あれがまさに、暗順応が失われた状態です。

解決策:xcalibで画面を赤くする

ここでご紹介したいのが、家族や友人の天文愛好家の「目」を暗闇に適応させ続けるための、ちょっとしたスクリプトです。このスクリプトはxcalibというユーティリティに依存しています。xcalibは「X.org向けの小型モニターキャリブレーションローダー」であり、Linuxのパッケージマネージャーを使えば簡単にインストールできます。

たとえばFedoraでは次のコマンドを実行します。

$ sudo dnf info xcalib
$ sudo dnf install xcalib

Ubuntuの場合はこちらです。

$ sudo apt-get install xcalib

なお、xcalibはX11専用のアプリケーションのため、Wayland環境では動作しません。ただしWaylandには同様の機能が標準で組み込まれているため、GNOMEの設定画面から同じ効果を得ることができます。X11を使用しているのであれば、xcalibはディスプレイの色温度を手軽に変更できる便利な手段です。

redscreen.sh:最新のBash構文で書き直したスクリプト

2014年にJeff Jahr氏によって書かれた「Redscreen」というナイトビジョンフィルター用スクリプトが存在します。オリジナルはCシェル(csh)向けに書かれていましたが、現在のLinuxではBashがデフォルトのシェルとなっているのが一般的です。筆者のFedora Linuxワークステーションにも、Cシェルはデフォルトではインストールされていません。

そこで筆者は、Redscreenスクリプトを最新のBash構文に合わせて書き直したバージョンを作成しました。大きな変更点として、条件分岐にcase文を採用しています。

#!/usr/bin/bash
# redscreen.sh - 画面を赤くする(天文観測に便利)
# Jeff Jahr氏の redscreen.csh (2014) に着想を得た改良版
#
# 本プログラムはフリーソフトウェアです。Free Software Foundationが
# 公布するGNU General Public License(バージョン3またはそれ以降の
# 任意のバージョン)の条項に基づき、再配布および改変が可能です。

case $1 in
    on)
        # 色・ガンマ・輝度・コントラストを調整
        xcalib -green .1 0 1 -blue .1 0 1 -red 0.5 1 40 -alter
        exit 1
    ;;
    off)
        xcalib -clear
        exit 1
    ;;
    inv)
        # 画面を反転
        xcalib -i -a
        exit 1
    ;;
    dim)
        # 画面を暗くする
        xcalib -clear
        xcalib -co 30 -alter
        exit 1
    ;;
    *)
        echo "$0 [on | dim | inv | off]"
        exit 1
    ;;
esac

Fedoraワークステーション上で動作するSkychart for Linux バージョン4.2.1のスクリーンショット

このスクリプトのメリット

多くの天文学ソフトウェアには「ナイトモード」機能が搭載されていますが、すべてのアプリにあるわけではありません。また、このスクリプトの優れた点は、特定のアプリケーションだけでなく画面全体に効果を適用できることです。これにより、夜間の屋外でLinuxシステムを星の観察以外の用途——メールのチェックやウェブサイトの閲覧など——にも使えるようになり、しかも暗順応を損なう心配がありません。

まとめ

本格的な天文学者であっても、週末のアマチュア星空愛好家であっても、Linuxとオープンソースの力を借りれば、一晩中夜空を楽しむことができます。ぜひこのスクリプトを活用して、快適な星空観察ライフを満喫してください。

  1. 星空観察の夜に役立つ!Linuxのナイトビジョン用Bashスクリプト「redscreen.sh」の使い方

    Linuxはサーバーや開発者の環境で使われることがよく話題になりますが、実は天文学の分野でも幅広く活用されています。Linux向けには、星図やスカイマップ、望遠鏡駆動システムを制御するインターフェースなど、天体観測に役立つツールが数多く存在します。しかし、天文学者にとって大きな課題のひとつが、暗闇の中で目の順応を保ちながらコンピューターを操作することです。 なぜ「暗順応」を守る必要があるのか 夜間の屋外で観測を行う際、天文学者は「暗順応(ダークアダプテーション)」と呼ばれる目の状態を維持しなければなりません。人間の目が薄暗い環境に完全に慣れるまでには、最大で30分ほどかかるとされています。とこ

  2. 自宅プリンターで両面印刷を自動化!シンプルなBashスクリプトの作り方

    私の自宅にはレーザープリンターがあります。Hewlett Packard LaserJet Pro CP1525nwカラープリンターはやや古いモデルですが、何年もの間、安定してカラー印刷をこなしてくれる頼れる働き者です。数年前にRaspberry Piをプリントサーバーとして導入し、家庭内ネットワークに接続しました。 このLaserJetはホームオフィスにとって大きな戦力です。昨年会社を立ち上げて以来、クライアントとの打ち合わせやワークショップ、研修会用の資料印刷には、ずっとこの小さなレーザープリンターにお世話になってきました。 ただ、ひとつだけ不満があります。このプリンターは片面印刷にしか対