gnome

オートライト/ダークモード

Ubuntuの設定([設定]→[外観] → [ウィンドウテーマ] → [ライト/標準/ダーク])の[ウィンドウテーマ]に関して、「ライト」モードと「ダーク」モードを自動的に切り替える方法を見つけた人はいますか?

毎朝または夕方に設定を掘り下げることは本当に苦痛です。日没時に自動的に「ダーク」モードに切り替え、日の出時に自動的に「ライト」モードに切り替えることができると便利です。


GNOMEの場合、このシェル拡張機能が存在します:Night Theme Switcher

かなり多くのオプションがあり、何も設定しなくても、すでに箱から出しても動きますが、設定も直感的です

Screenshot of the Schedule tab

Screenshot of the GTK theme tab




テーマを変更するためのターミナルコマンドは

gsettings set org.gnome.desktop.interface gtk-theme Yaru-dark

はヤル気のあるテーマで、そして

gsettings set org.gnome.desktop.interface gtk-theme Yaru-light

は、「Yaru-light」のテーマで。

さて、ジョブのスケジューリング(基本的に特定の時間に繰り返し何かを実行すること)には、cron-jobというものがあります。つまり、指定した時間にこれらのコマンドを実行するようにcron-jobを書くことができます(午後9時にダークテーマに変更し、午前6時にライトテーマに変更するようなものです)。

script.sh という名前のファイルに以下を追加します。

#!/bin/bash
echo export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS > lightscript.sh
echo export DBUS_SESSION_BUS_ADDRESS=$DBUS_SESSION_BUS_ADDRESS > darkscript.sh
echo "gsettings set org.gnome.desktop.interface gtk-theme Yaru-light" >> lightscript.sh
echo "gsettings set org.gnome.desktop.interface gtk-theme Yaru-dark" >> darkscript.sh
chmod 755 lightscript.sh
chmod 755 darkscript.sh

currenttime=$(date +%H:%M)
if [[ "$currenttime" > "21:00" ]] || [[ "$currenttime" < "06:00" ]]; then
  ./darkscript.sh
else
  ./lightscript.sh
fi

ファイルを実行可能な状態にする。

chmod 755 /path/to/script.sh

or:

chmod +x /path/to/script.sh

gnome-session-properties を実行します。右側の[追加]をクリックし、 script.sh ファイルを参照して選択し、名前とコメントを付けて保存して、新しいスタートアッププログラムを追加します。これにより、GUIからログインするたびに lightscript.shdarkscript.sh を作成するようにGNOMEに指示されます。

次のコマンドを使用して、ジョブ(テーマの変更)を crontab に追加します。

crontab -e

適切なエディタを選択するか、 /var/spool/cron/crontabs に移動して、ユーザー名でファイルを編集できます。この方法でファイルにアクセスするには、 sudo 権限が必要です。次の2行を追加します( /path/to/ を実際のパスに置き換えます)。

0 6 * * * /path/to/lightscript.sh
0 21 * * * /path/to/darkscript.sh

と書いてあるだろう。

crontab: installing new crontab

コマンドを終了した後 で確認することもできます。

crontab -l

これでうまくいくはずです。上記の2行は、毎日午前6時に darkscript.sh lightscript.sh を実行するように cron に指示しています。

ただ足すのではなく、この回り道をするのです。

0 6 * * * gsettings set org.gnome.desktop.interface gtk-theme Yaru-light

DBUS_SESSION_BUS_ADDRESS 変数を正しく設定する必要があるため、crontab crontab