A lightweight text editor with focused writing and reading in mind
Project description
textli
A lightweight text editor with focused writing and reading in mind.
textli is a full-window, distraction-free Markdown editor: one warm
paper-toned column of text, vim keybindings, and nothing else on screen.
⌘R flips the source into a rendered reading view made for
proof-reading and review — navigate with vim motions, leave inline
comments, and propose suggestions (track changes) that the author
accepts or rejects with a keystroke. All annotations are stored inline as
CriticMarkup, so they travel with the file and
diff cleanly in git — no sidecar files.
textli started life as the editor inside grafli, the keyboard-driven diagram tool, and is now its own package — usable standalone or embeddable in any PySide6 application.
Install
uv tool install textli-editor # or: pipx / pip install textli-editor
The package publishes as textli-editor (plain textli is too close to an
existing PyPI name), but everywhere else it's just textli: the command is
textli, the import is import textli.
Use
textli notes.md # open (created on first save)
textli notes.md#design-decisions # jump straight to a heading
textli -r review.md # start in the reading view
The editor opens ready to type (vim NORMAL mode) and autosaves while you
work. Press F1 inside the editor for the complete key reference, or see
the documentation.
The short version
| Key | Action |
|---|---|
⌘R |
Toggle write ↔ reading view |
Esc |
Save & close (⇧Esc cancels) |
⌘↵ |
Full-window width |
⌘. |
Section focus (dim all but the current paragraph) |
c / s |
Comment / suggest a change on the selection (reading view) |
a / x |
Accept / reject the suggestion under the caret |
F1 |
Full help |
Embed
from textli import ZenMarkdownEditor, InlineVimEditor
ZenMarkdownEditor is the full-window editor (parent it into any widget);
InlineVimEditor is a small vim-capable QPlainTextEdit for editing a single
piece of text in place. See the
embedding guide.
Develop
uv venv && uv pip install -e '.[dev]'
QT_QPA_PLATFORM=offscreen .venv/bin/pytest -q
License
MIT — see LICENSE. Bundled fonts are licensed under the SIL Open Font License.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file textli_editor-0.1.0.tar.gz.
File metadata
- Download URL: textli_editor-0.1.0.tar.gz
- Upload date:
- Size: 2.8 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
74b0add5873347f49006c4fa968ad88698f9065f6446e126e864a92ff047da22
|
|
| MD5 |
2731b632425e6bcc81cdbc40d479b3b3
|
|
| BLAKE2b-256 |
e9a6bebc3763ad3a536133541ef46a6d69bc62d9de64412a34df576f0c0125b9
|
Provenance
The following attestation bundles were made for textli_editor-0.1.0.tar.gz:
Publisher:
release.yml on MisterGC/textli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
textli_editor-0.1.0.tar.gz -
Subject digest:
74b0add5873347f49006c4fa968ad88698f9065f6446e126e864a92ff047da22 - Sigstore transparency entry: 2041252934
- Sigstore integration time:
-
Permalink:
MisterGC/textli@3424735b507f5684f16c8166412a59c5a20d0a80 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/MisterGC
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3424735b507f5684f16c8166412a59c5a20d0a80 -
Trigger Event:
release
-
Statement type:
File details
Details for the file textli_editor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: textli_editor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 2.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97e99fc58c25f76dc5b214f3e9e4c4d439adb0b6ccb89bd59abf35e20f4992ce
|
|
| MD5 |
674b8ead511960dd84b1d406be8de9d8
|
|
| BLAKE2b-256 |
a1233bd7aa2de4ebc8bcc660ddb86006a2f2c3773ffd7b87bdfd47f85937e57e
|
Provenance
The following attestation bundles were made for textli_editor-0.1.0-py3-none-any.whl:
Publisher:
release.yml on MisterGC/textli
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
textli_editor-0.1.0-py3-none-any.whl -
Subject digest:
97e99fc58c25f76dc5b214f3e9e4c4d439adb0b6ccb89bd59abf35e20f4992ce - Sigstore transparency entry: 2041253025
- Sigstore integration time:
-
Permalink:
MisterGC/textli@3424735b507f5684f16c8166412a59c5a20d0a80 -
Branch / Tag:
refs/tags/v0.1.0 - Owner: https://github.com/MisterGC
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
release.yml@3424735b507f5684f16c8166412a59c5a20d0a80 -
Trigger Event:
release
-
Statement type: