A minimal terminal-based spreadsheet editor
Project description
Esprit
A minimal terminal-based spreadsheet editor built with Python and Textual. Create, edit, and manage structured data tables with typed columns directly in your terminal.
Sometimes you want to take notes in a table.
Features
- Terminal UI: Fast, keyboard-driven interface
- Typed Columns: String, Number, Boolean, and URL column types
- Row Operations: Insert, delete, and move rows with keyboard shortcuts
- JSON Storage: Simple, readable JSON file format
Installation
Install esprit from PyPI:
pip install esprit
Or install from source:
git clone https://github.com/mkaz/esprit.git
cd esprit
pip install .
Requirements
- Python 3.10 or higher
Usage
Starting Esprit
Launch with a new or existing file:
# Create or open a spreadsheet
esprit mydata.json
# Start with default empty spreadsheet
esprit
On first launch with a new file, you'll see the initialization dialog where you can:
- Set the spreadsheet title
- Define columns with names and types
- Add or remove columns as needed
Column Types
- String: Plain text values
- Number: Numeric values with comma formatting
- Boolean: True/False values displayed as ✓/✗
- URL: Links with title and URL (format:
Title | https://example.com)
Keyboard Shortcuts
Navigation
- Arrow Keys: Move between cells
Editing
- Enter: Edit current cell
- Escape: Cancel editing
Row Operations
- Ctrl+I: Insert empty row above current
- Ctrl+K: Delete current row
- Alt+Up: Move current row up
- Alt+Down: Move current row down
File Operations
- Ctrl+S: Save spreadsheet
- Ctrl+Q: Quit (prompts to save if unsaved changes)
Special
- Ctrl+Enter: Open URL in browser (when on URL column cell)
File Format
Esprit saves spreadsheets as JSON files:
{
"metadata": {
"title": "My Spreadsheet",
"columns": [
{"name": "Name", "type": "string"},
{"name": "Amount", "type": "number"},
{"name": "Active", "type": "boolean"},
{"name": "Website", "type": "url"}
]
},
"rows": 20,
"cols": 4,
"cells": {
"0,0": "Alice",
"0,1": 1500,
"0,2": true,
"0,3": {"title": "Example", "url": "https://example.com"}
}
}
License
MIT License - see LICENSE file for details
Contributing
Contributions welcome! Please open an issue or pull request on GitHub.
Links
Project details
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 esprit-0.2.2.tar.gz.
File metadata
- Download URL: esprit-0.2.2.tar.gz
- Upload date:
- Size: 202.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6cbe30dbf71d81cb162676b31eae1fe473a4b21577a219534a6635b640357b26
|
|
| MD5 |
bfca4e27a61e93de274196cc13c060b6
|
|
| BLAKE2b-256 |
08b97694e406d7b05327435f3baf8da36b8b156db2ab25d072f274090b1d481f
|
File details
Details for the file esprit-0.2.2-py3-none-any.whl.
File metadata
- Download URL: esprit-0.2.2-py3-none-any.whl
- Upload date:
- Size: 13.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f39c938a77fa193c370f2d658a20f606d7ed3800bc4a6f4340862b1e30cae107
|
|
| MD5 |
e1a8e3a032f59688425bc533d2a1666c
|
|
| BLAKE2b-256 |
c7a44d7133b1d41494c3b21cf570697baf01a218f5e9217808ce5629beb3a1f1
|