[HN Gopher] Show HN: A WYSIWYG word processor in Python
___________________________________________________________________
Show HN: A WYSIWYG word processor in Python
Hi all, Finding a good data structure for a word processor is a
difficult problem. My notebook diaries on the problem go back 25
years when I was frustrated with using Word for my diploma thesis -
it was slow and unstable at that time. I ended up getting pretty
hooked on the problem. Right now I'm taking a professional break
and decided to finally use the time to push these ideas further,
and build MiniWord -- a WYSIWYG word processor in Python. My goal
is to have a native, non-HTML-based editor that stays simple, fast,
and is hackable. So far I am focusing on getting the fundamentals
right. What is working yet is: - 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) - Markdown support - Support for Python-
plugins _Things that I found:_ - B-tree structures are perfect
for holding rich text data - A simple text-based file format is
incredibly useful -- you can diff documents, version them, and even
process them with AI tools quite naturally _What I'd love
feedback on:_ - Where do you see real use cases for something like
this? - What would be missing for you to take it seriously as a
tool or platform? - What kinds of plugins or extensions would
actually be worth building? Happy about any thoughts -- positive
or critical. Greetings
Author : chrisecker
Score : 49 points
Date : 2026-04-10 18:40 UTC (4 hours ago)
(HTM) web link (codeberg.org)
(TXT) w3m dump (codeberg.org)
| LoganDark wrote:
| Love to see wxPython!
| mttpgn wrote:
| 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/.
| chrisecker wrote:
| My mistake. Now it works (on linux).
| mttpgn wrote:
| 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'`
| avryhof wrote:
| 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.
| chrisecker wrote:
| My apologies. I added the missing file.
| avryhof wrote:
| 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.
| chjail-11 wrote:
| I adore anything that avoids using a browser. <3
| kubb wrote:
| I thought the data structure part is solved:
|
| https://en.wikipedia.org/wiki/Rope_(data_structure)
| chrisecker wrote:
| Ropes are for strings. In a word processor you need text with
| formatting, and structures as tables, images and math.
| fractallyte wrote:
| 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.
| vishnuharidas wrote:
| 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.
| analogpixel wrote:
| 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"
| httpsterio wrote:
| 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.
| layer8 wrote:
| 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.
| yummybrainz wrote:
| > 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.
| [the link text]: </url/to/resource> "`title`
| parameter of the <a> tag, if converted to HTML"
| layer8 wrote:
| 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.
| sakesun wrote:
| 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.
| netbioserror wrote:
| 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?
| __d wrote:
| This is great!
|
| Curious about the choice of toolkit: what led you to wxPython?
| subdomain wrote:
| I love seeing new word processor projects!
| kabir_daki wrote:
| 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?
| Georgelemental wrote:
| > - 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).
| pbronez wrote:
| Check out Typst. It's a markup language focused on print with
| HTML layout as a secondary target.
___________________________________________________________________
(page generated 2026-04-10 23:00 UTC)