Offers words of wisdom.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ltdk 9042cdd64a Stuff 2 years ago
src Initial commit 2 years ago
.gitignore Initial commit 2 years ago Initial commit 2 years ago
Cargo.lock Stuff 2 years ago
Cargo.toml Initial commit 2 years ago Initial commit 2 years ago
Makefile Initial commit 2 years ago Stuff 2 years ago


Offers words of wisdom.


Available via the Anti-Capitalist Software License for individuals, non-profit organisations, and worker-owned businesses.


Currently, this is just a plan for a project that has not yet been started. The idea is to make a better "words of wisdom" program than the existing fortune program, which doesn't really lend itself to offering quotes that aren't hand-selected by white tech bros.

The name "naysay" is a pun on the term "nay-say" (to speak negatively of something), as words of wisdom tend to be quite degrading, and also Nayru, the goddess of wisdom from the Legend of Zelda series.

I haven't fully ironed out the details, but the biggest thing I want to be able to support is having several different "extractors" which allow pulling lists of text from various sources (e.g. Twitter, Wikipedia, etc.) and also several different "filters" which allow choosing what kinds of text you want to use for your nay-sayings.


Just build naysay for your system and install it in /usr/bin.


Run the naysay command to print some words of wisdom.


System-wide configurations will be loaded first from /etc/naysay/, then overridden by user-specific configurations in $XDG_CONFIG_HOME/naysay/.

Configuration files may be in multiple formats, indicating their type as an extension:

  • CBOR: .cbor
  • HJSON: .json, .json5, .hjson
  • TOML: .toml
  • YAML: .yml, .yaml

Settings, stored in a file named settings, specify which specific words will be used and how they should be displayed.

Sayings, stored in a directory named sayings, specify sources for things to say.

Filters, stored in a directory named filters, specify transformations on modify or prune strings given by sources.


The configuration object (with default values) is annotated below using TOML

# list of sayings, loaded in order. once all sayings are loaded, a random one will be chosen.
# accepts a list of strings indicating saying names, which contain only letters, numbers, hyphens.
# adding an asterisk in a name will act as a wildcard, e.g. "*" indicates all possible sayings
# prefixing a saying with an exclamation mark will exclude sayings from the list.
sayings = ["*"]

# list of filters to apply, using the same syntax as sayings.
filters = []

# maximum display width and height of text. actual size will depend on terminal size.
# decided according to UAX #11 and #14.
format.width = 100
format.height = 4

# specific configuration settings for the saying "saying"
sayings.saying = {}

# specific configuration settings for the filter "filter"
filters.filter = {}

# x