{"id":42969499,"url":"https://github.com/aydiler/md-viewer","last_synced_at":"2026-05-24T00:06:38.998Z","repository":{"id":334438313,"uuid":"1138680461","full_name":"aydiler/md-viewer","owner":"aydiler","description":"Fast, lightweight markdown viewer for Linux with tabs, file explorer, and live reload","archived":false,"fork":false,"pushed_at":"2026-05-15T03:45:43.000Z","size":5010,"stargazers_count":11,"open_issues_count":3,"forks_count":3,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-15T04:43:30.277Z","etag":null,"topics":["desktop-app","egui","file-explorer","linux","markdown","markdown-viewer","rust","syntax-highlighting","wayland","x11"],"latest_commit_sha":null,"homepage":null,"language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/aydiler.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-21T01:32:05.000Z","updated_at":"2026-05-15T03:45:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/aydiler/md-viewer","commit_stats":null,"previous_names":["aydiler/md-viewer"],"tags_count":10,"template":false,"template_full_name":null,"purl":"pkg:github/aydiler/md-viewer","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydiler%2Fmd-viewer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydiler%2Fmd-viewer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydiler%2Fmd-viewer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydiler%2Fmd-viewer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/aydiler","download_url":"https://codeload.github.com/aydiler/md-viewer/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/aydiler%2Fmd-viewer/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33416325,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-23T22:14:44.296Z","status":"ssl_error","status_checked_at":"2026-05-23T22:14:43.778Z","response_time":53,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["desktop-app","egui","file-explorer","linux","markdown","markdown-viewer","rust","syntax-highlighting","wayland","x11"],"created_at":"2026-01-31T00:23:06.770Z","updated_at":"2026-05-24T00:06:38.958Z","avatar_url":"https://github.com/aydiler.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# md-viewer\n\n[![Crates.io](https://img.shields.io/crates/v/md-viewer.svg)](https://crates.io/crates/md-viewer)\n[![AUR](https://img.shields.io/aur/version/md-viewer-git)](https://aur.archlinux.org/packages/md-viewer-git)\n[![Snap](https://img.shields.io/badge/snap-md--viewer-blue?logo=snapcraft)](https://snapcraft.io/md-viewer)\n[![License: MIT](https://img.shields.io/badge/License-MIT-blue.svg)](https://opensource.org/licenses/MIT)\n[![GitHub stars](https://img.shields.io/github/stars/aydiler/md-viewer)](https://github.com/aydiler/md-viewer/stargazers)\n\nA fast, lightweight markdown viewer for Linux built with Rust and egui. Designed for distraction-free reading with excellent typography and syntax highlighting.\n\n![Dark Mode](screenshots/dark-mode.png)\n\n## Features\n\n### Rendering\n- **GitHub Flavored Markdown** - Full GFM support including tables, task lists, and footnotes\n- **Syntax Highlighting** - 200+ languages via syntect with beautiful color schemes\n- **Mermaid Diagrams** - Flowcharts, sequence diagrams, and more rendered natively via [merman](https://github.com/Latias94/merman) (click to enlarge)\n- **Resizable Table Columns** - Drag column dividers to fit content (new in v0.1.5)\n- **HTML Tables** - Rendered as formatted grids with proper cell padding\n- **Images \u0026 SVG** - Embedded and remote image support (PNG, JPEG, GIF, SVG, HTTP URLs)\n- **Unicode Support** - System font fallbacks (Noto, DejaVu) for emojis, CJK, and non-Latin scripts\n- **60 FPS Rendering** - Viewport virtualization keeps scroll smooth on 100k+ line docs\n- **Typography** - 1.5x line height for optimal readability (WCAG 2.1 compliant)\n\n### Navigation\n- **Tab System** - Open multiple documents with tab bar (Ctrl+Click links to open in new tab)\n- **In-Document Search (Ctrl+F)** - Find bar with inline highlights, Enter/Shift+Enter to cycle matches\n- **File Explorer** - Hierarchical sidebar with lazy-loading directories and sorting options\n- **Outline Sidebar** - Click-to-navigate table of contents from document headers\n- **Navigation Buttons** - Back/forward buttons in title bar for quick history navigation\n- **Per-Tab History** - Independent back/forward navigation within each tab (Alt+Left/Right)\n- **Internal Links** - Navigate between markdown files with relative links\n\n### View\n- **Dark \u0026 Light Themes** - Toggle with Ctrl+D\n- **Zoom** - 50% to 300% zoom (Ctrl++/-/0 or Ctrl+Scroll)\n- **Live Reload** - Auto-refresh on file changes (enabled by default)\n\n### Usability\n- **Drag and Drop** - Drop markdown files onto the window to open\n- **Native Dialogs** - System file picker integration\n- **Session Persistence** - Remembers open tabs, theme, zoom, and sidebar state\n- **Cross-Platform** - Works on X11 and Wayland\n\n## Screenshots\n\n### Dark Mode\n*Mermaid flowchart, tech stack table, file explorer, and outline sidebar*\n\n![Dark Mode](screenshots/dark-mode.png)\n\n### Dark Mode -- Syntax Highlighting\n*Rust and YAML code blocks with semantic coloring, mermaid sequence diagram*\n\n![Syntax Highlighting](screenshots/syntax-highlighting.png)\n\n### Light Mode\n*Documentation with bullet lists, blockquotes, inline code, and bash code blocks*\n\n![Light Mode](screenshots/light-mode.png)\n\n### Light Mode -- API Docs\n*JSON syntax highlighting, inline code rendering, and outline navigation*\n\n![Syntax Highlighting Light](screenshots/syntax-highlighting-light.png)\n\n### Light Mode -- Tables \u0026 Lists\n*Troubleshooting table with inline code in cells, ordered list, and resizable columns (drag dividers)*\n\n![Tables](screenshots/tables.png)\n\n### Search (Ctrl+F)\n*Find bar with inline highlights and match counter; Enter / Shift+Enter to cycle*\n\n![Search](screenshots/search.png)\n\n### Resizable Table Columns\n*Drag column dividers to fit wide content (new in v0.1.5)*\n\n![Resizable Tables](screenshots/resizable-tables.png)\n\n## Keyboard Shortcuts\n\n### Tab Management\n\n| Shortcut | Action |\n|----------|--------|\n| Ctrl+T | New tab (open file dialog) |\n| Ctrl+W | Close current tab |\n| Ctrl+Tab | Next tab |\n| Ctrl+Shift+Tab | Previous tab |\n| Ctrl+1-9 | Switch to tab 1-9 |\n\n### Navigation\n\n| Shortcut | Action |\n|----------|--------|\n| Ctrl+O | Open file dialog |\n| Alt+Left | Navigate back in history |\n| Alt+Right | Navigate forward in history |\n| Click link | Navigate in current tab |\n| Ctrl+Click link | Open link in new tab |\n\n### Search\n\n| Shortcut | Action |\n|----------|--------|\n| Ctrl+F | Open find bar (or refocus if already open) |\n| Enter / ↓ | Jump to next match |\n| Shift+Enter / ↑ | Jump to previous match |\n| Esc | Close find bar and clear highlights |\n\n### View\n\n| Shortcut | Action |\n|----------|--------|\n| Ctrl+D | Toggle dark/light mode |\n| Ctrl+Shift+E | Toggle file explorer |\n| Ctrl+Shift+O | Toggle outline sidebar |\n| Ctrl++ / Ctrl+= | Zoom in |\n| Ctrl+- | Zoom out |\n| Ctrl+0 | Reset zoom to 100% |\n| Ctrl+Scroll | Zoom with mouse wheel |\n\n### File Operations\n\n| Shortcut | Action |\n|----------|--------|\n| F5 | Toggle file watching |\n| Ctrl+Q | Quit application |\n\n## Installation\n\n### Quick Install (Linux / macOS) — recommended\n\nDownloads the prebuilt binary for your platform, verifies its SHA256, and installs to `~/.local/bin`. No compilation, takes seconds.\n\n```bash\ncurl -fsSL https://raw.githubusercontent.com/aydiler/md-viewer/main/scripts/install.sh | sh\n```\n\nSupports Linux x86_64 and macOS arm64 (Apple Silicon). Set `INSTALL_DIR=/usr/local/bin` to install elsewhere. Intel Macs need to build from source via `cargo install md-viewer`.\n\n\u003e **macOS Gatekeeper note:** binaries are not yet signed/notarized. If macOS refuses to run the app, run:\n\u003e `xattr -d com.apple.quarantine ~/.local/bin/md-viewer`\n\n### Snap Store\n\n```bash\nsudo snap install md-viewer\n```\n\nAuto-updates via snapd.\n\n### Arch Linux (AUR)\n\n```bash\nyay -S md-viewer-git    # or: paru -S md-viewer-git\n```\n\nBuilds from the latest `main` commit (rolling) — your system update grabs new versions automatically.\n\n### Flatpak / Flathub\n\nOnce published to Flathub:\n\n```bash\nflatpak install flathub io.github.aydiler.md-viewer\n```\n\n(Flathub submission in progress — see `flatpak/` and `PUBLISHING.md`.)\n\n### Windows\n\nDownload `md-viewer-\u003cversion\u003e-windows-x86_64.zip` from the [latest release](https://github.com/aydiler/md-viewer/releases/latest), extract `md-viewer.exe`, and run it. Verify the included `.sha256` if you'd like.\n\n### Cargo (crates.io) — slower, builds from source\n\n```bash\ncargo install md-viewer\n```\n\nCompiles locally (~2–3 minutes). Update with `cargo install --force md-viewer`. Requires the system dependencies listed below.\n\n### From Source\n\n```bash\ngit clone https://github.com/aydiler/md-viewer\ncd md-viewer\ncargo build --release\nmake install   # installs to ~/.local/bin (optional)\n```\n\n### System Dependencies (Arch Linux)\n\nOnly needed for `cargo install` / building from source:\n\n```bash\nsudo pacman -S --needed \\\n    base-devel clang pkg-config \\\n    libxcb libxkbcommon openssl \\\n    gtk3 fontconfig dbus zenity \\\n    xdg-desktop-portal xdg-desktop-portal-gtk\n```\n\n## Usage\n\n```bash\n# Open a file (live reload is enabled by default)\nmd-viewer README.md\n\n# Disable live reload\nmd-viewer README.md --no-watch\n```\n\n## Technical Details\n\n- **Binary size**: ~35 MB (includes syntax highlighting, mermaid renderer, math rendering, image support, X11+Wayland). ~7 MB as snap.\n- **Startup time**: \u003c 200ms\n- **Rendering**: 60 FPS with viewport-based clipping\n- **Memory**: Uses mimalloc for improved allocation performance\n- **Platform**: Linux (X11 and Wayland via glow backend)\n\n### Built With\n\n- [eframe/egui](https://github.com/emilk/egui) - Immediate mode GUI framework\n- [egui_commonmark](https://github.com/lampsitter/egui_commonmark) - Markdown rendering (vendored fork with typography improvements)\n- [merman](https://github.com/Latias94/merman) - Mermaid diagram rendering\n- [syntect](https://github.com/trishume/syntect) - Syntax highlighting\n- [notify](https://github.com/notify-rs/notify) - File watching\n- [rfd](https://github.com/PolyMeilex/rfd) - Native file dialogs\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faydiler%2Fmd-viewer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faydiler%2Fmd-viewer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faydiler%2Fmd-viewer/lists"}