I’ve Built a Scrivener Project Editor in Flutter and Qt. (May be useful for Android and Linux users and need help)

Hi everyone,

I’ve already built an Android-compatible Scrivener project editor using Flutter, and it is currently working on Android.

So far, it supports:

  • Binder Tree
  • Parsing and editing of all project metadata (labels, status, custom metadata, etc.)
  • Parsing and editing of document content, synopsis, notes, and metadata
  • WebDAV synchronization for project syncing

Here is some snapshots:

Home

Binder

Project Setting
Label


Status

CustomMetaData

Keywords

Editor

Folder Card View

Inspector

However, I’m currently running into challenges with the main content format.

As you may know, Scrivener stores document bodies in RTF. It introduces several complications on the editing side, such as:

  • Loss of styling in certain edge cases
  • Encoding inconsistencies during read/write cycles (such as Chinese)
  • Subtle formatting drift after repeated save operations

To mitigate this, I’ve implemented a diff view on save so users can review changes before committing. This helps, but it still feels like a workaround rather than a proper solution.

Since the current implementation targets Android, there is also a significant limitation: Android does not have a mature or native RTF parsing solution comparable to desktop environments. This makes it difficult to reliably preserve full RTF fidelity during round-trip editing, especially for complex formatting structures.

My Question

I would like to better understand how the Windows(QT) Version of Scrivener handles RTF parsing and document editing internally.

Specifically:

  • Do they parse RTF directly into a structured intermediate representation?
  • Or do they convert RTF into HTML or Qt’s internal rich-text model (QTextDocument) first?
  • How do they ensure formatting consistency across read → modify → write cycles?
  • Is there typically a canonical internal format before exporting back to RTF?

My goal is to align my implementation more closely with Scrivener’s own architecture, in order to avoid formatting loss and encoding issues at the source.

Any insights into Qt’s QTextDocument workflow or Scrivener-like document pipelines would be greatly appreciated.

Thanks in advance!

2 Likes

Here is the Source Code and it’s alpha release.

2 Likes

And here the Qt version scrivener project editor, mix MSOffice (Ribbon) and Scrivener like UI.

I have tried it on Linux and Android Pad, it can work but many bugs need to fix. (Rather, it’s all bug)
iPad can also run it, but there are some issues with file reading. I’m tring to fix it.


On Windows 11 (windows 11 style)


On Samsung Pad S8Ultra (Android 16) (fusion style)

1 Like

Tabs and infinite split panes — just drag a tab to move a document ( you can see highlight ) or open it in a new floating quick-reference window. Click binder items to replace the current document, Ctrl+click to open a new tab, Alt+click to split the editor, or drag items directly into any editor pane to open them there.

Seems well.

Breeze Style on Windows 11 with Mica Effect, Looks Great.

And Frosted-Glass Effect


Perhaps it would look better to only enable the frosted glass effect on the Ribbon and Binder area.

1 Like

Outliner and CorkBoard View Done

The corkboard view supports 4 modes: normal mode, grouping by label mode, freeform mode, and mindmap mode . Grouping by label allows for 2 compact layout.

Compact 1 (like Scrivener mac)


Compact 2

And you can hide no document label line

And Mindmap mode

Continuous View Done


Allow fold

That’s quite a big phone you’ve got there.

1 Like

The layout can be adjusted later. For now, I’d like to provide a full desktop-like experience for the tablet.