Five themes, and the day that picks them
Wagahai has no light mode and no dark mode. It has the time of day. Left alone
(theme = "auto", the default) it wears one of five themes according to the sun, each built from
traditional Japanese colours and named for one of them — and this page does the same: it is wearing the theme
your clock calls for. The dots at the top right change it.
The day
Without a location the bands are clock hours. With one — location = [35.68, 139.69]
in the config — they follow the sun: civil dawn to sunrise is the dawn, then three hours of morning, the day
until an hour before sunset, dusk until an hour past civil dusk, and the rest is night. A sun that never rises
leaves the whole day night; one that never sets leaves none of it.
The clock's bands. The line is your now.
東雲 shinonome — the clouds of the east at first light
The hour before sunrise. Dark still, but the black has warmed to 黒紅 and the accents are the dawn's own — 曙 peach, 珊瑚 coral, 藤鼠 wisteria grey. Night hands over to it dark to dark, so nothing flashes.

The real client at this hour (wagahai --demo --at …). Wear shinonome on this page →
The palette
#1B141D黒紅 kurobeni, deepened
the ground
#251C28紫黒 shikoku
cards and bars
#4A3850滅紫 messhi, darkened
rules and frames
#ECE4DE灰白 kaihaku
text
#F8F4E6象牙色 zōge-iro
unread, headings
#B1AFCB藤鼠 fujinezumi, lifted
secondary text
#8C7C8A鳩羽鼠 hatobanezumi
hints, day lines
#F19072曙色 akebono-iro
the cursor bar, the unread dot
#F5B1AA珊瑚色 sango-iro
links
#3D2233葡萄 ebi, deep
the selected row
#68BE8D若竹色 wakatake-iro
confirmed
#F8B500山吹色 yamabuki-iro
needs reply, held
#E95464韓紅 karakurenai
failed
#BBBCDE藤色 fuji-iro
an agent's hand
生成り kinari — unbleached cloth
The morning. Warm paper, 消炭 charcoal ink, 朱 vermilion for the one bright thing. For its first half hour it opens tinted toward 桜色 and settles to its own cream — the day's one step from dark to light lands rosy.

The real client at this hour (wagahai --demo --at …). Wear kinari on this page →
The palette
#FBFAF5生成り kinari
the ground
#F3EFE3象牙 zōge, warmed
cards and bars
#D9CFBC亜麻色 ama-iro
rules and frames
#4A4846消炭 keshizumi
text
#2B2523鉄黒 tetsuguro
unread, headings
#686E60利休鼠 rikyū-nezumi, deepened
secondary text
#878A82薄墨 usuzumi, deepened
hints, day lines
#E25C00朱色 shu-iro
the cursor bar, the unread dot
#1E50A2瑠璃色 ruri-iro
links
#F9E5D3shu at 14% over bg
the selected row
#007B43常磐色 tokiwa-iro
confirmed
#A57A30黄土色 ōdo-iro, deepened
needs reply, held
#B7282E茜色 akane-iro
failed
#745399江戸紫 edo-murasaki
an agent's hand
月白 geppaku — moon white
The day. A cool ground with 紺 navy ink and 紅 crimson. The working hours: the most contrast, the least warmth.

The real client at this hour (wagahai --demo --at …). Wear geppaku on this page →
The palette
#EEF5FB月白 geppaku
the ground
#F8FBFD白磁 hakuji
cards and bars
#C1D8E1白藍 shira-ai
rules and frames
#39445A藍鉄 aitetsu, lifted
text
#223A70紺色 kon-iro
unread, headings
#56707E藍鼠 ainezumi, deepened
secondary text
#7A8F97銀鼠 ginnezumi, cooled
hints, day lines
#D7003A紅色 kurenai-iro
the cursor bar, the unread dot
#165E83藍色 ai-iro
links
#EBD3E0kurenai at 14% over bg
the selected row
#007B43常磐色
confirmed
#C96D00蜜柑色 mikan-iro, deepened
needs reply, held
#D3381C緋色 hi-iro
failed
#5654A2桔梗色 kikyō-iro
an agent's hand
褐 kachi — the samurai's victory indigo
Dusk and twilight. Deep indigo with 山吹 gold and 薄紅 pink — the sky an hour either side of sunset.

The real client at this hour (wagahai --demo --at …). Wear kachi on this page →
The palette
#101A33勝色 kachi-iro, deepened
the ground
#172444留紺 tomekon
cards and bars
#2E4063紺鼠 kon-nezumi, darkened
rules and frames
#D5E3EE月白 geppaku, dimmed
text
#EAF4FC月白
unread, headings
#8496AD藍鼠 ainezumi, lifted
secondary text
#60739A紺鼠
hints, day lines
#F8B500山吹色 yamabuki-iro
the cursor bar, the unread dot
#F0908D薄紅 usubeni
links
#30302Cyamabuki at 14% over bg
the selected row
#68BE8D若竹 wakatake
confirmed
#F5E56B刈安 kariyasu
needs reply, held
#E0486B中紅 nakabeni, lifted
failed
#BBBCDE藤 fuji
an agent's hand
濡羽 nureba — a wet crow's wing
The night. Lacquer black, 紫水晶 amethyst ink, 柑子 orange as the one bright accent, 勿忘草 forget-me-not for links.

The real client at this hour (wagahai --demo --at …). Wear nureba on this page →
The palette
#0B0E11呂色 ro-iro (lacquer black)
the ground
#14191E鉄黒 tetsuguro, lifted
cards and bars
#2A3139藍鉄 aitetsu, darkened
rules and frames
#D6D6DB紫水晶 murasaki-suishō, dimmed
text
#EDEDF0紫水晶
unread, headings
#8A929A銀鼠 ginnezumi
secondary text
#5C6670藍鼠 ainezumi
hints, day lines
#F6AD49柑子色 kōji-iro
the cursor bar, the unread dot
#89C3EB勿忘草色 wasurenagusa-iro
links
#2C2419kōji at 14% over bg
the selected row
#98D98E若緑 wakamidori
confirmed
#E6B422金色 kin-iro
needs reply, held
#E0486B紅 kurenai, lifted for dark ground
failed
#A59ACA藤紫 fuji-murasaki
an agent's hand
The drift, and the blush
Inside a band the ground is not quite still. bg and surface take a trace
of amber at the edges of the day and a trace of blue at noon — at most three levels of the 255 either way, a
tenth of one in the minute that carries it, so no frame ever shows the change. The ink, the accents and every
checked contrast do not move.
The morning gets one thing more. The step from the dawn's dark to the morning's paper is the only place the day goes from dark to light, and a cut from black to cream at sunrise is a flashbulb. A crossfade can't fix that honestly — halfway between a dark theme and a light one, text and ground are both grey. So the dawn is its own dark theme, and kinari opens blushed: tinted halfway toward 桜色 sakura-iro at sunrise, settling to its own cream over thirty minutes.
#FDF3F0#FCF5F2#FCF8F4#FBFAF5Halfway to 桜色 is as far as it goes — all the way would take the secondary text under its contrast minimum.
The contract
A theme ships only if it passes a contrast contract, checked at rest, at its warmest, at its
coolest, and — for the morning — in its first blushed minute. wagahai theme-check runs all twenty.
| pair | minimum |
|---|---|
| text and headings on the ground, and on cards | 7 : 1 |
| secondary text, links, text on the selected row | 4.5 : 1 |
| hints; the accent and status glyphs | 3 : 1 |
Passing is necessary and not enough. The first shinonome passed every line and still read as fog: its ground was a mid-dark mauve, and greys sank into it. The numbers said fine; a screenshot beside the night theme said otherwise. It was deepened until it was as dark as the night it follows, and body text went from 11 : 1 to 14 : 1.
Using them
# ~/.config/wagahai/config.toml theme = "auto" # the default: the day picks location = [35.68, 139.69] # optional: the sun's bands instead of the clock's # theme = "nureba" # or pin one, exactly as its file has it
In the client, :theme kachi switches for the session and :theme auto hands it back
to the day; 1–5 pin nureba, kachi, kinari, geppaku, shinonome. A theme is a TOML file
of fourteen colours — put your own in ~/.config/wagahai/themes/ and it is a first-class citizen,
held to the same contract.