12 unstable releases (5 breaking)
|0.6.1||Feb 27, 2022|
|0.5.0||Jan 4, 2022|
|0.4.2||Jul 11, 2021|
|0.4.0||Mar 1, 2021|
|0.1.2||Mar 23, 2020|
#668 in Text processing
55 downloads per month
This 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:
It'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.
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.
From a release binary
You 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:
You'll need to have Rust and the
cargo tool. The easiest way to get that done is through rustup.rs.
You'll also need the GTK3 and Webkit2Gtk development files to be installed on your system. The Gtk-rs installation page might be a good start.
After that, you can build and install the app from
cargo install quickmd
Make sure that
~/.cargo/bin is in your
PATH so you can call the
Running the app is as simple as:
Pressing 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:
quickmd 0.6.0 A simple self-contained markdown previewer. Code highlighting via highlight.js version 9.18.1 Edit configuration in: /home/andrew/.config/quickmd/config.yaml Add custom CSS in: /home/andrew/.config/quickmd/custom.css USAGE: quickmd [FLAGS] [OPTIONS] [input-file.md] FLAGS: -d, --debug Activates debug logging -h, --help Prints help information --install-default-config Creates a configuration file for later editing if one doesn't exist. Exits when done -V, --version Prints version information --no-watch Disables watching file for changes OPTIONS: --output <directory> Builds output HTML and other assets in the given directory instead of in a tempdir. Will be created if it doesn't exist. Not deleted on application exit ARGS: <input-file.md> Markdown file to render. Use "-" to read markdown from STDIN (implies --no-watch). If not provided, the app will launch a file picker
Github-like rendering, though not guaranteed to be perfectly identical. Relying on whatever pulldown-cmark provides, which is good enough for me.
Fast and seamless preview updates on file write.
Ability to render STDIN, which allows partial rendering of target markdown. Try putting this bit of Vimscript in your
~/.vim/ftplugin/markdown.vim, select a few lines and press
Scroll with Vi-like keybindings, Press
eto spawn an editor, if configured.
Customizable keybindings. Check the API documentation or try
--install-default-configto get an annotated config with examples.
You 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:
You can also change some configuration options in a config file. Run
--install-default-config to create that file with all the defaults and comments.
--help to see where the config files will be located on your system, or press
F1 in the interface.