A fast, native GNOME Markdown reader and editor written in Rust
  • Rust 99.5%
  • Makefile 0.5%
Find a file
Ilshat Ishdavletov e28af23e48
v1.4: correct CHANGELOG — Flatpak filesystem fix is xdg-pictures, not home:ro
The home:ro permission is blocked by flatpak-builder-lint
('finish-args-home-ro-filesystem-access'). Flathub manifest landed
with --filesystem=xdg-pictures:ro as a narrower replacement; full
sibling-asset access from arbitrary directories needs a Flathub
linter exception, deferred to v1.5.
2026-05-29 17:06:51 +02:00
data v1.4.0: footer + writing stats, PDF header-repeat, View-mode scroll 2026-05-29 16:56:13 +02:00
docs/superpowers/specs v1.4-wip: footer + writing-stats design spec 2026-05-29 15:28:39 +02:00
src v1.4-wip: rich-table link clicks + reactive cell width 2026-05-29 16:21:11 +02:00
.gitignore perf: skip focus-mode rescan when paragraph + tag table unchanged 2026-05-14 14:23:08 +02:00
.gitlab-ci.yml CI: add libspelling-devel to Fedora build deps 2026-05-14 11:56:42 +02:00
cargo-sources.json v1.1.0: regen cargo-sources.json 2026-05-14 16:56:36 +02:00
Cargo.lock v1.4.0: footer + writing stats, PDF header-repeat, View-mode scroll 2026-05-29 16:56:13 +02:00
Cargo.toml v1.4.0: footer + writing stats, PDF header-repeat, View-mode scroll 2026-05-29 16:56:13 +02:00
CHANGELOG.md v1.4: correct CHANGELOG — Flatpak filesystem fix is xdg-pictures, not home:ro 2026-05-29 17:06:51 +02:00
CLAUDE.md v1.4.0: footer + writing stats, PDF header-repeat, View-mode scroll 2026-05-29 16:56:13 +02:00
io.gitlab.ilshat_apps.manuscript.yml v0.2.0: Polished rendering, editor improvements, Flathub fixes 2026-03-25 11:42:40 +01:00
LICENSE Add README, CHANGELOG, LICENSE, and screenshots 2026-03-24 15:36:51 +01:00
Makefile v0.3.0: Find & Replace (Ctrl+H), spell check, multi-window, layout-agnostic shortcuts, outline scroll fix 2026-05-14 11:48:52 +02:00
README.md v1.4.0: footer + writing stats, PDF header-repeat, View-mode scroll 2026-05-29 16:56:13 +02:00
test.md Add tables, task lists, search, recent files, file watching, print, CI 2026-03-24 15:21:43 +01:00

Manuscript

Manuscript

A fast, native GNOME Markdown reader and editor written in Rust

Version License


Light theme   Dark theme

Features

  • Beautiful rendering — graduated heading hierarchy with a blue accent per level, bold, italic, strikethrough, lists, blockquotes with a soft tint, horizontal rules, and images with rounded corners
  • GFM callouts> [!NOTE], > [!TIP], > [!WARNING], > [!DANGER], > [!IMPORTANT] render as coloured blocks with an icon and bold title (custom title supported)
  • Wikilinks[[Note Name]] and [[Note Name|alias]] render in a violet accent (vault navigation is a future feature)
  • Task lists- [ ] / - [x] render as filled / empty discs ( / )
  • Inline code with warm palette — amber on cream / dark-on-warm so code stands out without competing with the heading accents
  • Syntax-highlighted code blocks — powered by syntect with 100+ languages
  • GFM tables — rendered with aligned columns and box-drawing characters
  • Rich tables — opt-in GtkGrid rendering with cell borders, header styling and inline formatting inside cells (Preferences → Writer)
  • Clickable links — open in default browser with hover cursor
  • Three view modes — Read, Edit (GtkSourceView), and Split (side-by-side with live preview)
  • Outline panelF9 toggles a sidebar with all document headings (overlay on phones)
  • Smart list continuation — Enter inside a - / 1. / - [ ] item continues the list with the right marker
  • Session restore — reopens last file, view mode and scroll position on launch
  • Full-text searchCtrl+F with a live X / Y match counter; current match in green, others in yellow
  • Find and ReplaceCtrl+H with Replace / Replace All and a brief green flash on changed text
  • Spell check — inline underlines via libspelling, language picker from installed hunspell/myspell dictionaries
  • Multi-window — opening a file from the file manager opens a new window so two docs sit side by side (toggleable)
  • Writer modes — Distraction-free fullscreen (F11 hides chrome), Focus mode (dim everything but the current paragraph), Typewriter mode (current line pinned to viewport center) — all toggleable in Preferences
  • Rendered printCtrl+P prints the rendered markdown, not the raw source: headings keep size and weight, code blocks keep their shading, tables render as a box-drawing grid
  • Export as PDF — File menu → Export as PDF… writes an A4 PDF via the same layout engine as print (no pandoc/LaTeX dependency); font and margins configurable in Preferences
  • Remote images![alt](https://…) is fetched asynchronously, cached in memory, and rendered inline
  • Quick OpenCtrl+Shift+O opens a fuzzy popover over recent files and markdown siblings of the current document
  • Auto-save — optional Preferences toggle that writes the current file ~1.5 s after the last edit; suppresses the reload toast during a self-write
  • Mobile UX — edge-swipe to open the outline, bottom action bar with markdown shortcuts (Bold, Italic, Heading, Bullet, Task, Link, Code) when a source view is focused on narrow screens, horizontal swipe to switch Read ↔ Edit
  • Customizable — font family, size, line spacing, line numbers, text wrapping
  • Session zoomCtrl+= / Ctrl+- / Ctrl+0 adjusts text size on the fly
  • Word count — words and reading time live in the header bar while you edit
  • Writing stats footer — optional bottom footer with word count, reading time and a daily-goal tracker (icon-prefixed segments, star icon flips from outline to filled once today's count meets the goal)
  • Keyboard scrolling in View mode — Up/Down/PgUp/PgDn/Home/End and Space (Shift+Space scrolls up) scroll the rendered document
  • Theme-aware — follows system light/dark preference, updates automatically
  • Recent files — quick access to last 10 opened files
  • File watching — Reload toast on external changes (no overwriting unsaved edits)
  • Print supportCtrl+P to print or export
  • Drag & drop — drop .md files onto the window
  • Adaptive — works on phones and tablets (GNOME Mobile, Phosh)
  • Fast — native Rust, no WebKitGTK, instant startup

Split view light   Split view dark

Keyboard Shortcuts

Shortcut Action
Ctrl+N New file (untitled)
Ctrl+O Open file
Ctrl+Shift+O Quick Open (recents + folder, fuzzy)
Ctrl+S Save file
Ctrl+W Close current file (or window if welcome screen is shown)
Ctrl+E Toggle edit mode
Ctrl+Shift+E Toggle split view
F9 Toggle outline panel
Ctrl+F Search
Ctrl+H Find and Replace (in Edit/Split)
Ctrl+P Print
Ctrl+, Preferences
Ctrl+Q Close window
Ctrl+Z / Ctrl+Shift+Z Undo / Redo
Ctrl+Y Redo
Ctrl+B / Ctrl+I Bold / Italic (wraps selection)
Ctrl+K Insert link [text](url)
Ctrl+= / Ctrl+- / Ctrl+0 Zoom in / out / reset
F11 Toggle distraction-free fullscreen
Esc Exit fullscreen

Install

From source

Dependencies (Fedora):

sudo dnf install gcc cargo gtk4-devel libadwaita-devel gtksourceview5-devel pango-devel oniguruma-devel

Dependencies (Debian/Ubuntu):

sudo apt install build-essential cargo libgtk-4-dev libadwaita-1-dev libgtksourceview-5-dev libpango1.0-dev

Build and install:

git clone https://gitlab.com/ilshat-apps/manuscript.git
cd manuscript
make install

This installs to ~/.local by default. Use PREFIX=/usr make install for system-wide installation.

Run without installing

cargo run -- path/to/file.md

Flatpak

# Build locally (requires flatpak-builder)
flatpak-builder --user --install build io.gitlab.ilshat_apps.manuscript.yml

Uninstall

make uninstall

Packaging

System integrators can build with a custom prefix and staging directory:

make install PREFIX=/usr DESTDIR=$pkgdir

Community packages

  • Arch Linux (AUR): manuscript-git — build from the latest main commit.

Other community-maintained packages are welcome — open an issue with a link and it'll be listed here.

Tech Stack

  • Language: Rust
  • UI toolkit: GTK4 + libadwaita
  • Markdown parser: pulldown-cmark
  • Syntax highlighting: syntect
  • Editor: GtkSourceView 5
  • Rendering: native GtkTextView + TextTags (no WebKitGTK)

License

Manuscript is licensed under the GNU General Public License v3.0.