Skip to main content

Grass

A minimal, beautiful, zero-config terminal code editor.

No modes. No config files. Just type.

tests

Grass demo

Why

Terminal editors tend to be either tiny and utilitarian (nano) or powerful and config-heavy (Vim, Helix). Grass is the space between: a minimal editor that is pleasant to look at, starts instantly, and stays small enough to understand and change in an afternoon.

It is deliberately not a Vim replacement. There are no plugins, LSP, mouse support, or config files. One theme, one mode, and under 2,000 lines of Python, with Pygments for highlighting.

Install

pip install grass-editor

On Windows, install curses support first:

pip install windows-curses

Run

grass hello.py

Or without installing:

python -m grass hello.py

Check the identity:

grass --version

Theme

Grass ships with one hand-tuned theme: Meadow.

A calm, forest-inspired dark palette — warm parchment text, sage-green keywords, golden function names, aqua class names, and a layered forest-dark status bar. Comments and docstrings sit quietly in muted green-gray so code reads like a clearing at dusk.

  • A two-tone wordmark splash greets you on launch — meadow green above, sage shadow below — over the line ❧ a calm terminal editor, signed v0.1.2 · Meadow, and fades the moment you type.
  • The status bar keeps the file name on the left and live line,column position on the right.
  • An amber dot beside the file name marks unsaved changes, then disappears the moment you save.
  • Your terminal tab lives and breathes with you: grass · file.py, gaining a • while there are unsaved changes.
  • Feedback speaks in color: saves flash leaf green, problems turn warm red.
  • A floating scrollbar on the right edge tracks your place in the file.
  • The cursor line glows softly; the gutter stays a shade darker.
  • Search matches glow olive-green, and the match you are on turns warm gold.
  • Prompts sit behind a green ❯ marker.

Meadow assumes a dark terminal with 256 colors. Terminals with only basic colors fall back gracefully.

Keys

Key Action
type edit
arrows, Home, End, PageUp, PageDown move
Enter new line, with auto-indent
Tab indent to the next tab stop
Backspace, Delete delete
Ctrl-F find (jumps to matches as you type)
Ctrl-P open a file by fuzzy search
Ctrl-K cut line
Ctrl-U paste line
Ctrl-S save
Ctrl-Z undo
Ctrl-R redo
Ctrl-Q quit

Development

Grass is plain Python with no build step.

git clone https://github.com/mukundzha/grass.git
cd grass
pip install -e .
python tests/run_tests.py

Tests are plain functions run by a small custom runner.

Notes

  • Grass is always in typing mode, like nano.
  • A file without a trailing newline stays that way, and the status bar says no newline.
  • The theme is designed for dark terminal backgrounds.
  • Tabs are preserved and shown at 4-column tab stops.
  • Large files re-highlight fully on every edit; normal files stay fast.
  • Wide characters (CJK) and long wrapped lines are not fully supported yet.

Metadata

Release files for grass-editor 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for grass-editor 0.1.2
File Size Uploaded Provenance
grass_editor-0.1.2.tar.gz 21.6 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for grass-editor 0.1.2
File Interpreter ABI Platform
grass_editor-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 37.7 kB

Release files / grass_editor-0.1.2.tar.gz

Download URL grass_editor-0.1.2.tar.gz
Size 21.6 kB
Tags Source
SHA-256 checksum
How to use checksums
0f1e8e74d6c9669a7d72cf469d878127860ced7dfa0bd7d0c833e44fbd4676a4
BLAKE2b-256 checksum
How to use checksums
c53384f138cc666558f7b4a3193acf0dca0bce274b123dbb11ae54225b385c47
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Release files / grass_editor-0.1.2-py3-none-any.whl

Download URL grass_editor-0.1.2-py3-none-any.whl
Size 16.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
d29045d4995a30a43be2af855ab3a5059adb268514687091ce1c68bb9457301a
BLAKE2b-256 checksum
How to use checksums
3304994cdd83e19682ce24c156c061b24cae1c1f1047c8835064ddb0bc62c7bc
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.13.9

Security for grass-editor 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page