dn
dn is a CLI tool for creating and renaming plaintext notes with a predictable, timestamped naming format. It is inspired by the amazing Emacs package Denote created by Prot. dn creates files that can be easily queried using standard tools like find, sed, grep, awk, ripgrep, fzf, etc.
dn aims to reproduce the file naming functionality of Denote, while being entirely editor agnostic and scriptable in any language. It deviates in several ways from the behaviour of Denote, both due to the reduced scope (much of Denote's functionality is best suited for editor integrations) and different concerns (Emacs & Org already have a complete, quality solution to practically all of the goals dn addresses, i.e. Denote).
Installation
Binary Download
The latest binaries are available here.
Cargo Install
Crates.io
If you have a Rust environment set up, you can install the binary from crates.io with the following command:
Build From Source
# clone repo and make install
Quick Start
# Create a new note
# Rename an existing note
# Remove the title and change extension of an existing note
# Add and remove keywords on an existing file
# Search $DN_DIRECTORY for a note with fzf and then open it in helix
| |
Extras
Manpages and shell completions are available, they can be installed manually. The supported shells are:
- bash
- zsh
- fish
- powershell
- nushell
- elvish
Editor Support
dn is designed with the intention that it will be integrated into text editors via extensions. When Helix's plugin system is implemented, the intention is to provide an ergonomic set of extensions as specified in the integration docs. A VSCode extension is also being considered.
- Helix
- Visual Studio Code
Inspirations
Dependencies
Dependencies are relatively minimal. In time, this project will be feature-complete, and enter maintenance mode. A primary concern for dn is to minimise churn and maximise long-term stability. Eventually, all dependencies will be vendored and the program will be considered "finished", outside of necessary bug fixes and/or emergency patches.
Development
- dn follows Semantic Versioning for version numbering.
- dn uses Conventional Commits for commit messages.
- dn is REUSE compliant.