明るいモードと暗いモードを自動的に切り替えるには?

明るいモードと暗いモードを自動的に切り替えるには?

私は次のユーザーですLinux Mint。私がLinuxで頻繁に望んでいた機能の1つは、macOSやモバイルデバイスと同様に、明るいモードと暗いモードの間で時間を切り替える機能です。

明るいモードから暗いモードに切り替えるために、次のスクリプトを作成しました。

#!/bin/bash
notify-send "Switching to dark mode"
gsettings set org.cinnamon.desktop.wm.preferences theme Mint-Y-Dark
gsettings set org.cinnamon.desktop.interface gtk-theme Mint-Y-Dark
gsettings set org.cinnamon.theme name Mint-Y-Dark

反対方向に行くもう1つがあります。

#!/bin/bash
gsettings set org.cinnamon.desktop.wm.preferences theme Mint-Y
gsettings set org.cinnamon.desktop.interface gtk-theme Mint-Y
gsettings set org.cinnamon.theme name Mint-Y

現在、私は2つのテーマを切り替えたいときに手動で実行します。

ほとんどのプログラムは、オペレーティングシステム全体のテーマを尊重します。これはこのアプローチが驚くほどうまく機能することを意味します!しかし、このアプローチで解決したい3つの問題があります。

  1. 時間とともに明るいモード/暗いモードを自動的に切り替えます(macOSのように)。私は試してみましたが、cronこのanacron目的ではうまくいきません。コンピュータをしばらくオフにしてから再びオンにすると、移行時間が経過したことを認識してモード切り替えを実行したいと思います(macOSや他のモバイルデバイスと同様)。
  2. 私の端末(GNOME端末、Cinnamonのデフォルト)を明るいテーマから暗いテーマ(またはその逆)に切り替えたいのですが。
  3. 私のテキストエディタ(Emacs)に明るい/暗いテーマをロードしたいです。

(1)だけでも素敵に動作します!

ベストアンサー1

明るいモードまたは暗いモードを強制するすべてのコマンドを含むスクリプトを使用することをお勧めします。例は次のとおりです。

#!/bin/bash

function set_light_mode () {
    echo "setting light mode"
}

function set_dark_mode () {
    echo "setting dark mode"
}

case "$1" in
    light)
        set_light_mode
        ;;
    dark)
        set_dark_mode
        ;;
    *)
        light_time="0800"
        dark_time="1700"
        d="$(date +"%H%M")"

        if [ "$d" -ge "$light_time" ] && [ "$d" -lt "$dark_time" ]; then
            set_light_mode
        else
            set_dark_mode
        fi
        ;;
esac

これで、次のことができます。

  • コマンドを使用したいときはいつでも実行できます。最初の引数を指定するか、dark時間lightに関係なくXを設定します。または、パラメータを指定せずに現在の時間によって異なります。
  • 上記の時間(パラメータなし)またはいつでもcrontabに2つの項目を追加してください。ノートブックの電源を入れると、現在の時間に基づいてX設定が適用されます。
  • GUIを使用して、お気に入りのDEの「自動起動アプリケーション」にスクリプト(引数なし)を実行するコマンドを追加します。これ、プロセスはXfce、Kde、Gnomeなどに似ており、すべていくつかの標準に従います。仕様。コンソールからもこれを行うことができます。

send-notify注:上記のXが実行されていることを確認しません。あなたのコマンドにはXが必要ないようです。

DEまたは一部のプログラムのテーマ、モードなどを切り替えるために、上記の機能でより多くのコマンドを見つけて追加することができ、コンソールを介して実行できるすべての操作はよく文書化されています。

おすすめ記事