# write
`write` is an opinionated, writing-centric editor whose entire purpose is to **silence the
writer's inner editor**. Text fades from the screen shortly after it is typed, so there is nothing
to look back at, nothing to second-guess, and nothing to fiddle with. You simply write.
Output is plain **Markdown**, appended to a daily file. There is no editing, no deletion, no cursor
movement, no selection — once a character is typed it is permanent in the file and soon invisible on
screen. When you are done, open the resulting `.md` in your real editor (Neovim, etc.) to revise.
## How it works
- **Fullscreen, borderless, distraction-free.** The app takes over the screen with a black canvas
and a single bottom-anchored column of text. No chrome, no menus, no mouse.
- **The fading view.** Each glyph stays fully visible for ~30 seconds, then fades out over ~1 second
and is gone for good. Older lines scroll off the top as you write.
- **Append-only Markdown.** Everything you type is appended verbatim to today's session file at
`~/Documents/write/YYYY-MM-DD.md` (falling back to your home directory if there is no Documents
folder). The file is flushed and `fsync`'d roughly every 30 seconds and again on a clean exit, so
your words are durable.
- **One writer per day.** Each day shares a single file, guarded by an advisory lock. If a second
`write` is already running for today, the new instance exits quietly instead of fighting over the
file.
## Keys
| any character | appended to the file and shown on screen |
| `Enter` | inserts a paragraph break (`\n\n`); a second consecutive `Enter` clears the screen |
| `Backspace` | does **not** delete — appends a single space and clears the screen |
| `Esc` | opens the menu (live word count); `Esc` again resumes, `Q` quits |
Arrows, `Delete`, `Home`/`End`, `PageUp`/`PageDown`, and `Cmd`/`Ctrl` combinations (paste, undo, …)
are intentionally ignored. There is no way to revise text from inside `write`.
## Install & run
Requires a recent Rust toolchain (edition 2024).
```bash
cargo run --release
```
Your writing lands in `~/Documents/write/`, one Markdown file per day.
## Platform support
`write` is built on [`egui`/`eframe`](https://github.com/emilk/egui) and is portable in principle,
but it is developed and tested on **macOS** first. Other platforms track upstream `egui` maturity.