WezTermで日替わりフォントを設定する

9211 ワード

動機

最近は、IBM Plex Sans JPモリサワBIZ UDなど、フリーの日本語フォントが随分増えてきました。選択肢が増えるのはいいことですが、そうなるとどのフォントを使えばいいのか迷ってしまいます。

それならばいっそのこと、日替わりでフォントが変更されるように設定してしまえ、と思い付いたのでやってみました。Luaで設定が書けるのでできちゃうんです。そう、WezTermならね。

設定

というわけで設定方法です。

wezterm.lua
local function append_table(table, other)
	for k, v in pairs(other) do
		table[k] = v
	end
end

local font_list = {
	{
		name = "PlemolJP",
		setting = {
			font = wezterm.font("PlemolJP Console", { weight = "Medium" }),
		},
	},
	{
		name = "UDEV Gothic",
		setting = {
			font = wezterm.font("UDEV Gothic"),
		},
	},
	{
		name = "Fira Code",
		setting = {
			font = wezterm.font_with_fallback({
				"FiraCode Nerd Font",
				"UDEV Gothic",
			}),
		},
	},
}
local date = os.date("*t")["yday"]
local today_font = font_list[(date % #font_list) + 1]

local settings = {
	launch_menu = {
		{
			label = "Font: " .. today_font["name"],
			args = { "nvim", "~/.config/wezterm/wezterm.lua" },
		},
	},
}

append_table(settings, today_font["setting"])

return settings

補足

大したことはやってないですね。 font_listに使いたいフォントを入れておきます。nameはフォントを識別するための任意の名前です。settingはあとでweztermの設定にマージされるので、font_sizeなんかを一緒に設定しておくことも可能です。

あとはここの+1のところがミソで、Luaの配列インデックスは1始まりなので、これがないとある日突然(割った余りが0になった日に)エラーになります。

local today_font = font_list[(date % #font_list) + 1]

実際に使われているフォントがどれなのかわからなくなってしまうので、今日のフォントをLauncher Menuに表示するようにしています。

	launch_menu = {
		{
			label = "Font: " .. today_font["name"],
			args = { "nvim", "~/.config/wezterm/wezterm.lua" },
		},
	},

私の使っている設定ファイル全体はこちらにあるので参考までにどうぞ。

https://github.com/hiterm/dotfiles/blob/ee0bbea68d6d4f7e8cdc687d19c717cdd1402e58/other/wezterm.lua

最後に

やってみると毎日気分が変わって面白いです。

また、WezTermについてはこちらの記事もどうぞ。私がWezTermを使うきっかけになった記事です。