A micro-journaling tool https://git.josias.dev/jw
This repository has been archived on 2022-09-01. You can view files and clone it, but cannot push or open issues/pull-requests.
Go to file
Josias 61ad65883d Add outdated notice 2022-09-01 10:46:45 -07:00
include Add edit feature 2022-07-18 22:35:08 -07:00
.gitignore Change name to jw (Just Write) 2020-07-25 17:41:09 +02:00
LICENSE Update license years 2022-05-02 11:01:50 -07:00
Makefile Merge branch 'master' of codeberg.org:josias/jw 2022-08-03 14:02:39 -07:00
README.md Add outdated notice 2022-09-01 10:46:45 -07:00
cache.c Don't add separator when getting last post 2022-08-07 07:41:52 -07:00
config.c Add list command 2021-07-29 08:35:50 -07:00
jw.bash-completion Add edit subcommand to autocomplete 2022-08-03 14:01:10 -07:00
main.c Remove leftover comment 2022-08-25 13:22:38 -07:00
notebook.c Add list command 2021-07-29 08:35:50 -07:00
search.c Rename malloc to see_you_later_allocator 2022-06-04 13:18:03 -07:00
utils.c Fix cast warning and add -Werror 2022-05-26 12:18:04 -07:00
write.c Use localtime for timestamps 2022-05-17 07:31:33 -07:00



Superseded by Just Write

Just Write.

A micro-journaling tool written in C.

Many journaling programs are better-designed for writing long entries. Of course, they do not force you to do so, but they certainly make it preferable to do it that way.

This is different. This is a tool for writing out your thoughts Twitter-style, with a CLI for managing, writing, and editing posts.

Writing out thoughts quickly and distraction-free is what this tool is about. I am writing this for myself to be able to keep track of my thoughts.

To outline the philosophy of the project, I wrote a blog post.


  • Uses your favorite editor
  • Full text search
  • Notebooks (categories)



Since this is a general way to let out thoughts and organize them, I think it would be useful to expand this from micro-journaling to noting general thoughts. Maybe other modes for notes and such. Its use of Markdown also enables more flexbility.


  • Make posting as simple as opening, writing, and then closing
  • The tool should do any other work for the user, such as metadata, organization, etc.


$ git clone https://git.josias.dev/jw && cd jw
$ make
$ ./jw help

Depends on libbsd.


First, you must make a new notebook. A notebook is a collection of posts and jw is built around this concept.

Here we make a notebook called "journal", but it can be named anything.

$ jw new journal

When you have a notebook, you can write a post with jw post journal. That opens up your default editor (or else vi) in which you can write a post. When you are done, save and quit. jw handles the rest.

You can run a full-text search on your posts by running jw search journal <query>. It currently returns a list of paths to posts where the query was found.


The program can be configured by modifying ~/.config/jw/config.yaml.

root: jw
editor: vi

The above example configuration sets the root directory (where all jw data is stored) to ~/jw, and sets the default editor (overriding $EDITOR) to vi.

This is the default configuration if nothing is changed.


"Notebooks" are collections of posts stored in the root directory (as defined in the global configuration). They can vary in purpose and are configured separately.

Most of the time making a new notebook is as simple as jw new <notebook_name>.

Each notebook can be configured with a notebook.yaml in the corresponding directory.

An example notebook.yaml:

name: journal # Default: the name of the directory
description: General notes and random thoughts
file_path: %Y-%m-%d-%s.md # other examples: %Y-%m-%d-%s.md, or even posts.md, where all entries are stored in a single file. %s refers to the first letters of the post
metadata: false # put some metadata (like the timestamp) at the beginnning of each post

By default notebooks are given a basic configuration when made with jw new.

Similar Software


Copyright (C) 2020, 2021, 2022 Josias Allestad

You may use this software under the terms of the BSD-2-Clause license.