{"id":17238953,"url":"https://github.com/ilius/ayandict","last_synced_at":"2025-10-26T14:35:00.245Z","repository":{"id":149509076,"uuid":"616231608","full_name":"ilius/ayandict","owner":"ilius","description":"AyanDict - a simple multi-lingual cross-platform offline dictionary based on Qt and written in Go","archived":false,"fork":false,"pushed_at":"2024-10-23T22:03:00.000Z","size":2286,"stargazers_count":30,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2024-10-24T10:32:58.605Z","etag":null,"topics":["desktop","dictionary","dictionary-application","qt","stardict"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ilius.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2023-03-20T00:51:56.000Z","updated_at":"2024-10-23T22:03:04.000Z","dependencies_parsed_at":null,"dependency_job_id":"1347d9a0-53e3-434f-869a-40dcf3dbd15e","html_url":"https://github.com/ilius/ayandict","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/ilius/ayandict","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilius%2Fayandict","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilius%2Fayandict/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilius%2Fayandict/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilius%2Fayandict/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ilius","download_url":"https://codeload.github.com/ilius/ayandict/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ilius%2Fayandict/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":262022035,"owners_count":23246238,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop","dictionary","dictionary-application","qt","stardict"],"created_at":"2024-10-15T05:47:20.190Z","updated_at":"2025-10-26T14:34:59.986Z","avatar_url":"https://github.com/ilius.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# AyanDict\n\nA simple cross-platform desktop dictionary application based on Qt framework and written in Go that uses StarDict dictionary format.\n\nIt is designed for desktop and it should run on every desktop operating system that Qt supports. It is tested on Linux, Windows and Mac OS. I generally upload binaries for Linux, Windows and Mac OS on releases.\n\nBSD family and other Unix-like systems are not currently supported (due to `qtbox` dependency) until release of version 3.x.\n\nIf you use an unsupported operating system or platform, you can try compiling on `v3` branch with `CGO_ENABLED=1 go build` command.\n\nStarDict 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](#configuration).\n\n# Installation\n\nIf you don't have Go language on your system, you can check [Releases](https://github.com/ilius/ayandict/releases) and download the latest binary for your platform if available.\n\nIf you have Go, you can compile and install the latest code with\n\n```sh\ngo install github.com/ilius/ayandict/v2@latest\n```\n\nOr clone the repository, `cd` to it and run `go build`, which will create the binary (`ayandict.exe` or `ayandict`) in this directory.\n\nIt's good to know that the binary / executable file is completely portable, so you can copy it anywhere you want and run it from there (although on Unix the storage must support executable files).\n\n# Web Interface\n\nBy setting `web_enable = true` in [config file](#configuration) 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.\n\nIf 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.\n\nYou can also compile in web-only / non-GUI mode with `go build -v -tags nogui` command. This is specially useful for unsupported platforms if you could not compile with Qt.\n\n# Screenshots\n\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/ilius/ayandict/img/v20-linux-light-wordnet.png\" width=\"70%\" height=\"70%\"/\u003e\n\nLinux - light style (default)\n\n______________________________________________________________________\n\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/ilius/ayandict/img/v20-linux-dark-wordnet.png\" width=\"70%\" height=\"70%\"/\u003e\n\nLinux - dark style ([Breeze](https://github.com/Alexhuszagh/BreezeStyleSheets)) + Favorites\n\n______________________________________________________________________\n\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/ilius/ayandict/img/v20-windows-light-wordnet.png\" width=\"70%\" height=\"70%\"/\u003e\n\nWindows - light style (default)\n\n______________________________________________________________________\n\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/ilius/ayandict/img/v20-windows-dark-wordnet.png\" width=\"70%\" height=\"70%\"/\u003e\n\nWindows - dark style ([Breeze](https://github.com/Alexhuszagh/BreezeStyleSheets))\n\n______________________________________________________________________\n\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/ilius/ayandict/img/v20-linux-dark-frequent-wordnet.png\" width=\"70%\" height=\"70%\"/\u003e\n\nMost Frequent queries\n\n______________________________________________________________________\n\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/ilius/ayandict/img/v20-linux-dark-dict-manager.png\" width=\"70%\" height=\"70%\"/\u003e\n\nDictionaries dialog\n\n______________________________________________________________________\n\n\u003cimg src=\"https://raw.githubusercontent.com/wiki/ilius/ayandict/img/v20-linux-dark-misc-empty.png\" width=\"70%\" height=\"70%\"/\u003e\n\nMisc tab\n\n______________________________________________________________________\n\n# Configuration\n\nTo 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!).\n\nAfter 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).\n\nIf `config.toml` does not exist, it will be created and filled with default config.\n\nAfter you modify `config.toml`, you can click on \"Reload\" button (next to \"Config\" button) and it will apply the changes.\n\nThe full path for `config.toml` file:\n\n- Linux: `~/.config/ayandict/config.toml`\n\n  - If `$XDG_CONFIG_HOME` is set: `$XDG_CONFIG_HOME/ayandict/config.toml`\n\n- Windows: `C:\\Users\\USERNAME\\AppData\\Roaming\\AyanDict\\config.toml`\n\n  - More accurately: `%APPDATA%\\AyanDict\\config.toml`\n\n- Mac: `~/Library/Preferences/AyanDict/config.toml`\n\nHere is a [list of all config parameters](./doc/config.rst).\n\n# Dictionaries\n\nAs 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.\n\nEach 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).\n\n# Convert other Dictionary formats\n\nYou can use [PyGlossary](https://github.com/ilius/pyglossary) to convert various other formats to StarDict format and use them for this application. A [list of supported formats](https://github.com/ilius/pyglossary#supported-formats) is provided, and if you click on each format's link, it will lead you to more information about it.\n\n# Download Dictionaries\n\nThere 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):\n\n- [kaikki.org](https://kaikki.org/dictionary/index.html)\n- [library.kiwix.org](https://library.kiwix.org/)\n- [freedict.org](https://freedict.org/downloads/) and [@freedict/fd-dictionaries](https://github.com/freedict/fd-dictionaries)\n- [@itkach/slob/wiki/Dictionaries](https://github.com/itkach/slob/wiki/Dictionaries)\n- [goldendict.org](http://goldendict.org/dictionaries.php)\n- [huzheng.org](http://www.huzheng.org/stardict/)\n- My repositories: [@ilius/dict](https://github.com/ilius/dict) and [Persian Aryanpour in FreeDict](https://github.com/ilius/aryanpour-tei)\n- [tuxor1337.frama.io](https://tuxor1337.frama.io/firedict/dictionaries.html)\n- [XDXF on SourceForge](https://sourceforge.net/projects/xdxf/files/)\n- [GoldenDict on SourceForge](https://sourceforge.net/projects/goldendict/files/dictionaries/)\n- [kdr2.com](https://kdr2.com/resource/stardict.html)\n- [BGL file collection on GDrive](https://drive.google.com/drive/mobile/folders/0BzrQwK2v03aKWjlsQ3NsaWJKalU?resourcekey=0-DtgqOJiVFSDI231ugoQgiQ)\n- [BGL files for Arabic](https://www.ahmadwadan.com/download.html)\n\n# Keyboard bindings/shortcuts\n\n- **Escape**: clear the input query and results\n- **Space**: (while query entry is not focused) change keyboard focus to query entry\n- **`+`** or **`=`**: Zoom in (article/definition/translation)\n- **`-`**: Zoom out (article/definition/translation)\n\n# Search Algorithm\n\nThe default search is fuzzy, and it is based on similarity scores that are calculated from [Levenshtein distance](https://en.wikipedia.org/wiki/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\".\n\nIf you specifically want terms with \"language\" as the second word, you can type \"\\* language\". We do not support pattern matching (yet), and you can only use `*` alone (not as part of a pattern).\n\nAnything 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`](./doc/config.rst#max_results_total).\n\nThis 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.\n\nBut we also have 3 other search modes added in v2.0.0:\n\n- Start with, shows all terms that start with given string\n- Regex (regular expression), for example `.*symm.*`\n- Glob, for example `*symm*`\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filius%2Fayandict","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Filius%2Fayandict","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Filius%2Fayandict/lists"}