A plain-text-first workbench for creative writing
Important
A couple notes on this project:
First, I'm taking a little break from this and trying to dedicate more time to writing right now (this project is, after all, just a more extravagant form of procrastination against writing). While I'm doing that, I'll be assessing what I really want in a writing tool, and I expect the design of this to change dramatically yet again.
Second, I noticed there's another piece of writing software using the name Hearth (it's newer, but I still must have missed it when I checked this name out), so I'll change the name (again) at some point in the future.
– fairybow
Hearth 🔥 is a cross-platform, plain-text-first workbench for creative writing. Work on single files like a notepad or organize whole projects in Notebooks (.hearthx).
I think it's a fitting name. I always imagined this software would eventually be a kind of "place" for me to go, one dedicated solely to writing. Most writing apps' names are about the profession or the product (Scrivener, iA Writer, Manuskript, and so on). To me, "Hearth" means a place to go for storytelling, but with Hearth on your laptop, that place can be partly in your mind and anywhere you like. It also represents what was, for most of our history, before televisions and the Internet, the absolute center of dwellings and gathering places, where people would eat, drink, sing, and tell thousand-year-old stories by the firelight. (These were stories that hadn't yet been written down, and they changed a little each time they were told.)
Hearth offers two workspace types: a Notepad for working directly on the OS filesystem and Notebooks for organizing whole projects inside a single, portable .hearthx archive. Both support multiple windows, tabbed editing, and drag-and-drop.
- Distraction-free editor with line numbers, current line highlight, and selection handles (all togglable)
- Key filters for auto-close, smart quotes, and other typing enhancements
- Notebook file management with virtual folders, drag-and-drop tree, import, and a soft-delete trash system
- Editor themes (and user theme support via
~/.hearth/themeswith hot reload) - Cascading settings: per-Notebook settings inherit from Notepad defaults
- Word counter with selection-aware counting and adaptive performance (togglable)
- PDF and image viewing
- Markdown and Fountain editing/viewing
See Features.md for the full list.
First release coming soon. (Test releases available!)
Important
You should not trust your writing with any version of this software less than 1.0.0 (not released yet)! Regardless, always make regular backups of your work.
Hearth accepts file paths as arguments. Valid .hearthx files open in their own Notebook, and everything else opens in Notepad.
Optional flags:
--verbose: enables debug-level logging to file (default is info-level and above)--log-viewer: opens an in-app log viewer window for the session
Log files are stored in ~/.hearth/logs/ and pruned automatically.
See Dependencies.md
- C++20
- Qt 6.11 (with extensions)
- CMake 3.21+
- Install the Qt Visual Studio Tools extension
- Clone
- Open the
Hearth/directory in Visual Studio - The Qt VS Tools extension will generate a
CMakeUserPresets.jsonwith your Qt path - Build and run
Hey! Read Hearth's Code! (I'm proud of it.)
Hearth's architecture was carefully considered. I've landed on what I think is a simple but flexible interworking of common architectural patterns designed to keep things in their lanes while allowing lateral communication across a given Workspace (Notepad or Notebook).
I try to keep it clean and focused, and most files are only a few hundred lines long.
That said, there will always be something to improve. Take a look around the repository and get to know the code. If something seems off to you or you have something new in mind, take a look at CONTRIBUTING.md, open an issue, and we'll discuss a PR.
Hearth is free software, redistributable and/or modifiable under the terms of the GPL 3 License. It's distributed in the hope that it will be useful but without any warranty (even the implied warranty of merchantability or fitness for a particular purpose).
I think, in part, I made this because I wanted to put off writing for as long as possible (as writers are wont to do). But I also wanted to make something all my own, something difficult yet rewarding that was way out of my realm of experience. It's taken forever, and it's still not done (it'll never be done-done), but it's well on its way now. Thanks for stopping by, and I hope we'll meet again.
You have to be all kinds of stupid to say "I can do this."
– Linus Torvalds
