Skip to content

ReturnRei/CustomWOTD

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Vibe disclaimer

100% vibed

Custom Word of the Day

A from-scratch macOS screensaver that shows a rotating triplet — primary, secondary, tertiary — pulled from a CSV.

Built to replace Apple's Word of the Day screensaver. Recent security measures made it hard to resign and "tamper with" the integrity of Apple screensavers.

I use it to learn Japanese vocab.

The kit deliberately uses the names primary / secondary / tertiary instead of kanji / kana / meaning. Any triplet works:

Use case Primary Secondary Tertiary
Japanese vocabulary kanji reading meaning
English vocabulary headword pronunciation definition
Korean vocabulary hangul romanization meaning
Code review prompts title summary detail

You don't have to fill the three types because of optional vars.

Build & install

Requirements: Xcode 15+ (or matching Swift toolchain) on macOS 13 or later.

scripts/import_csv.sh Samples/sample.csv      # produces build/wordlist.json
scripts/build_saver.sh                         # produces build/CustomWordOfTheDay.saver
scripts/install.sh                             # copies the .saver into ~/Library/Screen Savers/

scripts/install.sh opens the Wallpaper / Screen Saver pane at the end — pick Custom Word of the Day from the list.

Verify without taking over your screen

xcrun swift scripts/render_preview.swift build/CustomWordOfTheDay.saver /tmp/preview.png
xcrun swift scripts/render_grid.swift   build/CustomWordOfTheDay.saver /tmp/grid.png

These load the bundle, instantiate the ScreenSaverView subclass offscreen, tick a few frames, and write a PNG so you can eyeball the layout without activating the live screensaver.

Port to iOS / other Apple platforms

The screensaver is macOS-only — that's a platform limitation, not a code limitation. WordOfTheDayKit has no AppKit / UIKit imports, so it compiles unchanged into an iOS target. To build an iOS app that shows the same content:

  1. Add WordOfTheDayKit to your iOS project (the Package.swift already lists .iOS(.v16) as a supported platform).
  2. Build your own SwiftUI / UIKit view that reads from JSONWordList or CSVWordList and renders with EntrySelector.

The boundary is intentional: the kit owns the data and selection logic, the platform owns the rendering.

CSV format

Three columns, UTF-8, no header row required:

猫,ねこ,cat
書き初め,かきぞめ,"first calligraphy of the new year, traditionally Jan. 2"

Fields with commas, quotes, or newlines must be quoted; embed quotes by doubling them ("").

About

Tweaks to Word of the day screensaver on Macos to make your own lists

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages