A command-line dictionary (thesaurus) app, with access to multiple sources, written in Go.
Pre-compiled binaries are available on the releases page.
If you have a working Go environment, you can install via go install
:
go install github.com/Rican7/define@latest
The define app allows configuration through multiple means. You can either set configuration via:
- Command line flags (good for one-off use)
- Environment variables (good for API keys)
- A configuration file (good for your "dotfiles")
When multiple means of configuration are used, the values will take precedence in the aforementioned priority.
The list of command line flags is easily discovered via the --help
flag. Any passed command line flag will take precedence over any other configuration mechanism.
Some configuration values can also be specified via environment variables. This is especially useful for API keys of different sources.
The following environment variables are read by define's sources:
MERRIAM_WEBSTER_DICTIONARY_APP_KEY
OXFORD_DICTIONARY_APP_ID
OXFORD_DICTIONARY_APP_KEY
A configuration file can be stored that define will automatically load the values from.
The path of the configuration file to load can be specified via the --config-file
flag. If no config file path is specified, define will search for a config file in your OS's standard config directory paths. While these paths are OS-specific, there are two locations that are searched for that are shared among all platforms:
$XDG_CONFIG_HOME/define/config.json
(This is only searched for when the$XDG_CONFIG_HOME
env variable is set)~/.define.conf.json
(Where~
is equal to your$HOME
or user directory for your OS)
To see which config file has been loaded, and to check what paths are searched for config files, use the --debug-config
flag.
To print the default values of the configuration, simply use the --print-config
flag. This can also be used to initialize a configuration file, for example:
define --print-config > ~/.define.conf.json
The define app has access to multiple sources, however some of them require user-specific API keys, due to usage limitations.
A preferred source can be specified with the command line flag --preferred-source="..."
or in a configuration file. For more information, see the section on Configuration.
The following are links to register for API keys for the different sources: