A collection of language learning tools and a desktop environment launcher.
cd ~/FU
git clone --recursive https://github.com/squirelworks/LanguageStudentDesk
cd LanguageStudentDesk
python3 LanguageStudentDesk.py # standard library only, nothing to installcd ~/FU/LanguageStudentDesk
git pull
python3 LanguageStudentDesk.pyEach tagged release on the Releases page carries a standalone Desk for Linux (LanguageStudentDesk-linux.tar.gz), Windows (LanguageStudentDesk-windows.zip) and macOS on Apple silicon (LanguageStudentDesk-macos.zip). Python, Tk and every web app are inside. Unpack it and run LanguageStudentDesk (LanguageStudentDesk.exe on Windows); the --browser, --list and --file options below work the same. The builds are unsigned: on Windows choose "More info" → "Run anyway"; on macOS run xattr -dr com.apple.quarantine LanguageStudentDesk on the unpacked folder first. The Desk desktop builds workflow makes them when a release is published, or by hand for an existing tag.
Run the desktop GUI to browse and launch every tool and SquirrelGo app:
python3 LanguageStudentDesk.pyThe Desk groups the tools (Desk tools, SquirrelGo apps), shows what each one does, has a search box (Ctrl+F), and opens tools in your browser from a small local web server on 127.0.0.1, so ?lang= links, fonts and data files work the same on every system. SquirrelGo apps also get an Android APK button that opens the latest download. The server stops when you close the Desk.
Other modes:
python3 LanguageStudentDesk.py --browser # no GUI: open a Desk home page in the browser
python3 LanguageStudentDesk.py --list # print the tools found and exit
python3 LanguageStudentDesk.py --file # GUI, but open tools as file:// pagesIf tkinter is missing (some Linux installs: sudo apt install python3-tk), the Desk falls back to --browser mode.
The menu starts simple: standard modern languages and the core learners. Settings has three levels (Simple, More, Everything) and a Customize list of single switches, such as regional varieties, historical stages and alpha features. A "What's in the app" section lists everything that's turned off and the switch that turns it on. The first run shows a welcome card with a few languages to try. The Desk window, its browser tabs and the Android suite use the same switches, and the Desk remembers them between sessions.
The switches are defined once in the shared language data (squirrel-lang-data, checked out at data/): clone with git clone --recursive, or run git submodule update --init in an existing clone. languages/features.js is generated from it with python3 data/tools/gen_features.py languages/features.js.
Select a tool that supports it and choose a language from the dropdown. This opens the tool with ?lang=<id>. The list comes from languages/*/meta.json plus a few extra ids.
Examples:
character-learner/index.html?lang=japanese→ only hiragana, katakana, kanjicharacter-learner/index.html?lang=klingon→ only pIqaDprogramming-learner/index.html?lang=python→ Python panelresource-learner/index.html?lang=arabic→ Arabic resources- Open without
?lang=→ full multi-language / overview mode
- Klingon (tlhIngan Hol) — Focuses on the pIqaD script with interactive lessons, quizzes, and a Reader section. Stroke order and the checked writing pad are shared with SquirrelGo Klingon.
- Resource Learner — General study resources plus specialized lists for Japanese, Klingon, Arabic, Korean, Chinese, Hindi, Russian, Latin and English (other languages fall back to general).
- Reference Learner — Quick lookup for language facts and notes.
- Translation Learner — Sentence translation checked by meaning, not spelling: into English, into the language, sentence breakdowns, a meaning matrix, and top-1,000 word practice for Japanese, Korean, Chinese, Russian, Hindi, Arabic and Klingon.
- Programming Learner — Programming language courses with syntax, concepts and practice; the full list is in the learner's menu and its README.
- Programming Student Desk — The Programming Learner as its own offline Android app: a home menu lists every course and opens one inside the app. Build the release AAB locally; it is not a GitHub release.
- Legalese Learner — How contract language works: shall and may, herein, notwithstanding, consideration, and the boilerplate at the back. Reading practice, not legal advice.
- Language Learner — A guided path per language: script, first words, grammar, then practice, with progress ticks.
- Grammar Learner — Short grammar lessons with explained drills, per language (most Desk languages; Cherokee, Inuktitut and Manipuri have none yet; English is reference-only).
- Vocabulary Learner — Flashcards, spaced review and Anki export, with decks from
languages/and the SquirrelGo apps. - Language Student Desk (Android) — The Desk learners in one offline Android app: a home menu opens each one in a WebView. Build the debug APK locally; it is not a published release.
- Character Learner — Multi-script trainer: kana, the full Jōyō kanji (2,136), HSK 1–6 hanzi (1,799), education hanja (1,800), pIqaD and every SquirrelGo Alphabets script (29), each with stroke-order animation and a writing pad that checks each stroke. Kanji Lessons and Topics come from SquirrelGo Kanji, pIqaD strokes from SquirrelGo Klingon, and the Alphabets scripts, strokes and sounds from SquirrelGo Alphabets. Language-scoped via
?lang=. Includes on-yomi groups. - SquirrelGo Kana — Hiragana and katakana trainer: lessons by sound row, charts, quizzes, flashcards, writing pad, audio. Web + Android (download APK).
- SquirrelGo Bopomofo — Taiwan Zhuyin (注音): initials, medials, finals, tone marks, chart, quizzes and flashcards. Web + Android (release AAB built locally; not on the rolling APK pre-releases).
- SquirrelGo Alphabets — Latin, Greek, Cyrillic, Armenian, Georgian, Hebrew, Arabic, Devanagari, Bengali, Gurmukhi, Gujarati, Odia, Meetei Mayek, Tamil, Telugu, Kannada, Malayalam, Sinhala, Burmese, Thai, Lao, Khmer, Tibetan, Hangul, Ethiopic, Tifinagh, Cherokee, Inuktitut syllabics and Mongolian in one trainer: animated stroke order, a writing pad that checks each stroke, IPA and recorded sounds for every letter, a Hangul syllable builder and an Arabic letter-forms table. Web + Android (download APK).
- SquirrelGo Klingon — Learn to read and write pIqaD, the Klingon alphabet: animated stroke order for every letter and numeral, a writing pad that checks each stroke, IPA and recorded sounds for every letter and word, quizzes including whole-word reading, flashcards, a romanization-to-pIqaD converter and a pronunciation guide. Web + Android (download APK).
- SquirrelGo Kanji — TenguGo-style kanji trainer for modern Android (lessons, topic/JLPT quizzes, dictionary, on-yomi groups, stroke-order animation from KanjiVG). Android (download APK).
- SquirrelGo Japanese-English Dictionary — Offline Japanese–English dictionary (JMdict, KANJIDIC2, radicals, example sentences); replacement for the discontinued JED app. Android (download APK).
- SquirrelGo Phrasebook — Offline Japanese phrasebook with 25 packs and 1,055 phrases (all with audio): DLI survival topics, service-member packs, and everyday packs for travel, work and living in Japan; search, favorites, flashcards. Web + Android (download APK).
- SquirrelGo Orthodox Bible — Offline Orthodox study Bible: Septuagint canon and book order, 73 text packs and 33 commentary packs, any verse side by side in other languages (English, Greek, Russian, Church Slavonic and more), patristic commentary per verse, lectionary, bookmarks, highlights and notes. Public-domain texts only. Web + Android (download APK).
The character trainers (Kana, Alphabets, Kanji, Klingon) live under SquirrelGo-Apps/squirrelgo-characters/.
The Desk tools and the SquirrelGo apps share one copy of their data and code. Code every app ships (the suite sheet, the stroke player, the writing pad) lives in SquirrelGo-Apps/shared/. After changing it, or after adding a script to SquirrelGo Alphabets, run:
SquirrelGo-Apps/tools/sync-shared.sh # copy shared files into the apps, update Character Learner's script list
SquirrelGo-Apps/tools/sync-shared.sh --check # what CI runsThe check also fails when an app in shared/suite.js is missing from the Desk launcher, sits in the wrong group, or doesn't point its APK at the latest release.
Every SquirrelGo app's APK is attached to each platform release on the Releases page; the links below always fetch the latest one. Open a download link on your phone, allow "Install unknown apps" for your browser, and install. Android 7.0 or newer.
| App | Download | Release |
|---|---|---|
| SquirrelGo Kana | SquirrelGoKana.apk | latest release |
| SquirrelGo Alphabets | SquirrelGoAlphabets.apk | latest release |
| SquirrelGo Klingon | SquirrelGoKlingon.apk | latest release |
| SquirrelGo Kanji | SquirrelGoKanji.apk | latest release |
| SquirrelGo Japanese-English Dictionary | SquirrelGoJapaneseDictionary.apk | latest release |
| SquirrelGo Phrasebook | SquirrelGoPhrasebook.apk | latest release |
| SquirrelGo Orthodox Bible | SquirrelGoOrthodoxBible.apk | latest release |
Shared translation and language logic lives in squirrelator.
LSDesk consumes it for learning tools; squirrelator owns the actual language transformations (human ↔ code, code ↔ code, pseudocode, etc.).
from squirrelator import translate
result = translate("print hello", from_lang="english", to_lang="python")See languages/ for the Desk data layer: 36 languages with meta.json, loaded by the learners through lsd-lang.js. The language menu is sorted by English name. Most ship grammar (6 lessons / ~30 drills; Japanese 17/71, Klingon 10/26), vocab decks and reference cards; Cherokee, Inuktitut and Manipuri still lack grammar packs, and English is the base language (reference only). Shared CJK characters live in languages/cjk/. Run python3 languages/build_registry.py after changing anything under languages/.
See LSD-EXPANSION.md for the recursive expansion laundry list (doctrine, priority waves, seams, don’ts) for agents growing Desk + SquirrelGo, and LSD-EXPANSION-NEXT.md for the next round.