Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DayWidget

The day of the week, painted into your wallpaper. Uses color theory and pixel variance logic to find best color and position on the Wallpaper AUTOMATICALLY!
A single-file Windows desktop widget. Lighter than RAINMETER SKIN. No installer, no dependencies, no window.

platform framework dependencies size license

DayWidget rendering TUESDAY on the desktop wallpaper DayWidget rendering TUESDAY on the desktop wallpaper


What it is

DayWidget writes today's day name onto your desktop. Not in a window — inside the desktop itself, as a child of the Windows wallpaper host. That one design decision gives it every property you actually want from a desktop widget:

  • It is behind every window, always. It can never cover your work and never steals focus.
  • It survives Win+D and "Show desktop", because as far as Windows is concerned it is part of the desktop.
  • It has no window chrome, no taskbar button, no Alt-Tab entry.
  • Clicks pass straight through it — except on the text itself, which is interactive.

And it is self-styling. Point it at a folder of fonts, change your wallpaper, and it re-reads the wallpaper and re-decides how it should look.

DayWidget re-picking font, size, colour and position after a wallpaper change

Features

Wallpaper-aware typography On every wallpaper change it re-picks the font, the size, the colour and the position — deterministically seeded from the wallpaper itself, so the same wallpaper always gets the same treatment.
Smart placement Builds summed-area tables over a downscaled copy of your wallpaper and scores every candidate position on local busyness, contrast, colour variance and distance from the visual centre of mass. It puts the text in quiet space.
Automatic contrast Samples the mean colour under the chosen region and tunes the text colour to hit a ~4.5:1 contrast ratio against it. Falls back to your Windows accent colour.
Click to reshuffle fonts Click the text and it cross-fades into the next font. The swap happens while invisible, so you never see the reflow.
Any font, no install Drop in .ttf, .otf, and base64-encoded .b64 fonts in the same folder with the .exe and it will add them to the shuffle.
Multi-monitor Per-monitor wallpaper geometry, including Fill / Fit / Stretch / Tile / Span.
Light footprint Single 32-bit-safe .cs file, ~90 KB compiled, no runtime beyond what Windows ships. Analysis buffers are freed and the working set trimmed after every adaptation.

Install

  1. Grab DayWidget.exe from the latest release — it is also committed at the repo root if you cloned instead.
  2. Put it in its own folder — it writes daywidget.ini next to itself.
  3. Drop one or more font files (.ttf / .otf / .b64) beside it, or in a Fonts subfolder.
  4. Run it.

To start it with Windows, press Win+R, type shell:startup, and put a shortcut there.

Usage

Action Result
Left-click the text Fade to the next font
Right-click the tray icon Menu: font mode, reload, restart, open config, exit
Change your wallpaper Everything re-adapts automatically, ~1 s later
Edit daywidget.ini Applied within 250 ms — no restart needed

Clicking the text cross-fades to the next font

Configuration

daywidget.ini is created on first run and re-read live. Every key is optional.

; ---- typography ----
fontMode=random        ; random | <exact font family name>
scale=1.0              ; multiplier on the auto-chosen size (0.2 - 8.0)
tracking=0.18          ; letter spacing, in em (-0.2 - 2.0)
uppercase=1
text=auto              ; auto = today's day name, or any literal string

; ---- colour ----
colorMode=1            ; 1 = sample the wallpaper, 0 = Windows accent
accentLift=0.45        ; how far to lift a dark accent toward legibility
opacity=1.0            ; 0.05 - 1.0, applied at the window level

; ---- shadow ----
shadowAlpha=150        ; 0 disables the shadow entirely
shadowOffsetY=6
shadowBlur=10          ; 0 - 60

; ---- placement ----
autoPlace=1            ; re-place on every wallpaper change
align=0                ; 0 left | 1 centre | 2 right (manual fallback)
marginX=28
bottomMargin=2
monitor=0              ; 0 = primary, 1..n = specific display
useFullBounds=0        ; 1 = ignore the taskbar and use the whole screen

; ---- misc ----
tray=1
debug=0                ; writes daywidget-debug.log next to the exe

Delete placedWall= to force a fresh placement decision on the current wallpaper.

Build from source

No SDK, no NuGet, no project file. Windows already ships the compiler:

%WINDIR%\Microsoft.NET\Framework64\v4.0.30319\csc.exe /target:winexe /out:DayWidget.exe src\DayWidget.cs

Or just run build.cmd.

The source targets C# 5 deliberately, so it compiles with the in-box compiler on any Windows 10/11 machine with zero tooling installed.

How it works

The short version: a colour-keyed child window inside Explorer's wallpaper host, with the antialiased text composited against a sample of your wallpaper in software, per pixel.

The long version — including why the obvious approaches all fail, and the three bugs that drove the current design — is in docs/ARCHITECTURE.md. Worth a read if you are doing anything with layered windows or WorkerW.

Troubleshooting

Symptom Cause / fix
Nothing appears No fonts in the folder. Add a .ttf / .otf, or set fontMode= to an installed family.
Text is hard to read colorMode=1 needs a wallpaper it can sample. Try colorMode=0, or nudge accentLift.
Placement looks wrong Delete the placedWall= line and it re-decides. Set autoPlace=0 and use align / marginX / bottomMargin to place it by hand.
Hidden behind a third-party wallpaper app Wallpaper Engine, Lively and friends replace the wallpaper host. DayWidget cannot render inside those.
Edges look hard, no shadow It could not read your wallpaper, so it fell back to crisp edges rather than showing a coloured fringe. Check debug=1 for compose: ... (no wallpaper -> crisp fallback).
Want a log Set debug=1, reproduce, and attach daywidget-debug.log to an issue.

Contributing

Issues and PRs welcome — see CONTRIBUTING.md. If you are reporting a visual bug, a screenshot plus daywidget-debug.log makes it ten times easier to fix.

License

MIT — Copyright (c) 2026 Hotshot. Fonts and wallpapers shown in the screenshots belong to their respective authors and are not part of this project.

About

No description, website, or topics provided.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages