Open Source Components

We’re making ThiefMD components reusable. You can find the components in at We’re also built on top of other great open source software


libwritegood is like GtkSpell for style. libwritegood is based on btford/write-good. It’s easy to use, for example:

var manager = Gtk.SourceLanguageManager.get_default ();
var language = manager.guess_language (null, "text/markdown");
var view = new Gtk.SourceView ();
buffer = new Gtk.SourceBuffer.with_language (language);
buffer.highlight_syntax = true;
view.set_buffer (buffer);
view.set_wrap_mode (Gtk.WrapMode.WORD);

// Enable write-good

checker = new WriteGood.Checker ();
checker.set_language ("en_US");
checker.attach (view);

// Disable hard sentences
checker.check_hard_sentences = false;

// Quick check only scans around the last check cursor position, and
// and the current cursor position
buffer.changed.connect (() => {
    checker.quick_check ();

// Recheck all will scan the entire document
buffer.paste_done.connect ((clipboard) => {
    checker.recheck_all ();


writeas-vala is a Write Freely client library. It can be used for submitting and managing posts on or any other Write Freely instance.


Ghost-vala is a simple library for publishing posts to ghost blogs.


WordPress-vala is a simple library for publishing posts to WordPress blogs. It contains some workarounds and retries for some common issues.


Medium-vala is a simple library for publishing posts to Medium.


Forem-vala is a simple library for publishing posts to Forem communities (like


Hashnode-vala is a simple library for publishing posts to Hashnode.


BibTeX-vala is a quick processor for BibTeX files. It generates a HashMap of items in the BibTeX file and allows for querying a list of the labels and getting a title for the label.

public static void main () {
    // Set file
    BibTex.Parser parser = new BibTex.Parser ("test.bib");
    // Parse
    parser.parse_file ();

    // Print labels and titles
    foreach (var label in parser.get_labels ()) {
        print ("%s - %s\n", label, parser.get_title (label));

Theme Generator

Theme Generator helps generate Markdown editor themes for Ulysses and GtkSourceView based editors.

Have a consistent writing environment no matter where you’re at.


ultheme-vala, a converter for Ulysses Themes to markdown GtkSouceView Style Schemes.

ultheme-vala converts a ultheme package into both a light and dark GtkSourceView Style Scheme. In ThiefMD, we load the file and then persist the theme to disk.

public static int main (string[] args) {
    var ultheme = new Ultheme.Parser (File.new_for_path (args[1]));
    // Display resulting Dark Theme XML for GtkSourceView
    print (ultheme.get_dark_theme ());

    return 0;

Stolen Victory Duo

Stolen Victory Duo is a mashup of iA Writer Duospace with Victor Mono. It aims to be digitally authentic with human approachability.

You can try it here: