#definition #dictionary #etymology

bin+lib gloss-word

A simple English dictionary lookup utility

13 releases

0.2.5 Feb 7, 2023
0.2.3 Dec 6, 2022
0.2.2 Jun 16, 2022
0.2.1 Mar 31, 2022
0.1.4 May 9, 2021

#1503 in Command line utilities

46 downloads per month

MIT license

345 lines


This is a simple CLI utility for looking up the definition or (with flag -e) the etymology of an English word. Definitions are drawn from the American Heritage Dictionary, as provided by the website of The Free Dictionary. Etymologies are pulled from the Online Etymology Dictionary.

While the package is called gloss-word—since I needed a unique name to publish it to crates.io—the binary itself, and hence the command, is gloss. I like to use a shell function to pipe the output to bat for pretty-printing. That's pasted below.

In short, the program makes a request (if necessary) to the appropriate website; scrapes relevant HTML elements; converts that material to nicely formatted plain text with Pandoc; and prints it to stdout. Results are cached in a rudimentary manner, so that repeat searches—however unlikely they may be—will not require fetching from TFD or Etymonline.

Pandoc is a required external dependency. Everything else is handled by the Rust binary. I should note, however, that I wrote this program for my own use on macOS, and I've tested it only lightly on Windows (seems fine), and not at all on Linux. It's possible that some adjustments would be necessary.

Cached results are in the form of a basic SQLite database, in what is supposed to be a platform-appropriate location (relying on the directories library).

Answers to a few other potential questions: Why scrape from TFD, as opposed to other good dictionary sites? I actually tried Wiktionary first, but their markup is not at all suited to this. Why AHD, as opposed to other English dictionaries? I just like it. I looked at a few and chose the one that most appealed to me.

Shell function

gloss() {
    set -o pipefail
    command gloss "$@" | bat --style=grid,numbers

bat is a Rust quasi-reimplementation of cat, which I enjoy. You might also like to give it a try.




~1M SLoC