Mark Text: Simple and Elegant Markdown Editor Focused on Speed and Usability
marktext.app
marktext.app
Before seeing this just now, Typora (https://news.ycombinator.com/item?id=21458977) was the only Markdown editor I had encountered that does this, but it is not open-source. Another was the halfway-in-between (shows both syntax and rendering) Abricotine (https://github.com/brrd/Abricotine) which has the sense to mention it as the main feature: “Markdown editor with inline preview” and “you can preview your document directly in the text editor rather than in a side pane”.
Are there any other editors like this?
Exactly. It has a little bit of an IA Writer feel except that you no longer need a preview window thanks to this feature.
They use a proprietary library and don't allow local folders of text files, though...
Both of these apps do not abstract away the markup after a word is typed. This is the killer feature of Typora, along with the ability to completely redesign the entire editor yourself with a custom style sheet (along with awesome image management).
Typora has completely taken over my markdown workflow because of this.
I’ve tried Bear, Ulysses, IA writer, and countless others. None have this clever blended preview like Typora.
Given that it is branded as a note taking application it makes sense both from a business and implementation point of view.
Bear also kinda uses its own rendering for some things. Like dashes turn into checkboxes rather than unordered lists. Again, for a note app, checkboxes are really neat!
I’ve been using it for 2-3 month and really like it!
What I’d really love is a way to get the GitHub flavored markdown rendering engine in an offline local editor. Any that do this?
It looks like the editor is called Muya: https://github.com/marktext/muya
And according to this issue: https://github.com/marktext/muya/issues/6
The best way to get access to the latest version of the control is to use the source here: https://github.com/marktext/marktext/tree/develop/src/muya
Demo here: http://dohan.io
One problem with this is with to-do lists, where instead of having the user modifying the underlying text representation in the editor, I wanted the user to be able to check off an item via the rendered html. For this, it seems like I needed three components: an editor, a render, and a non-flat data model.
I've thought about porting to Jupyter too, but the plugin system on JupyterLab is pretty involved, and you lose plain text storage on the server side.
https://stackoverflow.com/questions/11948245/markdown-to-cre...
Whenever I'm editing markdown files, it's usually in a folder of notes, or blog posts, or writing of some kind. And it'd be nice to be able to cycle through several open files like you would in VS Code.
I tried writing my own but -- I just didn't have time and got bored of it.
Have you heard of editors that are specific for markdown and have this feature?
https://code.visualstudio.com/docs/languages/markdown
I use this extension which I like a lot:
https://marketplace.visualstudio.com/items?itemName=yzhang.m...
You pretty much describe how I'm using MarkText all the time. On the left, you have a file panel (or search or navigation inside your file) which you can hide/ show with a keystroke. On the top, you have several tabs for your open files. And yes, you can set a default folder.
Anyways, I went to the trouble of unblocking it. This involved going to OSX's settings dialog and finding the Security & Privacy window to unblock.
The text rendering is awful. It's blurry and smudged on my non-retina display due to not using subpixel smoothing. Here's a screenshot comparing Atom (top) to Mark Text (bottom): https://imgur.com/UEJbsl4
Highlighting and pasting text is totally unpredictable. Try pasting in 10 * characters and you'll see that it's almost impossible. How are you supposed to do this? Sometimes it replaces * with \*, sometimes not. And sometimes it replaces it with - ??
I tried to copy paste a few paragraphs of text a few times, and once it turned into this strange highlighted text that when I started a new paragraph, deleted all of my newlines. What's going on?
This editor does not seem ready yet.
The "right" way to do this is right-click on the application, and choose "Open". This allows a one-time bypass on a per-application basis.
I find this to be a good trade off between running any unsigned binary and complete lockdown. It’s enough of a barrier to make you stop and think, but doesn’t take too much effort to get past.
Works fine for me: https://i.imgur.com/QssB5YV.gif
Note that:
• The premise of the app is that you type or paste in Markdown syntax, and see the corresponding rendered output in the editor (except when the cursor is inside that area). As asterisks have a special meaning in Markdown, you should expect to see bold text (rather than the asterisks) when you type or paste something like asterisk-asterisk-foo-asterisk-asterisk.
• The intended meaning of ten asterisks in a row is hard to predict from the Markdown syntax definition. Their rendering as two bold asterisks seems to be not what the majority of Markdown converters do, but according to Babelmark it is consistent with a few, including the original Markdown.pl: https://johnmacfarlane.net/babelmark2/?text=Asterisks+on+the... (Of course, it is best to avoid any such edge cases where Markdown converters differ; CommonMark notwithstanding.)
Phrasing isn't flattering to an open source app given away for free, with no tracking.
However, you are right on the usability. It's worthwhile to file a bug to sign the app, and if possible, fund the certificate
For instance https://qgis.org just started notarizing for MacOS Catalina, but it's easier with the huge userbase & sponsors.
I like the idea behind it though.
Electron wins because Electron apps are able to deliver consistently decent UX, something that never happened with Swing or GTK+ or WxWidgets or whatever.
Sure, it eats RAM. It turns out that I care about that so much less than I thought I would. I'm rarely using 100% of my system's RAM these days, so I'm willing to burn a couple hundred MB on widgets continuing to be sensibly drawn and laid out when I resize the window.
It's just that when I hear a "simple markdown editor", I don't envision an app with a bundled web browser. I'm sure it looks great and all that.
As far as the argument goes, I'm not sure they're really separable. If you have an Electron app that markets itself as being simple (as in "easy to use"), and someone says, "No it isn't, because the stack it's built on is complex", their unstated major premise is that implementation details are more important than UI. Leaving it unstated doesn't mean it shouldn't be addressed head-on. One of a syllogism's legs can easily be both tacit and the crux of the argument at the same time.
That's right, now you just have to deal with open source OpenGL libraries or of course write it yourself.
Handle unicode, sub/superscripts, RTL text, typography nuances, LaTeX etc. by yourself.
(See more at https://gankra.github.io/blah/text-hates-you/)
Also do it in your free time because probably you won't make a living out of it.
So I totally understand why anyone would pick a browser engine where all of this is super easy to solve.
Have you heard of, say, Qt?
It sure is nice having a powerful developer machine with 16 or 32 gb of RAM. Just remember there are a lot of people out there running on 4gb laptops or even less. These days, the OS, web browser, and Slack alone are already enough to max it out and start swapping.
I'm also not sure you can just assume that an Electron app will be a giant memory hog compared to the alternatives. I just decided to go and give it a quick look-see. Right now I've got both vscode and IntelliJ IDEA open at the same time. (For my purposes, they're at feature parity, except that I don't like vscode's Java plugin). IntelliJ, a non-Electron cross-platform app, is consuming 3 GB of RAM. vscode, an Electron app, is using 50MB. That's 1/60 as much. Meld, a GTK+ app that doesn't do nearly as much, consumes 100MB just sitting idle, which is twice as much as the Electron app does.
I'll come out and say it: I suspect that, deep down, this argument is not really about memory or anything like that. It's really a proxy war about JavaScript. Which, I get it, I hate JavaScript too. I resolutely avoid working on things with UIs at work, probably to the detriment of my career, just to avoid programming in JavaScript. But I've also got to concede that Electron has accomplished something that everyone else has consistently failed at: Delivering decent cross-platform GUI applications. And it's pointless to complain about people using X technology when it has no truly viable alternatives.
Qt, Gtk+, WxWidgets... There are lots of ways to skin this cat.
Seems reasonable for 2019.
Also, in laptops you cannot upgrade the motherboard.
No? ~$100 is remarkably cheap for a new motherboard, especially if you are complaining about needing 32+GB of RAM, which costs substantially more than $40. If you want something like a $35 Raspberry pi, buy one and accept its limitations.
It does not make sense if 4 Gb mean that you can only run a browser and Notepad.
If, however, you are a bit older and you remember the time that you had the choice between 4 MB and 8 MB and people were still able to do all their computer stuff, including internet, in a graphical environment, then you thoughts are more in the line of: what the fuck are these lazy and incompetent programmers doing these days? And this is coming from someone who earns a living as a developer.
If you spend a half hour over the entire life of your machine even considering RAM, you might as well double it for $30.
Using RAM is good. It's fast, it's cheap, and anybody with 8 gigs has it in abundance
The Windows tablet/notebook (hybrid) being sold as their latest product by a company I'm doing business with at the moment has 4GB. It's a shame, because Electron would totally fit what their business runs on those tablets, which is a Javascript-based graphical environment...
I happen to have a Markdown file open in MacDown, a native application, right now. According to Activity Monitor, it's using 67.1 MB of RAM. I also downloaded Mark Text to take a look at it. So now I've got the same Markdown file open in that app, too. It's using 73.9 MB of RAM.
I will admit, that difference in memory consumption is equivalent to seven instances of vim, and I'll keep that in mind the next time I'm trying to get things done on a Raspberry Pi Zero. (As one does.)
But, on this 6-year-old computer, which does not have "over 8 or 16 GB of RAM", I'm still not sweating that 6.8 megabytes.
To test it myself, I started the program (with --no-sandbox because it requires root privileges otherwise) and measured memory usage using smem:
$ sudo smem --userfilter=nobody -k --totals
PID User Command Swap USS PSS RSS
23365 nobody /tmp/.mount_markteqQvqZF/ma 0 6.3M 14.2M 37.7M
23388 nobody /tmp/.mount_markteqQvqZF/ma 0 46.6M 59.4M 90.9M
23363 nobody ./marktext --no-sandbox 0 53.3M 76.3M 118.4M
23392 nobody /tmp/.mount_markteqQvqZF/ma 0 121.1M 142.3M 183.0M
PSS (Potential Set Size) [1] numbers are additive unlike RSS, so we can sum them and get around 291 Mb of RAM. This counts pages, that are shared between several processes, only once.Either MacOS uses RAM several times more effective than Linux, or Activity Monitor is showing incorrect numbers to make impression that Mac apps take less memory than apps on competing operating systems.
Wrapped web engine and the site does not an app make.
And yes, Electron isn't simple. No one cares. The product itself is simple to use (presumably). When they said simple, they were not referring to implementation details.
- How is the current status the Plugin system? It would be cool to try integrating features like Pandoc Citer from VSCode or LaTeX autocompletion, but I guess that would be too much for the core.
- Since you're already using pandoc, more available export formats or the option to define own exports via settings would be useful!
- Images are linked to their current path when added. I liked Typora's feature of automatically copying them into an asset folder a lot.
Overall, great work! I might learn Vue an Electron just for the sake of MarkText. Don't listen to the Electron critics - having a reusable rendering engine and the same features as in GitLab available locally is way better than saving some RAM.
For example, on my work mac I use Ulysses, and sync to a cloud folder. Then on Linux, I use caret or typora with the same synced folder. Caret/typora aren't as nice as Ulysses (IMO), but as they all support markdown, all three are fully compatible. I'd rather not use an inferior app only because it's cross platform. Since the content is transferable between apps, and is synced outside the app, this seems like a pretty good compromise.
If I could buy a high quality markdown editor on Linux that rivaled Ulysses I would.
The website is unusable on mobile so I can't even check out if the app is any good. I guess I know enough already.
It's either lazy or ignorant and neither gives me confidence in their software.
And the website? Can’t even tell which OS the app is selling for.
Not affiliated with this product, just surprised at how this could possibly be unclear.
Not affiliated with the OP, just surprised how a sub-thread about a broken mobile experience could possibly be unclear. ;)
I don't plan to fly to Japan on my phone but I still want flight booking sites to work on it.
Reading about an activity and doing the activity are two different things yeah?
Right now, I use vim for almost all of my text editing. I pop into JetBrains IDEs when their analysis tools or debugger integration are helpful to me. And I use VSCode for most markdown editing. This, if it's good, could replace VSCode for me with a tool that's much better for the purpose I need. So there's basically no new trade-off for me... I've already caved on the electron front for markdown editing anyway. This could just make the payoff for that trade much higher.
I tried this Markdown editor. But very quickly decided I didn't like it, I felt handicapped not seeing the markdown and losing Vim bindings. But partly it's because I don't actually really need the visualization of markdown. I'm happy looking at the raw syntax of highlighted markdown. In Vscode I'll open the preview just to check I haven't done something silly. Also, the rendering of markdown in VsCode seems nicer ( perhaps more familiar )
Same here. And the preview, particularly of inline images, is what I like about VSCode for it.
The main thing I like about this editor after trying it out for a little while today is the table stuff. For some reason that doesn't work as well for me in raw syntax as the rest.
I think my ideal markdown editor would basically be the VSCode plugin's auto-suggestion of bullet syntax, the ability to paste images inline and have them land in a specified directory with a predictable path, and a good table editor.
This one does a good job with the tables IMO. I haven't tried it much with images because that didn't really come up today.
That's the sad reality for open source devs.
For a markdown editor? I see most Patreons with tiers around $3/$5/$20, and those are actually complex/ambitious.
The beauty of these services is that I can toss a couple bucks a month to projects that I use. I don't want my name in credits, I don't want a dinner with the author, I don't want sneak preview access to whatever. I just want an easy way to support something that brings me value.
Not even my total monthly contributions hit $50.
First, "-", "+" and "*" are all legal bullet characters for creating unordered lists.
This allows you to put further semantic meaning into your plaintext (for me that's notes, new tasks, events respectively) though it does get lost in render. This editor loses that distinction.
Second, and this one drives me nuts with MD editors not supporting it, "+<TAB>text" is just as legal as "+<SPACE>text" for Markdown--the spec, such that it exists, is just whitespace after the bullet.
I personally use that to create a bujo-style gutter column between the <UL> bullets and the text where I can insert a space and a resolution symbol without disturbing plaintext alignment.
So, "+<TAB>New Task" eventually becomes "+<SPACE>^<TAB>New Task" to indicate it's been tracked, for a final render of "o ^ New Task"
nvAlt is one of the few that does this right, and will actually copy the "+<TAB>" to the next line as a leader instead of only copying "+<SPACE>" or not treating the "+" as a bullet at all if a tab follows.
This editor won't even let you input a tab character. Tab always indents, whether it's opt-Tab, ctrl-Tab, or what.
I think Markdown is great, but the value I've seen is more in the semi-formatted plaintext representation than just being a text-based way to WYSIWYG. If I want WYSIWYG there are significantly more direct ways to get that. I wish more of the MD editors concentrated on optimizing the plaintext experience, as nvAlt is getting a bit long in the tooth.
It's electron so it doesn't feel native, and it takes over a second to open a nearly-empty document. OS-level key-bindings (Ctrl+A/E etc on Mac) are overridden or broken in weird ways, and some usual typing conventions don't work (double-enter to break out of a code-block). You can't click to move the cursor in a number of situations. The "type @ to insert something" seems weird - markdown by its nature is easy to type. The editor kinda supports tabs but I couldn't figure out how to switch them without the mouse.
All this said, my biggest gripe is that I can't change the font to a monospace font. Yes I'm writing prose, but I want to write in a monospace font. Always. I understand this is a personal preference, and the author lets you change the font but only to a small handful of pre-determined fonts - there is no option to use a custom font. That is just..weird.
This thing shows some promise if it can be made faster and made to support a more ergonomic writing environment. As it is it's just kinda a neat demo with some cool features but an overall unfinished UX.
... except like every other apps around there it only supports Markdown
Feature request:
Please add an option to convert the resulting file to a better format like Asciidoc and other better markup formats
Maybe using pandoc.
WHY?
I feel unwell with Markdown
Markdown deserve credits for having found a real important problem to solve
on the other hand, it's not a good solution to that problem
... but just good enough that its bad aspects are not obvious
Combined with its current popularity, this makes progress very hard
But there are so much things that are wrong with Markdown.
Nested lists? I get them wrong every time.
Images syntax is bad.
Tables syntax is worse.
No table of contents.
You can't have variables.
You can't include another file.
In the end, every website does its own markdown because Markdown sucks.
Interopability? Ah ah. Some have tried. That's a rabbit hole to get into.
In the end, Markdown is just a starting point... To a real format like Asciidoc.
I am gradually switching to Asciidoctor because it solved all the pain points I cited (and more)
> Table of contents
That's simply :toc:
> Images
Doing better is easy, plain HTML is better than Markdown.
For example:
image::sunset.jpg[]
or
[link=https://www.flickr.com/photos/javh/5448336655]
image::sunset.jpg[Sunset,300,200]
or
Click image:icons/play.png[Play, title="Play"] to get the party started.https://asciidoctor.org/docs/user-manual/#images
> Tables
I've used Grip, and I use the Markdown to PDF plugin in VSCodium but none of these really meet the requirements.
You can convert your source markdown files with https://github.com/asciidoctor/kramdown-asciidoc
Like, what gives? Why restrict this? It obviously ain't an Electron limitation, since plenty of other Electron apps support my fonts just fine.
one thing I like to have for both is the vim key bindings, so I don't need use up-down-left-right keypad to move cursors, for example if I type bold the editor will auto match to be bold which is nice, but I still have to move my keys to skip the two just added, in fact many editors provides autocomplete or bracket complete but they do not provide a way for me to skip the stuff they added easily, or I must be missing something basic here.
A better question might be, what flavor of Markdown serves your purposes? Find this, and then look for an editor which supports it.
Adding anything non-standard would be creating a new flavor of Markdown. I want for all the features I use in an editor to be fully portable. If it's not standard, then it's not portable.
NOTE: In this case, by Standard, I mean widely used.
I get what you are saying though. You want the full versatility of HTML at some point. My method of dealing with this is to come up with a set of scripts which converts snippets and turns the doc into HTML. The Markdown file would be the source and the HTML would be the view layer. The scripts are a build process. Of course, this takes time which not everyone has. It's impossible to cover the use cases for everyone though. And I find so often that when I get a feature I think I can't live without, it still falls short because I didn't think through my problem well enough.
Otherwise, it might be best just to use HTML from the start. Or you could ditch Markdown and try Asciidoctor. The issue there is that you're limiting your editor options.
> Markdown is not a replacement for HTML, or even close to it. Its syntax is very small, corresponding only to a very small subset of HTML tags. The idea is not to create a syntax that makes it easier to insert HTML tags. In my opinion, HTML tags are already easy to insert. The idea for Markdown is to make it easy to read, write, and edit prose. HTML is a publishing format; Markdown is a writing format. Thus, Markdown’s formatting syntax only addresses issues that can be conveyed in plain text.
> For any markup that is not covered by Markdown’s syntax, you simply use HTML itself. There’s no need to preface it or delimit it to indicate that you’re switching from Markdown to HTML; you just use the tags.
and
> Span-level HTML tags — e.g. <span>, <cite>, or <del> — can be used anywhere in a Markdown paragraph, list item, or header.
https://daringfireball.net/projects/markdown/syntax#html
The entire point is just to make most of the document easy to read. Not to replace nor forbid html.