Skip to content

Android app

Get it on GitHub Get it on Obtainium Get it on Google Play

wuDict searches .mdx, .ifo, .slob, .dsl, .bgl, .zim and .wudict.md dictionaries on the phone. The app runs the wudict server on the phone's loopback address and shows its pages; network use is listed in the Privacy Policy.

Requires Android 8.0 or later on a 64-bit ARM (arm64) device.

Builds

FOSS build (GitHub, Obtainium) Google Play build
Dictionary folder Internal storage → Dictionaries none: dictionaries are imported into the app
Storage permission All files access none
Reachable from other devices (testing) optional, in Settings no

Install the FOSS build

  1. Download wudict-android-arm64-foss-<version>.apk from the releases page.
  2. Open it from the file manager or the download notification. Android asks once to allow Install unknown apps for that app.
  3. On first start, choose Grant access, then turn on All files access. With Later the app starts without dictionaries and asks again on the next start.

Add dictionaries

FOSS build

Copy the dictionary files to Internal storage → Dictionaries with a file manager, over USB, or with adb push. Subfolders are read. Then ☰ → folder summary → Rescan folders.

Copy every file of a dictionary:

Format Files
MDict *.mdx, and *.mdd if present
StarDict *.ifo, *.idx, *.dict or *.dict.dz, *.syn if present
Aard 2 *.slob
Lingvo DSL *.dsl or *.dsl.dz, and *.dsl.files.zip if present
Babylon *.bgl
ZIM *.zim, or every part of a split archive: *.zimaa, *.zimab, …

A subfolder named by a language code, such as es/, sets the language of the dictionaries in it, which lemmatization needs when a dictionary declares none (language detection).

Google Play build

On first start, Import dictionaries → Choose folder copies a folder's dictionaries into the app, then offers to delete the originals. Dictionaries in Android/data/com.legbehindneck.wudict/files/Dictionaries on a microSD card are read without importing.

Both builds

Share a dictionary file, an archive or a link to wuDict, or open one with wuDict: the Add dictionaries dialog lists what it contains and installs the ones you tick. The setup page's Add dictionaries does the same for a file or a pasted link.

Look up a word from another app

  • Text selection menu: select a word; the menu shows wuDict next to Copy.
  • Share menu: Share → wuDict, for apps without the selection menu entry or for a longer passage.
  • A reading app's dictionary button: see the table below.
  • A wudict://lookup?q=word link: from automation apps, note apps and scripts.

The lookup opens in a floating window. Back, or a tap outside it, closes it; it is not listed in Recents. Settings → Look up in the full app opens the full app instead, per source.

from Termux or Tasker
am start -a android.intent.action.VIEW -d "wudict://lookup?q=phubbing"

The link also takes mode=exact|prefix|fts|wildcard, dict=<name>, and full=1 (full app) or full=0 (floating window). In a wildcard query, write ? as %3F.

Reading apps

Reader What to choose
Moon+ Reader ColorDict3 (listed as ColorDict/BlueDict/GoldenDict), Lingvo, Fora or YunCi; or Customized, with the URL wudict://lookup?q=%s; or wuDict from its list of installed apps
ReadEra wuDict, from its list of dictionary and translator apps
Librera Reader wuDict, from its dictionary list; it is listed more than once, and any of the entries works
FBReader ColorDict 3, ABBYY Lingvo or Dictan
KnownReader ColorDict new / GoldenDict (minicard) for the popup, ColorDict new / GoldenDict for the full app; Aard 2 and Dictan also work, even when listed as not installed
Prestigio eReader ColorDict or ABBYY Lingvo, then wuDict
Readest, Book's Story, Lithium, Aldiko wuDict; these list the apps of the selection menu
KOReader see below
CoolReader ColorDict new / GoldenDict, Aard 2 Dictionary or Dictan
Kindle, Google Play Books, Kobo none: they offer no outside dictionary

If the app a reader names (GoldenDict, Aard2, Lingvo, Fora, QuickDic, YunCi, Dictan) is also installed, Android asks which app to use the first time; choose wuDict and Always.

KOReader reads its list of outside dictionaries from a file you can replace. Create koreader/dictionaries.lua in internal storage:

koreader/dictionaries.lua
return {
    { "wudict", "wuDict", false, "com.legbehindneck.wudict", "search" },
}

The file replaces KOReader's built-in list, so add back any dictionary app you still use. Then, in KOReader: Dictionary settings → check Use external dictionary → Dictionary: wuDict.

Settings

Long-press the app icon → Settings.

Section Settings
Look up in the full app per source: text selection menu, share menu, a reading app's dictionary button, links and automation
Screen what fills the screen edges (margin colour), which system bars hide while you read
Access Only this app may change your dictionaries: other apps on the phone can look words up but not import, index, remove or change settings
Advanced uncompressed storage, memory one search may use, memory for dictionaries not indexed, dictionaries indexed at once, server port; FOSS build: Reachable from other devices (testing only)

Files

File types Location
Dictionaries, FOSS build Internal storage → Dictionaries
Imported dictionaries, settings, library, lemma data Android/data/com.legbehindneck.wudict/files

Uninstalling the app deletes Android/data/com.legbehindneck.wudict; Internal storage → Dictionaries remains. Android 11 and later hide Android/data from other file managers: reach it over USB (File transfer) or with adb pull and adb push. The dictionary panel and Settings cover the usual settings, so wudict.toml rarely needs editing; all keys are in Configuration.

Remove dictionaries

☰ → the dictionary's file row (e.g. Oxford.mdx) → 🗑 Remove…. The file row shows the disk space the dictionary uses. See Remove a dictionary.

Battery and memory

  • While the app is not visible, the server uses one CPU core, starts no new indexing, and closes the dictionaries it can reopen; indexed dictionaries stay open. Indexing, downloads and rebuilds already running continue in a foreground service with a notification.
  • Android memory defaults are lower than on a desktop: MEMORY_LIMIT is 1/16 of the device's RAM (192–384 MiB), PREVIEW_MEMORY a third of it, SEARCH_MEMORY equal to it, and MORPH_CACHE 1.
  • The keyboard hides when you scroll an article.

Differences from the desktop

Desktop Android
Dictionary folders any, set on the setup page FOSS: Internal storage → Dictionaries; Play: imported
Speex .spx audio -cgo builds; -purego with speexdec built in
Browser extension yes no; the text selection menu replaces it
Command line yes no
Lemma data Lemmatization page or wudict lemmas Lemmatization page

Next

Search