- Rust 98.4%
- Shell 1.6%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
- Gate Wayland blur and primary selection to Linux; AppKit blur on macOS - Native traffic lights, Cmd shortcuts, macOS text navigation, menu bar - Open files and folders handed over by Finder, reusing the blank window - scripts/bundle-macos.sh builds a universal Inkwell.app and DMG Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> |
||
| assets | ||
| packaging | ||
| scripts | ||
| src | ||
| .gitignore | ||
| Cargo.lock | ||
| Cargo.toml | ||
| README.md | ||
| rust-toolchain.toml | ||
Inkwell
A fast, native markdown editor for Linux and macOS, built with Rust and
GPUI. It's meant to be the app that opens
when you double-click a .md file.
It edits in live preview. Headings, emphasis, links, task lists, quotes, code blocks, tables and images render inline. The line under the cursor shows its raw markdown, with the syntax dimmed and hung into the margin so the text never jumps.
The look is modelled on Writer, with the palette and window chrome taken from Zeron.
Install
./scripts/install.sh # ~/.local/bin/inkwell + menu entry + icon
./scripts/install.sh --default # …and make it the default app for .md files
On macOS, build a universal Inkwell.app and a drag-to-install disk image in
target/macos/:
./scripts/bundle-macos.sh # add --install to copy it to /Applications
The app is ad-hoc signed, not notarized, so the first launch of a downloaded
copy needs right-click → Open. To make it the default for markdown, select a
.md file in Finder, choose Get Info → Open with → Inkwell, then Change All.
The Rust toolchain is pinned in rust-toolchain.toml, and rustup fetches it
automatically.
Use
inkwell notes.md # open a file (created on first save if missing)
inkwell ~/notes # open a folder in the sidebar
- Files autosave half a second after you stop typing. Changes made by other programs are picked up live unless you have unsaved edits.
- The sidebar lists the markdown files around the open file. It uses the
nearest git repo or Obsidian vault if there is one, otherwise the file's
folder. Toggle it with
Ctrl+\. - Tables render as a grid until you click into one; then the whole table shows its source for editing.
- Code blocks with a language (
```rust,```py, …) are syntax-highlighted, using the grammars from bat. - Images on their own line (
) show the picture. Relative paths resolve from the document's folder, and remote URLs are fetched. - Frosted glass: on macOS and KDE Plasma (Wayland) the window blurs the
desktop behind a translucent sidebar. Elsewhere, or with
"frosted": falsein~/.config/inkwell/settings.json, the chrome is opaque. - Ctrl+click (⌘-click on macOS) a link to open it. Links to other
.mdfiles open in place. - Click a checkbox to toggle it.
On macOS, use ⌘ in place of Ctrl.
| Keys | Action |
|---|---|
Ctrl+B / Ctrl+I / Ctrl+E |
bold / italic / inline code |
Ctrl+Shift+X |
strikethrough |
Ctrl+K |
insert link (pasting a URL over a selection also makes a link) |
Enter |
continues lists, tasks and quotes; on an empty item it ends the list |
Tab / Shift+Tab |
indent / outdent list items |
Ctrl+S / Ctrl+Shift+S |
save / save as |
Ctrl+O / Ctrl+N |
open file / new window |
Ctrl+W / Ctrl+Q |
close window / quit |
Not yet supported
Find and replace, inline images in the middle of a paragraph, math and Mermaid diagrams, spell check, and wiki links.
Layout
src/editor.rsis the editor element: buffer, undo, cursor and selection, IME, and live-preview line layout.src/markdown.rsholds the per-edit pulldown-cmark pass that yields inline styles, hideable syntax, and block kinds per line.src/workspace.rsis the window: title bar and caption buttons, sidebar, file loading, autosave, and file watching.src/highlight.rshighlights fenced code with syntect, folding scopes into a few token classes that the theme colours.src/theme.rshas colours and bundled fonts.src/blur.rsdoes compositor blur throughext-background-effect-v1, attached to GPUI's Wayland surface. On macOS, AppKit does the blur (src/blur_macos.rs).packaging/macos/has the app bundle'sInfo.plistand icon, whichscripts/bundle-macos.shassembles.
Credits
Syntax grammars come from bat via
two-face, under their own
licenses. The Geist fonts are under the SIL OFL (assets/fonts/licenses). The icons
are from Solar Icons by 480 Design, CC BY 4.0, via Zeron (MIT).