Marko Editor is a simple WYSIWYG editor for note taking.

Overview

Marko Editor

Marko Editor is a simple WYSIWYG editor for note taking written in Rust and GTK 4. It uses Markdown as storage format and can read simple Markdown files. However, the main focus of Marko Editor is WYSIWYG note taking and not being a 100% compliant Markdown editor.

Marko Editor in link edit mode screenshot

Background

Marko Editor is a learning project driven by my personal note taking requirements. Coming from a C++ and Qt background this is my first deeper venture into Rust and GTK. So you should expect some shortcomings in the source code:

  • Not (yet) idiomatic in several places.

  • Sometimes feature driven with technical dept.

  • Incomplete error handling with many unwrap.

Interesting Rust and GTK Parts

While the source code is not perfect, parts of it might serve as examples for GTK 4 development with Rust:


Extras for Note Taking

  • WYSIWYG editing with clean diffable file format (Markdown with CriticMarkup)

  • Colors for special highlights

  • Link titles are fetched automatically

  • A start page can be defined to access the most important notes right after starting

  • Bookmarks to important note documents

  • Optional outline for large documents


Development Status

Alpha stage - incomplete, not ready for production.

If you want to use it anyway, these are some of the issues to look out for:

  • The undo/redo stack currently doesn't know about the formatting.

  • The formatting works currently only on existing text and not directly while typing.

  • Restoring the window position is not 100% reliable.

Planned Features

Additional to the known shortcomings, in no particular order and time frame.

  • Image embedding (not only image reference editing like currently)

    • Snippet tool (screenshot with crop)

    • Might support Latex formulas

    • Might support additional diagramming tools (PlantUML, Mermaid, ...)

  • Knowledge maps (document in document, similar to OneNote)


Building

Linux

  • Make sure rust (the latest stable version) and the libs for gtk4 and x11 are installed.

  • cargo run to compile and run the program.

  • make DESTDIR=package/usr creates the contents for a standard installation on Linux.

  • Arch Linux: PKGBUILD is supplied.

  • Fedora (Rawhide): dnf install graphene-devel gtk4-devel libX11-devel


License

Marko Editor is distributed under the terms of the GPL version 3. See LICENSE.

You might also like...
Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust.

Deno Deno is a simple, modern and secure runtime for JavaScript and TypeScript that uses V8 and is built in Rust. Features Secure by default. No file,

Simple, thread-safe, counter based progress logging

🦫 proglog Documentation Crates.io This is a simple, thread-safe, count-based, progress logger. Synopsis proglog hooks into your existing log implemen

♾️ Fast & Simple AppImage manager
♾️ Fast & Simple AppImage manager

⚠️ Heavily in development (Not working) Leap Fast & Simple AppImage manager What's working Installation (github only, info about app not stored yet) R

A simple Iced application that I wrote as a learning activity, which allows you to browse the full list of regular Material Icons.
A simple Iced application that I wrote as a learning activity, which allows you to browse the full list of regular Material Icons.

Iced Material Icon Browser Iced Material Icon Browser is a simple Iced application that I wrote as a learning activity, which allows you to browse the

Crate for simple implementation of Component for Native API 1C:Enterprise written in rust

Гайд по использованию на русском языке можно посмотреть здесь и задать вопросы по использованию, но не оставляйте там комментарии об ошибках, т.к. там

A simple note taking application written in Rust and GTK4
A simple note taking application written in Rust and GTK4

Rnote A simple note taking application written in Rust and GTK4. Rnote aims to be a simple but functional note taking application for freehand drawing

Markdown LSP server for easy note-taking with cross-references and diagnostics.
Markdown LSP server for easy note-taking with cross-references and diagnostics.

Zeta Note is a language server that helps you write and manage notes. The primary focus is to support Zettelkasten-like1, 2 note taking by providing an easy way to cross-reference notes (see more about features below).

Jotsy is a self-hosted, free and open-source note taking app with a goal of simplicity in mind
Jotsy is a self-hosted, free and open-source note taking app with a goal of simplicity in mind

Jotsy: Just your notes Jotsy is a self-hosted, free and open-source note taking app with a goal of simplicity in mind. It is powered by Skytable. Read

Notabena, the pure Rust open-source note-taking app.

Notabena About Notabena is the free and open source note-taking app, written in pure Rust. Features These are our current planned features. (Most feat

A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system
A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Easy c̵̰͠r̵̛̠ö̴̪s̶̩̒s̵̭̀-t̶̲͝h̶̯̚r̵̺͐e̷̖̽ḁ̴̍d̶̖̔ ȓ̵͙ė̶͎ḟ̴͙e̸̖͛r̶̖͗ë̶̱́ṉ̵̒ĉ̷̥e̷͚̍ s̷̹͌h̷̲̉a̵̭͋r̷̫̊ḭ̵̊n̷̬͂g̵̦̃ f̶̻̊ơ̵̜ṟ̸̈́ R̵̞̋ù̵̺s̷̖̅ţ̸͗!̸̼͋

Rust S̵̓i̸̓n̵̉ I̴n̴f̶e̸r̵n̷a̴l mutability! Howdy, friendly Rust developer! Ever had a value get m̵̯̅ð̶͊v̴̮̾ê̴̼͘d away right under your nose just when

qn (quick note) is a simple, fast and user-friendly way to save notes 🦀⚙️
qn (quick note) is a simple, fast and user-friendly way to save notes 🦀⚙️

Quick Note qn Install This is currently for my personal use. I may push breaking changes at any time. If you want to use it, bring down the code and r

🎹 Simple MIDI note repeater plugin (VST3/CLAP).

⏱️ Clockwork A simple MIDI note repeater plugin, written in Rust. 🎬 Showcase: (turn on audio) clockwork-showcase.mp4 📖 Manual: The user manual can b

(WIP) Taking the pain away from file (de)compression

Ouch! ouch loosely stands for Obvious Unified Compression files Helper and aims to be an easy and intuitive way of compressing and decompressing files

Taking the best of Substrate Recipes and applying them to a new framework for structuring a collection of how-to guides.

Attention: This repository has been archived and is no longer being maintained. It has been replaced by the Substrate How-to Guides. Please use the Su

convert nostr keys and note-ids between hex and bech32

Key-Convertr People are copy-pasting nostr private keys into webpages to convert between the original hex-encoding and bech32-encoding (specified in N

A Rust utility library, making easier by taking the hassle out of working. :octocat:
A Rust utility library, making easier by taking the hassle out of working. :octocat:

reddish A Rust utility library, making easier by taking the hassle out of working. Usage Add this to your Cargo.toml: [dependencies] reddish = "0.2.0"

TIF is a terminal_image_format. (theres no TIF editor, so i made TIF images through a hex editor lol)

Colors these are the colors you can use when displaying images on the terminal BYTES: 5A = BLUE 5B = BLACK 5C = RED 5D = GREEN 5E = PURPLE 5F = WHITE

Dip editor: Multi-platform Text editor purely written in Rust

dip editor Multi-platform Text editor purely written in Rust, supercharged by Bevy game engine and Dioxus UI framework. heavily in development Why Gam

Comments
  • Fedora Rawhide failed to run custom build command for graphene-sys gdk4-x11-sys

    Fedora Rawhide failed to run custom build command for graphene-sys gdk4-x11-sys

    On Fedora Rawhide, when I ran cargo build --release I got the following errors:

    warning: `"pkg-config" "--libs" "--cflags" "graphene-gobject-1.0" "graphene-gobject-1.0 >= 1.10"` did not exit successfully: exit code: 1
    error: failed to run custom build command for `graphene-sys v0.13.0 (https://github.com/gtk-rs/gtk-rs#bd693ac8)`
    
    warning: `"pkg-config" "--libs" "--cflags" "gtk4-x11" "gtk4-x11 >= 4.0.0"` did not exit successfully: exit code: 1
    error: failed to run custom build command for `gdk4-x11-sys v0.1.0 (https://github.com/gtk-rs/gtk4-rs#63014057)`
    

    Resolution

    dnf install graphene-devel gtk4-devel libX11-devel
    
    opened by omac777 1
Owner
Michael
Michael
A simple, clean, and beautiful WYSIWYG Markdown editor and content-management system

ScribeDown Current version: v0.0.1 Feature level: See the roadmap Beautiful, Clean, Writer-Oriented The goal of ScribeDown is to make Markdown the bes

Alex Dumas 4 Dec 20, 2022
Graphical font editor (GTK + Rust)

gerb *gerb ʰ-: reconstructed Proto-Indo-European root, meaning to carve gerb: a WIP font editor in gtk3 and rust Introduction gerb is an experimental,

Manos Pitsidianakis 40 Jan 1, 2023
A simple, cross-platform GUI automation module for Rust.

AutoPilot AutoPilot is a Rust port of the Python C extension AutoPy, a simple, cross-platform GUI automation library for Python. For more information,

null 271 Dec 27, 2022
A simple UI framework for Rust built on top of IUP (http://webserver2.tecgraf.puc-rio.br/iup/)

KISS-UI A UI framework for Rust based on the KISS (Keep It Simple, Stupid!) philosophy. Powered by the IUP GUI library for C by Tecgraf, via the bindi

null 342 Jul 11, 2022
Simple and portable (but not inflexible) GUI library in C that uses the native GUI technologies of each platform it supports.

libui: a portable GUI library for C This README is being written. Status It has come to my attention that I have not been particularly clear about how

Pietro Gagliardi 10.4k Dec 31, 2022
A simple news reading GUI app built in Rust

Headlines [WIP] A native GUI app built with Rust using egui. Uses newsapi.org as the source to fetch news articles. This is a WIP and the current stat

creativcoder 89 Dec 29, 2022
A simple, efficient spring animation library for smooth, natural motion in Rust

Natura A simple, efficient spring animation library for smooth, natural motion in Rust Usage Natura is framework-agnostic and works well in 2D and 3D

O(ʒ) 57 Nov 14, 2022
A simple GUI version of the pH calibration tool written in egui, based on the eframe template.

caliphui A simple GUI version of the pH calibration tool written in egui, based on the eframe template. Usage Native binaries are provided under relea

Peter Dunne 0 Dec 29, 2021
Szyszka is a simple but powerful and fast bulk file renamer.

Szyszka is a simple but powerful and fast bulk file renamer. Features Written in Rust Available for Linux, Mac and Windows Simple GUI created

Rafał Mikrut 649 Dec 28, 2022
Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK.

Gtk Rust Fuzzer Simple GTK Rust Fuzzer which aims to test all available classes and functions in GTK. It finds bugs inside GTK functions, GTK exported

Rafał Mikrut 8 Nov 19, 2022