A fast, native markdown viewer for Linux, macOS and Windows built with Tauri v2, React, and markdown-it. Beautiful rendering of tables, code blocks, task lists, footnotes, and Mermaid diagrams — with live reload.
An independently maintained fork of marky by GRVYDEV (Apache-2.0), with continued releases. Not affiliated with or endorsed by marky's author.
Marque is a desktop markdown viewer designed for one thing: opening .md files from the terminal and getting beautiful, instant rendering. Launch it with marque FILENAME to view a file or marque FOLDER to open a folder as a persistent workspace (Obsidian-style). Files reload live as they change on disk, which makes it a good companion for plans and notes written by coding agents while they are being written.
Marque started as a hard fork of marky because the upstream AppImage crashed on Fedora / KDE / Wayland. It is now maintained independently, with its own feature set and signed, verifiable releases for Linux, macOS and Windows. It credits marky's authors and the upstream contributors whose changes it carries (see CHANGELOG.md and NOTICE); marky's author has not endorsed it, and support for marque happens here, not upstream.
Viewing
- CLI-first —
marque README.mdopens a window;marque ./docs/opens a folder;marquealone restores the last session. A second invocation reuses the running window. - Live reload — edits on disk (from your editor, an agent, a build) update the view instantly for files inside a folder workspace.
- Tabs and split panes — open several documents, split the active pane vertically or horizontally, drop a file onto the window to open it.
- Document links — relative and absolute links to other markdown files open in a tab (with
#headingscroll), in-page anchors scroll, external URLs open in the system browser. - On this page — a table of contents of the open document; sidebars are resizable.
- Find in document — ⌘F searches inside the open document.
- Highlights — mark a passage within one block (a paragraph, list item, table cell or heading) in one of five colours, attach a note, and review them in the highlights panel (toolbar highlighter button) with colour filters and agent-ready copy.
~/.config/marque/highlights.jsonstores line anchors, a keyed fingerprint of each passage and your notes, never the document's text. The fingerprint key is~/.config/marque/highlights.key(mode 0600 on Linux and macOS); copy it along withhighlights.jsonto keep highlights on another machine. - Content zoom, width and fonts — zoom the rendered content independently of the UI (70–200 %), choose Narrow / Wide / Full width, and pick the reading font (Geist, Inter, iA Writer Quattro, Literata, or System).
- Print — ⌘P prints the open document with a paper-friendly stylesheet.
- Copy — copy the document's markdown source, or copy exactly what you selected.
- Light & dark themes — follow the system or toggle; a warm, low-glare dark palette.
- Local images — images referenced relative to the document (or by absolute path) load like in any editor; the viewer may read only the registered folder that contains the document (or, for a file opened on its own, its folder), widened to the enclosing git repository when there is one — never a repository rooted at your home directory or above. An image outside that scope (
../shared/logo.pngfrom a file opened on its own outside any repository) loads once an enclosing directory is open as a folder.
Workspaces
- Folders — add folders as persistent workspaces; they appear in a sidebar and restore on launch. Marque never writes inside them.
- ⌘K command palette — fuzzy-search files across all open folders, powered by nucleo, instant even on large trees.
- Pinned files — pin any file to its own section above the folders, independent of workspaces.
- Sidebar that remembers — expanded directories are restored across sessions; collapse-all per folder;
.gitignoreand the usual build directories are respected. - Sort by last modified — a toggle in the folder sidebar header orders each tree newest first (directories still before files); the choice persists across sessions.
- Group labels — right-click a folder in the sidebar to give it a group label (or remove it from a group), and right-click a group header to rename the group. Folders sharing a label collect under one header even when they live in different repositories; unlabeled folders keep the automatic repository grouping.
- Drag out, reveal — drag a file from the sidebar or a tab into any drop target; open a file's location in the system file manager.
- Native dialogs — file and folder pickers go through the XDG desktop portal, so KDE and other non-GNOME desktops get their own dialog.
Rendering
- Syntax highlighting — Shiki with VS Code themes, loaded on demand.
- Mermaid diagrams — fenced
mermaidblocks render as SVG, in both themes. - GFM — tables, task lists, strikethrough, autolinks, footnotes; YAML front matter is stripped.
- Sanitized rendering — all HTML goes through DOMPurify; safe to view untrusted markdown.
- Fast — cold launch under two seconds with large folders registered; file watching is ignore-aware, non-recursive and capped per folder, so the UI never stalls on a rebuild. Native webview, no Electron.
Every release on the releases page ships:
| Platform | Files |
|---|---|
| Linux x86_64 and arm64 | .deb, .rpm, .AppImage |
| macOS (universal: Apple silicon and Intel) | .dmg |
| Windows x64 | -setup.exe (NSIS) and .msi |
macOS, Windows and Linux arm64 builds start with 0.4.8. Marque is developed and tested on Fedora / KDE Plasma / Wayland; the macOS and Windows builds come from CI and are not yet routinely tested on those systems, so reports are welcome.
Linux. The packages are built on Ubuntu 22.04 (glibc 2.35), so any distribution with glibc 2.35 or newer is expected to work (Ubuntu 22.04+, Debian 12+, Fedora 40+). The deb and rpm install /usr/bin/marque and register Marque for markdown files in the file manager.
# Fedora
sudo dnf install ./Marque-*.x86_64.rpm
# Debian / Ubuntu
sudo apt install ./Marque_*_amd64.debTo make marque FILE return to the prompt immediately instead of holding the terminal, install the CLI wrapper: download scripts/install-cli.sh, read it, and run it; it only writes a small wrapper to ~/.local/bin/marque.
macOS. The app is ad-hoc signed but not notarized (no Apple Developer ID yet), so Gatekeeper blocks the first launch: try to open it once, then allow it in System Settings → Privacy & Security → Open Anyway (on macOS 14 and earlier, right-click → Open in Finder also works). If macOS reports that the app "is damaged", first check the download (see Verifying a release); a verified, un-notarized download is usually only quarantined, which xattr -dr com.apple.quarantine /Applications/Marque.app clears. For the CLI: ln -s /Applications/Marque.app/Contents/MacOS/marque /usr/local/bin/marque.
Windows. The installers are not code-signed yet, so SmartScreen may warn on first run (More info → Run anyway). Add the install directory to PATH to use marque FILE from a terminal.
| Platform | Command |
|---|---|
| macOS (Homebrew tap) | brew tap superbiche/tap, then brew trust superbiche/tap (Homebrew 6 and later), then brew install --cask superbiche/tap/marque |
| Windows (Scoop bucket) | scoop bucket add superbiche https://github.com/superbiche/scoop-bucket then scoop install superbiche/marque |
Linux, the marque command only, from 0.4.9 (mise or packslip) |
mise use -g packslip:github.com/superbiche/marque, or packslip install github.com/superbiche/marque --pin ps1_5x4m7g7graj2ewtppa5pspwtbq |
The tap and the bucket update themselves from each release only after checking its build provenance. ps1_5x4m7g7graj2ewtppa5pspwtbq is the packslip signer fingerprint of marque's release workflow (packslip pin on the 0.4.9 bundle); with --pin, packslip accepts only releases signed there, even on a first install. Through mise, Linux gets the AppImage as the marque command, verified against the release's signed packslip, without desktop integration; use the deb or rpm for the file manager entry.
Release tags are signed by the maintainer, and the release workflow refuses any tag that is not. Each release lists every asset in SHA256SUMS, includes an SPDX SBOM, and attaches GitHub build provenance to every file, SHA256SUMS included. From 0.4.9 it also carries packslip.sigstore.json, a packslip signed by the release workflow that describes each installer's platform, format and digest. The release notes give the exact commands (the signer's fingerprint check, gh attestation verify, sha256sum -c, packslip verify).
Requires Rust, Node.js, pnpm, and the system webkit2gtk4.1 development packages.
git clone https://github.com/superbiche/marque.git
cd marque
pnpm install
pnpm tauri build
./scripts/install-cli.shThe install script installs a marque wrapper to ~/.local/bin/. Make sure that's on your PATH:
# bash/zsh
export PATH="$HOME/.local/bin:$PATH"
# fish
set -Ux fish_user_paths $HOME/.local/bin $fish_user_paths# Open a single file
marque README.md
# Open a folder as a workspace
marque ./docs/
# Open with no args — restores your last session
marque⌘ is Ctrl on Linux.
| Shortcut | Action |
|---|---|
⌘K |
Command palette (fuzzy file search) |
⌘O |
Open file |
⌘F |
Find in document |
⌘P |
|
⌘\ |
Split the active pane vertically |
⌘⇧\ |
Split the active pane horizontally |
⌘W |
Close the active tab |
⌘+ / ⌘− / ⌘0 |
Content zoom in / out / reset |
pnpm install
pnpm tauri dev # dev server with HMR# Frontend
pnpm test
# Rust
cd src-tauri && cargo testsrc-tauri/ Rust backend — CLI, file I/O, file watching, folder registry, fuzzy search
src/ React frontend — markdown pipeline, UI components, theme
src/components/ App components (Viewer, Sidebar, CommandPalette, etc.)
src/components/ui/ shadcn/ui primitives
src/lib/ Core logic (markdown-it config, Shiki, Tauri IPC wrappers)
src/styles/ Tailwind base + markdown prose styles
scripts/ Install helpers
| Layer | Tech |
|---|---|
| Desktop shell | Tauri v2 |
| Frontend | React + TypeScript + Vite |
| Markdown | markdown-it |
| Syntax highlighting | Shiki |
| Diagrams | Mermaid |
| Fuzzy search | nucleo |
| UI primitives | shadcn/ui |
| Styling | Tailwind CSS |
| File watching | notify |
Issues and pull requests are welcome. Read CONTRIBUTING.md for the development setup, the checks CI runs, and what is in and out of scope (marque stays a read-only viewer). Security problems go through SECURITY.md, not public issues.
Marque is a hard fork of marky, renamed and maintained independently since August 2026. It is actively maintained: dependencies are updated weekly through Dependabot and every PR gets CI plus an automated review before a maintainer looks at it.
Apache License 2.0. See NOTICE for attribution to the original marky project and bundled third-party components.
