- Rust 85%
- Emacs Lisp 10%
- Makefile 3%
- Shell 1.5%
- Nix 0.5%
|
Graceful Liberty
82c1434225
Previously it switched buffer at the wrong time, which led to returning to the wrong buffer after creating a post. |
||
|---|---|---|
| src | Add license information to version | |
| .gitignore | Don't ignore/delete jw.1 | |
| Cargo.lock | Decrateify | |
| Cargo.toml | Decrateify | |
| COPYING | Add initial rewrite | |
| jw.bash-completion | Decrateify | |
| jw.el | emacs: fix buffer hiding | |
| jw.scd | Rename web -> export | |
| Makefile | Don't ignore/delete jw.1 | |
| README.md | Move export to internals | |
| shell.nix | Add scdoc to shell.nix | |
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/.