Terminal-based text editor with mouse-driven toolbar actions.
Project description
Qudix
Qudix is a lightweight terminal-based text editor that brings a modern editing experience to your command line. With mouse support, intuitive toolbar buttons, and familiar keyboard shortcuts, it makes text editing in the terminal feel natural and efficient. Derived from the highlighted letters in “[Qu]ick e[di]t ne[x]t.”
Features
Core Editing
- Undo/Redo – Full undo and redo support to easily revert or reapply changes
- Cut/Copy/Paste – Standard clipboard operations that work with your system clipboard
- Delete – Quick deletion of selected text or current line
- Mouse Selection – Click and drag to select text across lines, just like a GUI editor
- Keyboard Selection – Automatic line selection when no text is selected for quick operations
User Interface
- Interactive Toolbar – Clickable buttons for common editing actions at the top of the screen
- Line Numbers – Built-in line numbers for easy navigation
- Scrollbar – Visual scrollbar for large files
- Status Bar – Shows current file path, save status, and action feedback
- File Creation Dialog – Convenient popup window to create new files when launched without a path
System Integration
- Cross-Platform Clipboard – Seamless integration with macOS, Windows, and Linux system clipboards
- File Operations – Save with
Ctrl+Sand track unsaved changes automatically - Unsaved Changes Warning – Prevents accidental data loss by prompting before exit
Installation
Recommended: install with pipx to avoid interfering with system packages.
macOS
brew install pipx
pipx ensurepath
pipx install qudix
Linux
- Ubuntu 23.04+:
sudo apt update
sudo apt install pipx
pipx ensurepath
pipx install qudix
- Fedora:
sudo dnf install pipx
pipx ensurepath
pipx install qudix
- Arch Linux:
sudo pacman -S python-pipx
pipx ensurepath
pipx install qudix
- Other distros (via pip user install):
python3 -m pip install --user pipx
python3 -m pipx ensurepath
pipx install qudix
Windows
- With Scoop:
scoop install pipx
pipx ensurepath
pipx install qudix
- With Python/pip:
py -m pip install --user pipx
# Then open a new terminal or run:
.\pipx.exe ensurepath
pipx install qudix
Usage
Launch the editor in two ways:
Create a new file (popup dialog will appear):
qudix
Open an existing file or create one at a specific path:
qudix /path/to/file/filename.txt
Keyboard Shortcuts
| Shortcut | Action |
|---|---|
Ctrl+S |
Save file |
Ctrl+X |
Exit editor (prompts if unsaved) |
Esc |
Return focus to text area |
Ctrl+Home |
Jump to top of file |
Backspace |
Delete character or selection |
Mouse Controls:
- Click anywhere to position cursor
- Click and drag to select text
- Click toolbar buttons to perform actions
- Scroll wheel to navigate through file
Build Instructions
If you want to develop locally or produce installable artifacts:
# Clone the repository
git clone <repository-url>
cd qudix
# Create and activate virtual environment
python -m venv .venv
source .venv/bin/activate # On Windows: .venv\Scripts\activate
# 1) Editable install for development (does NOT create files in dist/)
pip install -e .
# Run the CLI to test
qudix path/to/file.txt
Editable installs register the entry point so you can run qudix, but they do not build wheels/sdists in dist/.
Build distributables (wheel and sdist)
# Ensure build tooling is available
python -m pip install -U build wheel
# Optionally clean previous artifacts
rm -rf dist/* # On Windows PowerShell: Remove-Item dist\* -Force
# Build both sdist (.tar.gz) and wheel (.whl)
python -m build
# Artifacts are now in ./dist/
ls dist
Install the built wheel for local testing
- macOS/Linux:
python -m pip install --force-reinstall dist/qudix-<version>-py3-none-any.whl
- Windows (Command Prompt/PowerShell):
py -3.11 -m pip install --force-reinstall dist\qudix-<version>-py3-none-any.whl
Then run qudix (ensure your environment’s Scripts/bin directory is on PATH). If the command isn’t found on Windows, try:
%LOCALAPPDATA%\Programs\Python\Python311\Scripts\qudix.exe # Adjust for your Python version
Notes for Windows
pip install -e .will not populatedist/. Usepython -m buildto generate artifacts.- Prefer
py -3.11 -m ...to target a specific Python when multiple are installed. - If testing on a clean machine, consider
pipxfor isolation:py -m pip install --user pipxthenpipx ensurepathpipx install dist\qudix-<version>-py3-none-any.whl
Development
The project uses a standard src/ layout with the main application code in src/qudix/app.py. It's built on top of prompt_toolkit, which provides the terminal UI framework.
Project Structure
src/qudix/
├── __init__.py
└── app.py # Main application entry point
License
This project is dual-licensed under Apache-2.0 OR MIT. You may use it under the terms of either license at your option. See LICENSE, LICENSE-APACHE, and LICENSE-MIT for details.
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 qudix-0.1.9.tar.gz.
File metadata
- Download URL: qudix-0.1.9.tar.gz
- Upload date:
- Size: 18.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5d3ccc228659ba9701f02d3a7b5a108c23d2e8cec08fa1011d7b4993b8da3649
|
|
| MD5 |
e14f36dbc1b7b3aef866f560edc27c4d
|
|
| BLAKE2b-256 |
35f6b46d179c5dace9437a01783d28e86bd2df3b14e2189b30e71f16b9c8a8dc
|
File details
Details for the file qudix-0.1.9-py3-none-any.whl.
File metadata
- Download URL: qudix-0.1.9-py3-none-any.whl
- Upload date:
- Size: 17.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.0
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e6188bcccde6a20142c0a5159f2b8567469c99dddeaeee823f32764a5f4f2078
|
|
| MD5 |
9c0b3902eae1ac173eabe1baa0e59ffc
|
|
| BLAKE2b-256 |
175357a017a14293df387a0f89b11f6edcdd61582db70dba9fe40f36e8735a15
|