A KDE Plasma 6 plasmoid that shows one Japanese word on a configurable schedule, either from a curated bundled list or from an Anki deck through AnkiConnect.
This is the vocab widget setup used in skerritt.blog/my-moe-desktop-rice-2026/.
The seed list is intentionally hand-picked around three themes:
funny: playful, memorable, or quirky wordsconcept: abstract or culturally interesting ideasobject: everyday concrete nouns
The current seed file contains 1380 interleaved entries so the schedule stays varied instead of clumping similar words together.
This repo is safe to share as-is. It does not require API keys, cloud credentials, or external services. The only optional integration is a local AnkiConnect instance on http://127.0.0.1:8765.
kpackagetool6 --type Plasma/Applet --install packageIf it is already installed:
python scripts/build_words_bundle.py
kpackagetool6 --type Plasma/Applet --upgrade packageTo remove it:
kpackagetool6 --type Plasma/Applet --remove io.github.bee.jpnwordadaypackage/contents/data/words.json is the source lexicon, and the plasmoid reads the bundled package/contents/data/words.js copy at runtime.
Each bundled entry is shaped like:
{
"id": "concept-001",
"category": "concept",
"kanji": "生きがい",
"kana": "いきがい",
"meaning": "purpose in life"
}The widget picks the entry by your configured local time interval. The default schedule is every hour, and the widget settings let you switch to presets like every 10 seconds, 10 minutes, 10 hours, or every day.
In the widget settings, switch Word source to Anki deck, then choose:
Note type:KikuorLapisDeck: selected from AnkiConnect based on the chosen note typeAnki fields: the note type must exposeExpression,ExpressionReadingorExpressionFurigana, andMainDefinition(withGlossaryas fallback)
The plasmoid talks to Anki through AnkiConnect at http://127.0.0.1:8765. If AnkiConnect is unavailable, no matching deck is found, or the selected deck does not return usable notes, the widget falls back to the local word list automatically.
If AnkiConnect rejects the plasmoid origin and the error mentions NULL, add NULL to AnkiConnect's webCorsOriginList.
Left-clicking a local word opens the current Japanese term in Jisho. Left-clicking an Anki-backed word opens that note in Anki's Browse window.
If you edit words.json, rebuild the runtime bundle before upgrading:
python scripts/build_words_bundle.py