frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: A WYSIWYG word processor in Python

https://codeberg.org/chrisecker/miniword
38•chrisecker•3h ago
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

Comments

LoganDark•2h ago
Love to see wxPython!
mttpgn•2h ago
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•2h ago
My mistake. Now it works (on linux).
avryhof•2h ago
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•2h ago
My apologies. I added the missing file.
avryhof•1h ago
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•2h ago
I adore anything that avoids using a browser. <3
kubb•1h ago
I thought the data structure part is solved:

https://en.wikipedia.org/wiki/Rope_(data_structure)

chrisecker•1h ago
Ropes are for strings. In a word processor you need text with formatting, and structures as tables, images and math.
fractallyte•1h ago
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•1h ago
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•1h ago
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•1h ago
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•42m ago
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•20m ago
> 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•11m ago
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. The latter is exactly what a word processor can handle 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. This is what computers are for, let’s not relapse to the stone age here.
sakesun•1h ago
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.
__d•1h ago
This is great!

Curious about the choice of toolkit: what led you to wxPython?

subdomain•1h ago
I love seeing new word processor projects!
kabir_daki•5m ago
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?

Show HN: FluidCAD – Parametric CAD with JavaScript

https://fluidcad.io/
80•maouida•3h ago•19 comments

Show HN: A WYSIWYG word processor in Python

https://codeberg.org/chrisecker/miniword
38•chrisecker•3h ago•20 comments

Show HN: Eve – Managed OpenClaw for work

https://eve.new/login
10•zachdive•4h ago•7 comments

Show HN: Marimo pair – Reactive Python notebooks as environments for agents

https://github.com/marimo-team/marimo-pair
115•manzt•3d ago•29 comments

Show HN: Keeper – embedded secret store for Go (help me break it)

https://github.com/agberohq/keeper
56•babawere•13h ago•32 comments

Show HN: I built a site that shows every world event you lived through

https://youdidntnotice.com/
5•lip404•2h ago•3 comments

Show HN: I built a Cargo-like build tool for C/C++

https://github.com/randerson112/craft
165•randerson_112•1d ago•156 comments

Show HN: QVAC SDK, a universal JavaScript SDK for building local AI applications

28•qvac•1d ago•9 comments

Show HN: I run AI background removal in the browser–no upload,no server

https://www.allplix.com/en/background-remover
5•shadoxise•4h ago•0 comments

Show HN: Figma for Coding Agents

https://getdesign.md
7•omeraplak•6h ago•5 comments

Show HN: CSS Studio. Design by hand, code by agent

https://cssstudio.ai
161•SirHound•1d ago•97 comments

Show HN: Dynamic Map of YouTube Channels

https://www.ytmap.xyz/
6•Bachal•4h ago•7 comments

Show HN: Druids – Build your own software factory

https://github.com/fulcrumresearch/druids
60•etherio•2d ago•13 comments

Show HN: Unlegacy – document everything, from COBOL to AI generated code

https://www.unlegacy.ai/
3•Absonsonson•5h ago•0 comments

Show HN: Do All the Things

https://www.doallthethings.app/
7•brainbun•10h ago•5 comments

Show HN: Zeroclawed: Secure Agent Gateway

https://github.com/bglusman/zeroclawed
4•bglusman•8h ago•3 comments

Show HN: Rust based eBook library for Python, with MIT license

https://github.com/arc53/fast-ebook
30•larry-the-agent•1d ago•3 comments

Show HN: Steadcast – Free Mac podcast player for learning, not background noise

https://steadcast.co
3•steadcast•9h ago•1 comments

Show HN: Moon simulator game, ray-casting

https://mooncraft2000.com
109•JKCalhoun•4d ago•25 comments

Show HN: Kaggle x Duolingo x Codecrafters

https://capalent.com
3•gen_specialist•7h ago•3 comments

Show HN: FeedSense – A private recommendation system built from your own sources

4•langtang1996•7h ago•1 comments

Show HN: Guruka.com – free guided mediations. No signup, private, works offline

https://guruka.com/
32•eummm•1d ago•13 comments

Show HN: VigIA – A deterministic FSM in .NET 10 to stop LLM hallucinations

https://github.com/JordanCT/VigIA-Orchestrator
2•JordanCT•8h ago•0 comments

Show HN: Orange Juice – Small UX improvements that make HN easier to read

http://oj-hn.com/
141•latchkey•2d ago•157 comments

Show HN: Brutalist Concrete Laptop Stand (2024)

https://sam-burns.com/posts/concrete-laptop-stand/
784•sam-bee•3d ago•236 comments

Show HN: I pipe free sports streams into Jellyfin – no ads, just HLS

https://github.com/pcruz1905/hls-restream-proxy
114•pruz•2d ago•36 comments

Show HN: Is Hormuz open yet?

https://www.ishormuzopenyet.com/
475•anonfunction•2d ago•208 comments

Show HN: A (marginally) useful x86-64 ELF executable in 301 bytes

https://github.com/meribold/btry
64•meribold•4d ago•19 comments

Show HN: Unicode Steganography

https://steganography.patrickvuscan.com
55•PatrickVuscan•3d ago•14 comments

Show HN: We built a camera only robot vacuum for less than $300 (well almost)

https://indraneelpatil.github.io/blog/2026/robot-vacuum/
107•indraneelpatil•4d ago•55 comments