darkman を使おう
- 日付・2026年2月17日 8:21
- 更新 ・ 2026年2月20日 21:26
- 説明・なんて滑らかな遷移なんだ...!
- 分類 ・ Linux
2026/02/20 21:26 微調整
この記事では darkman というライトとダークモードの遷移をめっちゃいい感じに出来るツールを紹介します!
使い方はとてもシンプルなのですが、ちゃんと使えるようになるまで個人的にちょっと手こずったため、これから使ってみたいと思う方がいましたら、そのセットアップの参考になればと思います。
私は Arch Linux に KDE Plasma を使っています。ターミナルは WezTerm の Nightly 版を、テキストエディタには Neovim を使っています。インストールコマンドやほか細々としたところに違いがあると思いますが、ご了承ください。
darkman 自体は XDG デスクトップポータル という共通の概念に指示をするようなので、KDE Plasma に限らず GNOME や各種 WM などでも使用することが出来そうです。ちなみに作者の WhyNotHugo さんは dotfiles を見る限り(私は他人が公開してる dotfiles に偶然発見した時はどんな感じなのかなと見るのが好きです)i3 という WM を使っているようです。
以下は作業時点での私の fastfetch です。具体的にはこんな感じの環境で作業を行いました。

前置きが長くなりましたが、それでは早速インストールから始めましょうか!
インストール
Arch Linux では Extra にあるため、AUR は必要ありません。備え付けの Pacman で入れましょう。
sudo pacman -S darkmanその他の環境では README の方が詳しいのでそちらをご覧ください。
次に systemd のユニットを起動します。
systemctl --user enable --now darkman.serviceちゃんと起動できたかどうかを確認。
systemctl --user status darkman初めて試してみた時はこれで終わりだと思っていましたが… 動いてくれず…
追加で GeoClue を入れましょう。darkman に朝か夜かを判断させるために必要だからです。ちなみに GeoClue は Arch Linux では今のところ 壊れている ようですが、darkman の動作に問題はありませんでした。
sudo pacman -S geoclue avahiAvahi は GeoClue の依存関係です。忘れずにインストールしましょう。
systemd のユニットの起動もされてなかったらしましょう。
ただしここで1つ注意点があり、上のリンクの ArchWiki で示されている通り、Avahi には systemd-resolved と機能的な被りがあるため、systemd-resolved の機能を部分的に無効にする必要があります。
sudoedit /etc/systemd/resolved.conf- #MulticastDNS=yes
+ MulticastDNS=nosudoedit は自分のお気に入りのテキストエディタと設定で root 権限のファイルを編集するための便利なコマンドです。
私は EDITOR=nvim で Neovim を指定していますが、デフォルトでは vi つまり Vim が起動すると思います。また、普段は VSCode や Zed などを使っていて、操作方法がわからない方もいるかと思います。基本的な使い方は以下のページを参照してください。
sudo systemctl restart systemd-resolved再起動し、2つのユニットを有効にします。
sudo systemctl enable --now geoclue
sudo systemctl enable --now avahi-daemon忘れてるところが無ければこんなところでしょうか。将来の自分のためにちゃんとメモを随一残しながら進めてたのでこれで多分大丈夫です!
まだ記事を書いている途中ですが、忘れてたのがありました。darkman の設定ファイルです。
nvim ~/.config/darkman/config.yamlusegeoclue: trueGeoClue はデフォルトでは使わない設定のため、明示的に有効にしないといけません。
コードを書こう
systemctl --user status darkman状態を確認してみると(ログをメモしてなかったので具体的なやつは出せないですが)動かすものが存在しないよという旨のエラーがあると思います。
確かに darkman がせっかく教えてくれるのにそれに応える人がいなかったら悲しいので、何かライトとダークモードの判別をする時の役割を渡しましょう。
以下は私の plasma-iro.sh という実際に使っているコードです。2日くらいかけてちょこちょこ継ぎ足していって作り上げたいい感じの設定なので是非試してみてください。
KDE Plasma でグローバルテーマではなく色彩のみをライト・ダークモードによって、それぞれのテーマに変更するコードです。
#!/usr/bin/env sh
# KDE Plasma の色彩だけを変更する
case "$1" in
dark) THEME=Darkly ;;
light) THEME=BreezeLight ;;
default) exit 1 ;;
esac
# https://stackoverflow.com/a/76509392/27518144
unset DISPLAY && QT_QPA_PLATFORM=offscreen plasma-apply-colorscheme "$THEME"パスは ~/.local/share/darkman/plasma-iro.sh に置いてください。
参考
darkman を再起動して、状態を確認してください。問題なければ次のコマンドを試してみましょう。
systemctl --user restart darkmanが、その前におそらくほとんどの人は上のコードで指定してるダークモードで使う Darkly というテーマを入れてないと思うのでインストールしましょう。これには AUR が必要です。おすすめは Paru です。
● paru --version
paru v2.1.0 - libalpm v16.0.1Paru がインストールできたら、Darkly を入れましょう。
paru -S darkly-binPKGBUILD を読み(どこからダウンロードしてるかなど)問題なさそうなら y キーを押して続行(ページャを開いていたら Esc や q キーで脱出してから)。すると…
darkman set light # ライトモードにできる!
darkman set dark # ダークモードにできる!いい感じ!あとはこれから起動時に darkman がライトかダークかをおそらく時間帯かなんかで決めて設定してくれるので、わざわざ手動で変えなくても目を守れます!
ターミナルとテキストエディタ
私は WezTerm と Neovim をそれぞれ使ってるのですが、これらには別途テーマを渡す必要があります。また、今までの1種類とは違い、ライトとダークモードのそれぞれを選ぶ必要があります。
せっかくなので、全部を変えようと思い、まずは公式ドキュメントに全種類載ってる WezTerm から変えることにしました。
時間をかけて全種類を頑張ってスクロールした果てに…
Zenwritten!1番最後の Z のページにあった、これに決めました。Light と Dark のどちらもあって、Neovim のプラグインもあって、とてもいいです。
Neovim も一緒に決まりました。次は設定から反映させます。
WezTerm では ドキュメント に書いてあるように設定にこう書けば終了なのですが、Neovim は追加の有志による有難いプラグインも必要です。
local function get_appearance()
if wezterm.gui then
return wezterm.gui.get_appearance()
end
return "Dark"
end
local function scheme_for_appearance(appearance)
if appearance:find("Dark") then
return "zenwritten_dark"
else
return "zenwritten_light"
end
end
config.color_scheme = scheme_for_appearance(get_appearance())こちらは注意書きにも書いてありますが、Go が必要です。mise 等で入れましょう。
mise use -g go@latestそして、~/.config/nvim/lua/plugins/darkman.lua 等のファイル名で…
return {
"4e554c4c/darkman.nvim",
event = "VimEnter",
build = "go build -o bin/darkman.nvim",
opts = {
change_background = true,
send_user_event = false,
colorscheme = nil, -- can be { dark = "x", light = "y" }
},
}次に Zenwritten を ~/.config/nvim/lua/plugins/zenbones.lua 等のファイル名で…
return {
"zenbones-theme/zenbones.nvim",
dependencies = "rktjmp/lush.nvim",
lazy = false,
priority = 1000,
config = function()
vim.g.zenbones_darken_comments = 45
vim.cmd.colorscheme("zenwritten")
end,
}そして、Neovim を再起動して… 多分行けます!
最後に
終わりのほうは適当になってしまいましたが、私の試した方法はこんな感じです。
darkman の使い方を紹介してる記事は少なかったので、この素晴らしさをもっと多くの人にも知ってもらたくて、あと単純に記事が書きたかったので書いてみましたが、いかがだったでしょうか?
この記事が誰かの役に立てたら幸いです!
おまけ
こんな感じに変わります:
終わり!