Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

616 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Arto

Arto β€” the Art of Reading Markdown.

A local app that faithfully recreates GitHub-style Markdown rendering for a beautiful reading experience.

Philosophy

Markdown has become more than a lightweight markup language β€” it's the medium for documentation, communication, and thinking in the developer's world. While most tools focus on writing Markdown, Arto is designed for reading it beautifully.

The name "Arto" comes from "Art of Reading" β€” reflecting the philosophy that reading Markdown is not just a utility task, but a quiet, deliberate act of understanding and appreciation.

Arto faithfully reproduces GitHub's Markdown rendering in a local, offline environment, offering a calm and precise reading experience with thoughtful typography and balanced whitespace.

Warning

Beta Software Notice

  • This application is still in beta and may contain bugs or unstable behavior. Features may change without regard to backward compatibility.
  • macOS Only: This application is currently designed exclusively for macOS and does not support other platforms. However, cross-platform support is a long-term goal, and PRs are welcome.

Features

Core Reading Experience

  • GitHub-Style Rendering β€” Accurate reproduction of GitHub's Markdown styling with full support for extended syntax
  • Native Performance β€” Built with Rust for fast, responsive rendering
  • Auto-Reload β€” Automatically updates when the file changes on disk
  • Offline First β€” No internet connection required β€” read your docs anytime, anywhere

Navigation & Organization

  • File Explorer β€” Built-in sidebar with file tree navigation for browsing local directories
  • Quick Access β€” Bookmark frequently used files and directories for instant access
  • Directory History β€” Back/forward navigation within the sidebar file explorer
  • Table of Contents β€” Automatic TOC panel for easy document navigation
  • Live Navigation β€” Navigate between linked markdown documents with history support (back/forward)

Search & Discovery

  • Find in Page β€” Search within documents with Cmd+F
  • Pinned Search β€” Pin search queries with persistent multi-color highlighting across sessions

Window & Tab Management

  • Tab Support β€” Open and manage multiple documents in tabs within a single window
  • Multi-Window β€” Create multiple windows and open child windows for diagrams
  • Cross-Window Tabs β€” Drag and drop tabs between windows
  • Drag & Drop β€” Simply drag markdown files onto the window to open them

Advanced Rendering

  • Mermaid Diagrams β€” Interactive diagram viewer with zoom, pan, and copy-as-image
  • Math Expressions β€” Beautiful KaTeX rendering for mathematical notation
  • Code Highlighting β€” Syntax highlighting with copy button for code blocks
  • Frontmatter β€” Renders YAML frontmatter as a styled, collapsible table
  • GitHub Alerts β€” Full support for NOTE, TIP, IMPORTANT, WARNING, and CAUTION alerts

Customization

  • Dark Mode β€” Manual and automatic theme switching based on system preferences
  • Zoom Controls β€” Keyboard shortcuts and trackpad gestures for zoom
  • Preferences β€” Configurable settings for sidebar, TOC, and more
  • Context Menus β€” Right-click menus for quick actions on files and content

Keyboard Shortcuts

Shortcuts are stored in mappings.json (next to config.json in the app config directory) and come in two kinds:

  • Menu shortcuts (menuShortcuts) β€” native OS menu accelerators. Single chord only (e.g. Cmd+o), shown in the menu bar, dispatched by the system, so they work even when no window has keyboard focus (e.g. Cmd+n with all windows closed). Keyed by a menu action such as file.open.
  • Keybindings (global and the per-context sections) β€” handled by the in-window engine. Support chord sequences (e.g. vim g g) and per-context behavior, but only fire while a document window has focus.

The same action may appear in both β€” for example file.open can be a native Cmd+o menu shortcut and additionally have an in-window keybinding.

Migrating an older mappings.json: files written before menuShortcuts existed still load unchanged. Menu-backed shortcuts you had under global (e.g. Cmd+o, Cmd+n) keep working via the engine, but to get native menu accelerators move those entries into a menuShortcuts section, or re-apply a preset (Default / Vim / Emacs) from Preferences.

macOS Integration

  • Quick Look β€” Press Space on any Markdown file in Finder to get a rendered preview
  • Finder Preview Pane β€” Markdown files display rendered HTML in the Finder sidebar preview pane

Installation

macOS

Use Homebrew tap to install. Since the application is not signed or notarized with an Apple Developer ID, you'll need to remove the quarantine attribute after installation. See homebrew-tap for more information.

brew install --cask arto-app/tap/arto
xattr -dr com.apple.quarantine /Applications/Arto.app

Tip

Quick Look preview not showing? macOS normally registers the Quick Look extension the first time you launch Arto. If pressing Space on a Markdown file still shows no preview β€” or a stale one right after an upgrade β€” register the extension manually and refresh the cache:

pluginkit -a /Applications/Arto.app/Contents/PlugIns/ArtoQuickLook.appex
qlmanage -r && qlmanage -r cache

Linux

On Debian and Ubuntu, download the .deb matching your architecture from the releases page and install it with apt, which pulls in the GTK/WebKit libraries it declares:

sudo apt install ./arto_<version>_amd64.deb

On every other distribution β€” Fedora, openSUSE, Arch β€” download the .AppImage instead, make it executable and run it:

chmod +x arto_<version>_x86_64.AppImage
./arto_<version>_x86_64.AppImage

The AppImage needs WebKitGTK 4.1 present on the system; on Fedora that is sudo dnf install webkit2gtk4.1.

Both artifacts are built on Ubuntu 24.04, so they require glibc 2.39 or newer (Ubuntu 24.04+, Debian 13+, Fedora 40+). On older distributions, build from source or use the Nix package below.

Nix

Nix is supported on both macOS and Linux. To try it without a permanent installation:

nix run github:arto-app/Arto

For a permanent installation, use nix-darwin or home-manager. Add the following to your flake inputs:

arto.url = "github:arto-app/Arto";

Then add it to environment.systemPackages (nix-darwin) or home.packages (home-manager):

environment.systemPackages = [ inputs.arto.packages.${system}.default ];

Launch the application to see the welcome screen with keyboard shortcuts and usage instructions.

Usage

After installation, the arto command becomes available in your terminal:

arto                     # Launch Arto (shows welcome screen)
arto README.md           # Open a specific file
arto --open=screen README.md
arto --open=new README.md
arto --directory=. README.md
arto docs/               # Open a directory in the file explorer
arto file1.md file2.md   # Open multiple files in tabs

Arto runs as a single instance β€” if Arto is already running, the command sends requests to the existing process instead of launching a new one.

  • arto FILE uses last_focused behavior by default (reuse last focused visible window).
  • --open=screen opens on/reuses a visible window on the cursor's current screen.
  • --open=new always opens in a new window.
  • --directory=DIR sets the FileExplorer root directory for that invocation.
  • Positional directory arguments (e.g. arto docs/) also set the root directory.
  • Running arto without arguments shows/focuses an existing window if hidden, or opens one if none exists.

Official Website

Visit arto-app.github.io for screenshots, feature highlights, and more.

Contributing

See CONTRIBUTING.md for development setup and guidelines.

License

See LICENSE file for details.

About

πŸ…°οΈ Arto β€” the Art of Reading Markdown.

Topics

Resources

Contributing

Stars

236 stars

Watchers

4 watching

Forks

Releases

Contributors

Languages