Skip to main content

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
  • SSH Clipboard Support – Copy/cut operations transfer text to your host machine's clipboard over SSH using OSC52
  • File Operations – Save with Ctrl+S and track unsaved changes automatically
  • Unsaved Changes Warning – Prevents accidental data loss by prompting before exit

SSH Clipboard (OSC52)

When running Qudix over SSH, clipboard operations automatically use OSC52 escape sequences to transfer text to your host machine's clipboard. This works on all platforms (macOS, Linux, Windows) as long as your terminal emulator supports OSC52.

Supported terminals:

  • iTerm2, kitty, WezTerm, Alacritty
  • Windows Terminal
  • foot, st (suckless terminal)
  • tmux (requires set -g set-clipboard on)
  • Many others with OSC52 support

How it works:

  • Copy/Cut → Text is sent to your host clipboard via OSC52
  • Paste → Use your terminal's native paste (Ctrl+Shift+V, Cmd+V, or right-click) which uses bracketed paste mode

Note: OSC52 read (paste from host) is not supported by most terminals for security reasons. For pasting from your host clipboard into Qudix over SSH, use your terminal's built-in paste functionality.

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 populate dist/. Use python -m build to generate artifacts.
  • Prefer py -3.11 -m ... to target a specific Python when multiple are installed.
  • If testing on a clean machine, consider pipx for isolation:
    • py -m pip install --user pipx then pipx ensurepath
    • pipx 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


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qudix-0.1.10.tar.gz (20.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

qudix-0.1.10-py3-none-any.whl (19.1 kB view details)

Uploaded Python 3

File details

Details for the file qudix-0.1.10.tar.gz.

File metadata

  • Download URL: qudix-0.1.10.tar.gz
  • Upload date:
  • Size: 20.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for qudix-0.1.10.tar.gz
Algorithm Hash digest
SHA256 076645d1cf29c9e995d9154473878c00081678075b4cad429097dc2161063125
MD5 685bf027a77babcbe86bb18a94468c26
BLAKE2b-256 dbe59d09ed9f66944033fdc24e9a2f90961e6b9f61ff41c7c8b30395bdbcbd60

See more details on using hashes here.

File details

Details for the file qudix-0.1.10-py3-none-any.whl.

File metadata

  • Download URL: qudix-0.1.10-py3-none-any.whl
  • Upload date:
  • Size: 19.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for qudix-0.1.10-py3-none-any.whl
Algorithm Hash digest
SHA256 2c63a6173fad31206e7fd068e0bde50e22d385f9c423d9fa801bc19d2d7e2fd7
MD5 aa9168d05bd1b6c5b535150600396a9a
BLAKE2b-256 45201e42ecb665dc638dde455490f832d7bbe290c64fc6b62685e3838b2e1ebd

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page