The hardest part of WYSIWYG editors is always cursor
positioning and selection across mixed content.
How did you handle that? Also curious if you considered
using a canvas-based renderer vs DOM — what made you
go with your current approach?
This took me down the nostalgic memory lane of the planet-source-code days. There were hundreds of such projects in Visual Basic, Delphi, C/C++/MFC etc., and text editors and paint clones were the most popular projects.
> - Real WYSIWYG editing (no HTML layer, no embedded browser) with styles, images and tables.
> - Clean, simple file format (human-readable, diff-friendly, git-friendly, AI-friendly)
Very nice!
Unfortunately, the UI menus seem to be broken when using a dark-mode GTK theme (e.g. Adwaita Dark).
This is a famous "killer" feature from WordPerfect: the ability to view and edit the low-level formatting for a document. It's invaluable for fixing weird bugs.
However, it works only because WP uses the "text-stream" paradigm, where a document comprises a linear stream of text with formatting codes (Bold, Font, Hard Return, etc.) embedded directly at the point at which they're applied.
In contrast, Word uses the "nested containers" model (characters inside words, words inside paragraphs, paragraphs inside sections, etc.), where this feature can't be replicated.
I didn't look closely at your code, but just thought to mention this feature.
I don't see why the "nested containers" model would prevent this feature to be replicated, it's just a tree of nodes. Not edit-this-as-plain-text-simple but almost.
On MacOS, I'm seeing `ModuleNotFoundError: No module named 'miniword.core.utils'` whether I run `python3 -m miniword` from src/miniword/ or from src/miniword/miniword/.
Thanks, and I got the main window open now, but I'm getting a second error that doesn't look OS related. `Plugin error (txtfilter.py): No module named 'miniword.importexport'`
at this point, a WYSIWYG just seems like a huge step backwards from just using markdown. I love having access to my files in a standard text format this is super easy to parse, and not being locked into whatever weird format that WYSIWYG decides to store it in.
I still don't understand why people still use ~~Microsoft Word~~Copilot document writer , I think they have gotten into some weird mindset that their documents require all this weird unnecessary formatting to look "official"
It’s also not nice to write longer text in monospace. Or to have long URLs interrupt the text just because you want a hyperlink on some word. Or having to lay out tables by hand like ASCII art. Seeing *this* isn’t the same as seeing this. And you need custom editor software anyway to have affordances like TOC navigation.
Tables by hand, I hate. But I don't quite agree with the first sentiment. For longform prose, it isn't that unusual for people to work with all editing marks visible. Writing novels, I absolutely write using monospace, because it allows you to more concisely control large amounts of formatting easily.
Yep, but (a) that isn’t portable Markdown, (b) your editor probably doesn’t support opening the link from the link text in that case, and (c) whenever you want to modify the link text you have to modify all occurrences. A word processor can handle that automatically for you. It can also offer completion (like tab completion) for references that you use repeatedly. It can show as a tooltip what a given link text links to. Conveniences like that is what computers are for, let’s not relapse to the stone age here.
Yes. These days, with plain text, pasrsers, Internet, mobile devices and LLM, we really get more than what we see. Only few case where paper print out is still more useful.
My prolific Typst use, along with quickly improving side-by-side editors like Typesetter, are rapidly diminishing (in my eyes) the reasons for WYSIWYG to be. Sure, normies need it, yadda yadda. Is it worth the staggering cost? The file format and GUI complexity?
The hardest part of WYSIWYG editors is always cursor positioning and selection across mixed content. How did you handle that? Also curious if you considered using a canvas-based renderer vs DOM — what made you go with your current approach?
This took me down the nostalgic memory lane of the planet-source-code days. There were hundreds of such projects in Visual Basic, Delphi, C/C++/MFC etc., and text editors and paint clones were the most popular projects.
I adore anything that avoids using a browser. <3
> - Real WYSIWYG editing (no HTML layer, no embedded browser) with styles, images and tables. > - Clean, simple file format (human-readable, diff-friendly, git-friendly, AI-friendly)
Very nice! Unfortunately, the UI menus seem to be broken when using a dark-mode GTK theme (e.g. Adwaita Dark).
One feature missing from almost every mainstream word processor: REVEAL CODES! (https://kb.corel.com/en/127364)
This is a famous "killer" feature from WordPerfect: the ability to view and edit the low-level formatting for a document. It's invaluable for fixing weird bugs.
However, it works only because WP uses the "text-stream" paradigm, where a document comprises a linear stream of text with formatting codes (Bold, Font, Hard Return, etc.) embedded directly at the point at which they're applied.
In contrast, Word uses the "nested containers" model (characters inside words, words inside paragraphs, paragraphs inside sections, etc.), where this feature can't be replicated.
I didn't look closely at your code, but just thought to mention this feature.
I don't see why the "nested containers" model would prevent this feature to be replicated, it's just a tree of nodes. Not edit-this-as-plain-text-simple but almost.
On MacOS, I'm seeing `ModuleNotFoundError: No module named 'miniword.core.utils'` whether I run `python3 -m miniword` from src/miniword/ or from src/miniword/miniword/.
My mistake. Now it works (on linux).
Thanks, and I got the main window open now, but I'm getting a second error that doesn't look OS related. `Plugin error (txtfilter.py): No module named 'miniword.importexport'`
at this point, a WYSIWYG just seems like a huge step backwards from just using markdown. I love having access to my files in a standard text format this is super easy to parse, and not being locked into whatever weird format that WYSIWYG decides to store it in.
I still don't understand why people still use ~~Microsoft Word~~Copilot document writer , I think they have gotten into some weird mindset that their documents require all this weird unnecessary formatting to look "official"
Markdown without formatting isn't usually the nicest to read imo. I actually appreciate a well laid out and formatted document myself.
Also wysiwyg doesn't mean it can't be back and forwards compatible with markdown, it might just mean that it's a markdown editor gui with a preview.
It’s also not nice to write longer text in monospace. Or to have long URLs interrupt the text just because you want a hyperlink on some word. Or having to lay out tables by hand like ASCII art. Seeing *this* isn’t the same as seeing this. And you need custom editor software anyway to have affordances like TOC navigation.
Tables by hand, I hate. But I don't quite agree with the first sentiment. For longform prose, it isn't that unusual for people to work with all editing marks visible. Writing novels, I absolutely write using monospace, because it allows you to more concisely control large amounts of formatting easily.
> long URLs interrupt the text just because you want a hyperlink
This annoyed me until I realized pandoc supports separating [the link text] from the link location.
Yep, but (a) that isn’t portable Markdown, (b) your editor probably doesn’t support opening the link from the link text in that case, and (c) whenever you want to modify the link text you have to modify all occurrences. A word processor can handle that automatically for you. It can also offer completion (like tab completion) for references that you use repeatedly. It can show as a tooltip what a given link text links to. Conveniences like that is what computers are for, let’s not relapse to the stone age here.
> at this point, a WYSIWYG just seems like a huge step backwards from just using markdown.
Not for a layperson. There’s a reason WYSIWYG word processors completely obliterated the previous “needs an explicit preview mode” generation ones.
Yes. These days, with plain text, pasrsers, Internet, mobile devices and LLM, we really get more than what we see. Only few case where paper print out is still more useful.
My prolific Typst use, along with quickly improving side-by-side editors like Typesetter, are rapidly diminishing (in my eyes) the reasons for WYSIWYG to be. Sure, normies need it, yadda yadda. Is it worth the staggering cost? The file format and GUI complexity?
I thought the data structure part is solved:
https://en.wikipedia.org/wiki/Rope_(data_structure)
Ropes are for strings. In a word processor you need text with formatting, and structures as tables, images and math.
This is great!
Curious about the choice of toolkit: what led you to wxPython?
I love seeing new word processor projects!
Looks like a nice project.
Looks like you missed a file, though.
ModuleNotFoundError: No module named 'miniword.core.utils'
I don't see it in my local clone of your repo, nor the repo iteslf.
My apologies. I added the missing file.
Thanks. I got it to run on my work laptop that runs Windows. Selections don't work, and cairo spits out a bunch of errors during the screen redraws.
I'll give it a shot on my own Ubuntu laptop.
Love to see wxPython!
Check out Typst. It’s a markup language focused on print with HTML layout as a secondary target.