{"id":20838877,"url":"https://github.com/andrewradev/quickmd","last_synced_at":"2025-04-06T12:07:40.934Z","repository":{"id":4374239,"uuid":"195553170","full_name":"AndrewRadev/quickmd","owner":"AndrewRadev","description":"Quickly preview a markdown file","archived":false,"fork":false,"pushed_at":"2025-03-11T16:25:31.000Z","size":249,"stargazers_count":39,"open_issues_count":3,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-03-30T11:06:37.994Z","etag":null,"topics":["desktop-app","github-stylesheet","gtk","markdown","preview","rust"],"latest_commit_sha":null,"homepage":"https://crates.io/crates/quickmd","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AndrewRadev.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE-APACHE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-07-06T15:13:08.000Z","updated_at":"2025-03-11T16:25:35.000Z","dependencies_parsed_at":"2023-01-16T18:31:39.343Z","dependency_job_id":null,"html_url":"https://github.com/AndrewRadev/quickmd","commit_stats":null,"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrewRadev%2Fquickmd","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrewRadev%2Fquickmd/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrewRadev%2Fquickmd/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AndrewRadev%2Fquickmd/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AndrewRadev","download_url":"https://codeload.github.com/AndrewRadev/quickmd/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247478320,"owners_count":20945266,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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","github-stylesheet","gtk","markdown","preview","rust"],"created_at":"2024-11-18T01:11:45.940Z","updated_at":"2025-04-06T12:07:40.916Z","avatar_url":"https://github.com/AndrewRadev.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cimg src=\"http://i.andrewradev.com/d3a00907171ff14e51814fedcf4c03a4.png\" width=300 /\u003e\n\n[![Crate](https://img.shields.io/crates/v/quickmd)](https://crates.io/crates/quickmd)\n[![Documentation](https://docs.rs/quickmd/badge.svg)](https://docs.rs/quickmd)\n[![Maintenance status](https://img.shields.io/badge/maintenance-actively--developed-brightgreen.svg)](https://crates.io/crates/quickmd)\n\n# QuickMD\n\nThis project is a simple tool that solves a simple problem: I'd like to preview markdown files as they'll show up on Github, so I don't have to push my READMEs before I can tell whether they're formatted well enough. It ends up looking like this:\n\n![Demo](http://i.andrewradev.com/ad155fa1a15f27beeb13b74d277212e4.gif)\n\nIt's a Rust app that launches a GtkWebkit window that renders the compiled HTML of the given markdown file. It monitors this file for any changes and reloads. It uses a stylesheet that's literally copied off Github's markdown stylesheet.\n\n_Note: I have no idea if I'm allowed to use Github's stylesheet. The relevant file is in res/style/github.css, and if I am told I shouldn't be using it I'll go ahead and scrub it from git history._\n\n## Installation\n\n### From a release binary\n\nYou should be able to find a compiled 64-bit linux binary in every release since v0.4.1. You can put it in your `$PATH` and launch it, as long as you have GTK3 and Webkit2Gtk installed on your system. On Arch Linux, you can install these like so:\n\n``` .sh-session\n# pacman -S gtk3 webkit2gtk\n```\n\n### From source\n\nYou'll need to have Rust and the `cargo` tool. The easiest way to get that done is through [rustup.rs](https://rustup.rs/).\n\nYou'll also need the GTK3 and Webkit2Gtk _development_ files to be installed on your system. The Gtk-rs [installation page](https://www.gtk.org/docs/installations/) might be a good start.\n\nAfter that, you can build and install the app from `crates.io` using:\n\n```\ncargo install quickmd\n```\n\nMake sure that `~/.cargo/bin` is in your `PATH` so you can call the `quickmd` executable.\n\n## Usage\n\nRunning the app is as simple as:\n\n```\nquickmd \u003cmarkdown-file\u003e\n```\n\nPressing CTRL+Q will close the window. Running it with `--help` should provide more info on the available options. Here's how the output looks for me:\n\n```\nquickmd 0.6.0\nA simple self-contained markdown previewer.\n\nCode highlighting via highlight.js version 9.18.1\n\nEdit configuration in: /home/andrew/.config/quickmd/config.yaml\nAdd custom CSS in:     /home/andrew/.config/quickmd/custom.css\n\nUSAGE:\n    quickmd [FLAGS] [OPTIONS] [input-file.md]\n\nFLAGS:\n    -d, --debug\n            Activates debug logging\n\n    -h, --help\n            Prints help information\n\n        --install-default-config\n            Creates a configuration file for later editing if one doesn't exist. Exits when done\n\n    -V, --version\n            Prints version information\n\n        --no-watch\n            Disables watching file for changes\n\n\nOPTIONS:\n        --output \u003cdirectory\u003e\n            Builds output HTML and other assets in the given directory instead of in a tempdir. Will be created if it\n            doesn't exist. Not deleted on application exit\n\nARGS:\n    \u003cinput-file.md\u003e\n            Markdown file to render. Use \"-\" to read markdown from STDIN (implies --no-watch). If not provided, the app\n            will launch a file picker\n```\n\n## Features\n\n- Github-like rendering, though not guaranteed to be perfectly identical. Relying on whatever [pulldown-cmark](https://crates.io/crates/pulldown-cmark) provides, which is good enough for me.\n\n- Fast and seamless preview updates on file write.\n\n- Code highlighting via [highlight.js](https://highlightjs.org/). Currently, the relevant javascript is included via a CDN, which unfortunately means it won't work without an internet connection.\n\n- Ability to render STDIN, which allows partial rendering of target markdown. Try putting [this bit of Vimscript](https://github.com/AndrewRadev/Vimfiles/blob/f9e0c08dd280d13acb625d3370da399c39e14403/ftplugin/markdown.vim#L11-L15) in your `~/.vim/ftplugin/markdown.vim`, select a few lines and press `!`.\n\n- Scroll with Vi-like keybindings, Press `e` to spawn an editor, if configured.\n\n- Customizable keybindings. Check the API documentation or try `--install-default-config` to get an annotated config with examples.\n\n## Configuration\n\nYou can change the CSS of the preview HTML by writing a file named \"custom.css\" in the application's config directory. On a linux machine, it would be: `~/.config/quickmd/`.\n\nYou can also change some configuration options in a config file. Run `quickmd` with `--install-default-config` to create that file with all the defaults and comments.\n\nRun `--help` to see where the config files will be located on your system, or press `F1` in the interface.\n\nThe built-in CSS that is used is stored in [/res/style](./res/style) and the default config is in [/res/default_config.yaml](./res/default_config.yaml)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewradev%2Fquickmd","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fandrewradev%2Fquickmd","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fandrewradev%2Fquickmd/lists"}