|
|
||
|---|---|---|
| cmd | ||
| internal/denote | ||
| sample | ||
| .gitignore | ||
| LICENSE | ||
| PLUMBING.md | ||
| README.md | ||
| go.mod | ||
| go.sum | ||
| main | ||
| mkfile | ||
README.md
acme-denote
Denote note management for the acme editor. Implements the denote file naming convention with search, filtering, and journaling capabilities.
File Naming Convention
Notes follow the denote naming pattern:
IDENTIFIER--TITLE__KEYWORDS.EXT
IDENTIFIER==SIGNATURE--TITLE__KEYWORDS.EXT (with optional signature)
Where:
IDENTIFIER: Timestamp in formatYYYYMMDDTHHmmssSIGNATURE: Optional signature fieldTITLE: Hyphen-separated title (spaces become hyphens)KEYWORDS: Underscore-separated tagsEXT: File extension (.org,.md,.txt)
Example: 20251103T183000--meeting-notes__work_project.md
Commands
Denote
Search and manage denote notes.
Usage in acme:
Denote # List all notes (sorted by ID, newest first)
Denote tag:meeting # Notes tagged 'meeting'
Denote date:/2025.*/ # Notes from 2025
Denote date:/202510.*/ !tag:journal # October 2025, not journal
Denote new 'My Note' tag1 tag2 # Create new note
Denote sort:title # List all notes sorted alphabetically
Denote tag:journal sort:title # Journal entries sorted by title
Filter syntax:
date:/regex/- Match date/identifiertitle:/regex/- Match title (from filename or file content)tag:/regex/- Match tags/keywords/regex/- Match any field!filter- Negate filterplain-text- Exact match (no regex)
Sort options:
sort:id- Sort by identifier/date (default, newest first)sort:date- Sort by date (same as ID)sort:title- Sort alphabetically by title
Creating notes:
Denote new 'Meeting Notes' work project
Denote new -f org 'Todo List' tasks
Denote new -f txt 'Journal Entry' journal
Denote new -e 'Secret Notes' encrypted
Options:
-f type- File type (default: md-yaml). Supported:org,md-yaml,md-toml,txt-e- Encrypt the file using GPG (requires acme-crypt andACME_CRYPT_RCPTenvironment variable)
Renaming notes:
Denote rename /path/to/file.md # Use front matter title/tags
Denote rename /path/to/file.md New Title # Update title, keep tags
Denote rename /path/to/file.md New Title tag1 tag2 # Update title and tags
The rename command:
- Updates front matter (if file supports it)
- Renames file according to denote convention
- Preserves identifier from filename or front matter
- Extracts title from front matter or first heading if no arguments provided
Opening notes by identifier:
Denote open 20251103T183000
Opens a note by its identifier. This is particularly useful with plumbing integration - see PLUMBING.md for how to make denote:<identifier> links clickable in acme.
Journal
Daily journaling with automatic date-based titles.
Usage in acme:
Journal # Find or create today's entry
Journal 20251025 # Find or create entry for specific date (YYYYMMDD)
Journal +1d # Tomorrow
Journal -1d # Yesterday
Journal +3d # 3 days from now
Journal +2h # 2 hours from now
Journal -30m # 30 minutes ago
Journal add # Create additional entry for today
Journal add 20251025 # Create entry for specific date (YYYYMMDD)
Relative dates:
+/-Nd- days (e.g.,+1d,-7d)+/-Nh- hours (e.g.,+2h,-5h)+/-Nm- minutes (e.g.,+15m,-30m)+/-Ns- seconds (e.g.,+30s,-45s)
Journal encryption:
Journal -e # Create encrypted journal entry (requires -e flag or config)
Journal -f org -e # Create encrypted org journal entry
Options:
-f type- File type (default: md-yaml). Supported:org,md-yaml,md-toml,txt-e- Encrypt the journal entry using GPG (requires acme-crypt andACME_CRYPT_RCPTenvironment variable)
Configuration file: ~/.config/acme-denote/journal.cfg
always_encrypt = true
- Set
always_encrypt = trueto encrypt all journal entries by default - The
-eflag can still be used to encrypt individual entries whenalways_encrypt = false - If configuration file doesn't exist, defaults to no encryption
Journal entries are automatically:
- Titled with format: "Monday 3 November 2025 16:56"
- Tagged with
journal - Stored in
$JOURNAL_DIRsubdirectory (default:journal/) - Encrypted with
.gpgextension when using-eflag oralways_encrypt = true
Acme Integration
Both commands output to a +Denote window with clickable results. Output format:
denote:20251103T183000 | Meeting Notes | work, project
denote:20251103T090000 | Monday 3 November 2025 09:00 | journal
The denote:<identifier> prefix makes results clickable when plumbing is configured - see PLUMBING.md for setup instructions.
Workflows:
Simple execution:
- Middle-click
Denote tag:workin tag bar or scratch window - Results appear in
+Denotewindow - Right-click file paths to open notes
Mouse chording (argument passing):
- Type or select filter arguments:
tag:mytag date:20251010 - Middle+left chord on
Denotecommand - Selected text becomes arguments to Denote
Creating notes:
- Middle-click
Denote new 'Title' tagsin scratch window - Or chord: select
'My Title' work urgent, middle+left onDenote new
Renaming notes:
- Select file path and new title/tags:
/path/to/file.md New Title tag1 tag2 - Middle+left chord on
Denote rename - Or middle-click
Denote rename /path/to/file.mdto use existing front matter
Quick journal access:
- Middle-click
Journalanywhere - Shows today's entry in the search result, creating it if necessary
Configuration
Environment variables:
DENOTE_DIR- Base directory for notes (default:~/doc)JOURNAL_DIR- Subdirectory for journal entries (default:journal)
Example:
export DENOTE_DIR="$HOME/notes"
export JOURNAL_DIR="daily"
Installation
mk install
Installs Denote and Journal to ~/bin/.
GPG File Support
For encrypted .gpg files, install acme-crypt:
git clone https://github.com/lneely/acme-crypt
cd acme-crypt && mk install
export ACME_CRYPT_RCPT="your@email.com" # Your GPG key for encryption
acme-denote will automatically detect .gpg files and use CryptGet to open them with decryption support in acme. To create encrypted notes, use the -e flag with Denote new.
Front Matter
Notes include front matter based on file type:
Markdown (YAML):
---
title: "Meeting Notes"
date: 2025-11-03 Mon 18:30
tags: [work, project]
identifier: "20251103T183000"
---
Org-mode:
#+title: Meeting Notes
#+date: [2025-11-03 Mon 18:30]
#+filetags: :work:project:
#+identifier: 20251103T183000
Text:
title: Meeting Notes
date: 2025-11-03 Mon 18:30
tags: work project
identifier: 20251103T183000
Title Extraction
The title: field in search results is extracted from:
- Front matter (
#+title:for org,title:for markdown) - First heading (
* Headingfor org,# Headingfor markdown) - Filename title component (fallback)
This allows searching by actual document titles, not just filenames.