1
0
Fork
You've already forked just-write
0
Micro-journaling tool
  • Rust 85%
  • Emacs Lisp 10%
  • Makefile 3%
  • Shell 1.5%
  • Nix 0.5%
Graceful Liberty 82c1434225
emacs: fix buffer hiding
Previously it switched buffer at the wrong time, which led to
returning to the wrong buffer after creating a post.
2026年06月24日 12:04:14 -07:00
src Add license information to version 2026年05月26日 22:02:55 -07:00
.gitignore Don't ignore/delete jw.1 2026年05月25日 20:54:15 -07:00
Cargo.lock Decrateify 2026年05月19日 16:25:12 -07:00
Cargo.toml Decrateify 2026年05月19日 16:25:12 -07:00
COPYING Add initial rewrite 2025年09月29日 18:59:55 -07:00
jw.bash-completion Decrateify 2026年05月19日 16:25:12 -07:00
jw.el emacs: fix buffer hiding 2026年06月24日 12:04:14 -07:00
jw.scd Rename web -> export 2026年05月16日 16:14:42 -07:00
Makefile Don't ignore/delete jw.1 2026年05月25日 20:54:15 -07:00
README.md Move export to internals 2026年05月19日 15:01:56 -07:00
shell.nix Add scdoc to shell.nix 2025年09月29日 18:59:56 -07:00

Just Write

A micro-journaling tool.

Many journaling programs are designed for writing long entries, often centered around today's date. Just Write is instead oriented around micro-journaling. You write out your thoughts short-form without the pressure of structure or even quality. Think of it like microblogging (e.g. Twitter, Mastodon, etc.) but for your journal.

This tool provides a distraction-free environment for writing out thoughts quickly to save for later and edit them as needed. It has been developed for my own personal journaling, but you may also find it useful.

Principles:

  • Posting is as simple as opening, writing, and closing
  • All other work should be done by the tool

Features:

  • Full text search
  • Categorization
  • Post tagging
  • Emacs integration
  • Export to HTML

Installation

Quick installation (requires rustc and cargo to be installed):

$ git clone https://codeberg.org/liberty/just-write && cd just-write
$ make install
$ jw help

It should run on any system supported by Rust and directories, but only Linux has been tested.

Emacs

If you want to use Just Write's Emacs integration, add (load "/path/to/jw.el") to your Emacs configuration. Make sure jw-bin is set to where you installed the binary (~/.local/bin/jw is the default).

Usage

This tool is designed around notebooks, which are collections of posts.

Here we make a notebook called "journal".

$ jw new journal

To write a post, run jw post journal. This opens your default editor. If EDITOR isn't found, it resorts to vi. When you are done, save and quit. The tool handles the rest.

You can run a full-text search on your posts with the search subcommand. It returns a list of paths in which the query was found.

Configuration

Just Write is designed to not require configuration in most situations to enable writing without hassle, but certain behavior can be configured if desired.

Configuration is stored in its own directory on different platforms. On Linux and BSD it can normally be found at ~/.config/justwrite/config.toml.

root = "~/Documents/just-write"

This example configuration sets the notebook directory ("root") to ~/Documents/just-write. There are currently no further configuration options.

Notebooks

Notebooks are collections of posts stored in the program's root directory. Each notebook has an associated notebook.toml and a posts.txt. The former descibes basic information about the notebook, including its name, a short description, how to describe a post path, and whether to include metadata.

Notebooks are given a basic configuration when initialized by the new subcommand.

An example of a notebook.toml:

name = "journal"
description = "General notes and random thoughts"
file_path = "%Y-%m-%d-%s.md" # the path of each individual file, relaced with the date and the first text of the post (`%s`).
metadata = true # add the timestamp to the beginning of each post

The string provided file_path is filled in with the year (%Y), month (%m), date (%d), and first 20 characters (%s) of a post. New posts are then written to that path, with .1 appended if another file with the same name exists.

When a new post is made, the file name is appended to posts.txt.

Example of a posts.txt:

2026年05月08日-This-is-a-test-I-just.md
2026年05月14日-This-is-a-test.md
2026年05月14日-Testing123.md
2026年05月14日-This-is-a-test.md.1
2026年05月14日-This-is-a-test-without.md

Currently, notebooks are assumed to be written in Markdown regardless of their file extensions. The export feature tries to convert your notebooks from Markdown to HTML. The temporary file created while you edit your post is hardcoded to have the .md file extension.

License

Copyright (C) 2022-2026 Anna Liberty

This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details.

You should have received a copy of the GNU Affero General Public License along with this program. If not, see https://www.gnu.org/licenses/.