AyanDict 3.0.0 Released

Lobsters Hottest Products

Summary

AyanDict 3.0.0, a cross-platform desktop dictionary application based on Qt and written in Go, has been released. It supports the StarDict dictionary format and is available for Linux, Windows, and macOS.

<p><a href="https://lobste.rs/s/mjbwfn/ayandict_3_0_0_released">Comments</a></p>
Original Article
View Cached Full Text

Cached at: 09/02/26, 06:21 AM

ilius/ayandict

Source: https://github.com/ilius/ayandict

AyanDict

A simple cross-platform desktop dictionary application based on the Qt framework, written in Go, that uses the StarDict dictionary format.

AyanDict targets Linux, Windows, and macOS. Check each release for the binaries currently available for download.

Other Qt 6 desktop platforms are not routinely tested, but may work when built from source with CGO enabled.

StarDict is the only supported format for now, and by default, it reads all StarDict dictionaries in ~/.stardict/dic folder. But you can change the folder or add more folders through configuration.

Installation

If you don’t have Go language on your system, you can check Releases and download the latest binary for your platform if available.

The Windows x86-64 artifact is a standalone executable for Windows 10 1809 or newer and Windows 11. Qt 6.11.2 and the required plugins are linked into ayandict.exe, so a separate Qt installation is not required.

The Linux x86-64 GUI release artifact is dynamically linked. It requires glibc 2.35 or newer and Qt 6.4 or newer with the Widgets, Network, Multimedia, and Multimedia Widgets modules. Install the required Qt runtime libraries with the command for your distribution:

Ubuntu 24.04 or newer:

sudo apt install libqt6network6t64 libqt6multimediawidgets6

Fedora:

sudo dnf install qt6-qtbase-gui qt6-qtmultimedia

openSUSE Tumbleweed:

sudo zypper install libQt6Network6 libQt6MultimediaWidgets6

Arch Linux:

sudo pacman -S --needed qt6-base qt6-multimedia

Building the GUI from source requires Go 1.24 or newer, CGO, a C++ compiler, and the Qt 6 Base and Multimedia development files. Install the native dependencies with the command for your distribution:

Ubuntu 24.04 or newer:

sudo apt install build-essential qt6-base-dev qt6-multimedia-dev

Fedora:

sudo dnf install gcc-c++ qt6-qtbase-devel qt6-qtmultimedia-devel

openSUSE Tumbleweed:

sudo zypper install gcc-c++ qt6-base-devel qt6-multimedia-devel

Arch Linux:

sudo pacman -S --needed base-devel qt6-base qt6-multimedia

You can then compile and install the latest code with:

go install github.com/ilius/ayandict/v3@latest

Or clone the repository, cd to it and run go build, which will create the binary (ayandict.exe or ayandict) in this directory.

Web Interface

By setting web_enable = true in config file and running the program, you can use the web interface. The port is set with local_server_ports value (first available port in that list), and the URL is printed in stdout.

If you do not want to use Qt GUI at all and run in web-only mode, you can pass -no-gui flag in command line.

You can also build the standalone web or non-GUI commands without Qt:

go build ./cmd/ayandict-web/
go build ./cmd/ayandict-nogui/

This is especially useful on systems where the Qt GUI cannot be built.

Screenshots

Linux - dark style + Favorites


Linux - light style


Windows - light style


Windows - dark style


Most Frequent queries


Dictionaries dialog


Misc tab


Configuration

To change configuration (which includes most user settings), you have to edit the config file (we do not have GUI for it, and no plan to add it, sorry!).

After you run the program, you can click on “Config” button (as seen in screenshots) and it will open the config.toml file in your default text editor (for TOML files).

If config.toml does not exist, it will be created and filled with default config.

After you modify config.toml, you can click on “Reload” button (next to “Config” button) and it will apply the changes.

The full path for config.toml file:

  • Linux: ~/.config/ayandict/config.toml

    • If $XDG_CONFIG_HOME is set: $XDG_CONFIG_HOME/ayandict/config.toml
  • Windows: C:\Users\USERNAME\AppData\Roaming\AyanDict\config.toml

    • More accurately: %APPDATA%\AyanDict\config.toml
  • Mac: ~/Library/Preferences/AyanDict/config.toml

Here is a list of all config parameters.

Dictionaries

As you see in screenshots, there is a button called “Dicts” or “Dictionaries”. It opens a dialog and lets you disable, enable and change order of dictionaries.

Each dictionary has a “Symbol” which by default is the first letter of its name in curly brackets (for example [W] for WordNet). This symbol is shown in the list of results that is in the left side of window, as seen in screenshots. It is meant to show you which dictionary it comes from at first glance. You can change this symbol through “Dictionaries” dialog. Symbol can be empty, or be as long as you want (though it is 3 characters by default).

Convert other Dictionary formats

You can use PyGlossary to convert various other formats to StarDict format and use them for this application. A list of supported formats is provided, and if you click on each format’s link, it will lead you to more information about it.

Download Dictionaries

There are tons of web pages that let you download various usable dictionaries, but here is a list I collected (feel free to open a pull request for more):

Keyboard bindings/shortcuts

  • + or =: Zoom in (article/definition/translation)
  • -: Zoom out (article/definition/translation)
  • Ctrl + F: Search in article text
  • Ctrl﹢G: Goto next match (via Ctrl﹢F)
  • Escape:
    • While search bar is visible: hide search bar
    • While query entry is focused: focus leaves the entry
    • None of the above: clears the query and results
  • Space: (while query entry is not focused) change keyboard focus to query entry
  • Alt + Left or Ctrl + Left: Go back in history (tab “History”)
  • Alt + Right or Ctrl + Right: Go forward in history (selected term in tab “History”)
  • Alt + Down: Goto next result
  • Alt + Up: Goto previous result
  • Ctrl + Q: Quit / exit application
  • F1: Show About window

Some useful (nonobvious) features

  • Click Clear while holding Ctrl / Command to clear history (and query)
  • Click Reload while holding Ctrl / Command to reload config, dictionaries and user style
  • Click Reload while holding Shift to reload config and user style
  • Right-click on Favorite icon (under OK) to see multiple terms and add/remove favorite
  • Click About then click Keyboard Shortcuts to view the shortcuts

Search Algorithm

The default search is fuzzy, and it is based on similarity scores that are calculated from Levenshtein distance. We also split entry terms into words, for example if you type “language” (or with with a few misspelled letters, like “languge”), it first shows “language”, and then terms like “language learning”, but may also show terms like “sign language”.

If you specifically want terms with “language” as the second word, you can type “* language”. Pattern matching is not supported in Fuzzy mode, and you can only use * alone (not as part of a pattern).

Anything with at least %70 similarity score is listed (for example “languge” is %87 similar to “language”). But we have a limit of how many results are displayed, and by default it’s 40 results. You can change this with config parameter max_results_total.

This works pretty well in most cases, but the only catch is that first letter of your query must match the first letter of one of your target words. For example if you type “symmetry”, it will not match term “asymmetry” even though they are close enough (high similarity score), because their first letter is different.

But we also have these search modes:

  • Start with, shows all terms that start with given query string (added in v2.0)
  • Regex (regular expression), for example symm.*y (added in v2.0)
  • Glob, for example symm*y (added in v2.0)
  • Word Match (added in v2.2.4 and v3.0)
    • Exactly matches any word in a term against (single-word) query

In all of these modes, shorter matched terms are given higher score. For example in Regex mode with query symm.*y, term “symmetry” comes before “symmetrically” because of smaller length and higher score.

And an additional search mode “Soundex” is enabled if you set soundex_words_file config parameter. This is to find sound-alike words (mostly for English). Like words that you’ve heard but didn’t figure out how to spell close enough to find with Fuzzy or other modes. More on Wikipedia.

Similar Articles

TongueType for macOS

Product Hunt

TongueType is a local dictation app for macOS that does not require a subscription.

Gram 2.0.0 released

Lobsters Hottest

Gram 2.0.0, a developer-focused code editor, has been released with updated default settings, improved language server management, smooth scrolling, and Mermaid diagram support in Markdown preview.

altic-dev/FluidVoice

GitHub Trending (daily)

FluidVoice is an open-source voice-to-text dictation app for macOS featuring on-device AI enhancement via a separate private local runtime called Fluid Intelligence. Version 1.6.0 brings faster Parakeet support, improved theming, and a refreshed onboarding experience.