darkman を使おう

  1. 日付2026年2月17日 8:21
  2. 更新 2026年2月20日 21:26
  3. 説明なんて滑らかな遷移なんだ...!
  4. 分類 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 です。具体的にはこんな感じの環境で作業を行いました。

ミニマルな 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 avahi

Avahi は GeoClue の依存関係です。忘れずにインストールしましょう。

systemd のユニットの起動もされてなかったらしましょう。

ただしここで1つ注意点があり、上のリンクの ArchWiki で示されている通り、Avahi には systemd-resolved と機能的な被りがあるため、systemd-resolved の機能を部分的に無効にする必要があります。

sudoedit /etc/systemd/resolved.conf
- #MulticastDNS=yes
+ MulticastDNS=no

sudoedit は自分のお気に入りのテキストエディタと設定で 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.yaml
usegeoclue: true

GeoClue はデフォルトでは使わない設定のため、明示的に有効にしないといけません。

コードを書こう

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.1

Paru がインストールできたら、Darkly を入れましょう。

paru -S darkly-bin

PKGBUILD を読み(どこからダウンロードしてるかなど)問題なさそうなら y キーを押して続行(ページャを開いていたら Escq キーで脱出してから)。すると…

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 の使い方を紹介してる記事は少なかったので、この素晴らしさをもっと多くの人にも知ってもらたくて、あと単純に記事が書きたかったので書いてみましたが、いかがだったでしょうか?

この記事が誰かの役に立てたら幸いです!

おまけ

こんな感じに変わります:

終わり!