TUI client for changedetection.io
Project description
Changedetection TUI
A terminal user interface (TUI) client for the opensource changedetection.io project.
📽️ Demo Video
🖼️ Screenshots
Main view
Non compact view
Jump mode
Non compact view
Settings (keybindings)
Diff selection modal
✨ Features
- Real-time dashboard view of your monitored URLs
- Diff viewer (in terminal)
- Fast and lightweight
- Configurable keybindings, url and api key
- based on python's Textual
🚀 Installation
Using uv (recommended)
uvx --from changedetection-tui cdtui
Or install as a tool:
uv tool install changedetection-tui
# $PATH must contain `uv tool dir`
cdtui
Using pip
pip install changedetection-tui
Using docker
Images are pushed both on the official docker hub and on Github's container registry. The images are the same, use whatever you want.
mkdir ~/.config/cdtui/
docker run --rm -it -v ~/.config/cdtui/:/home/appuser/.config/cdtui/ -u $(id -u):$(id -g) grota/changedetection-tui
# or
docker run --rm -it -v ~/.config/cdtui/:/home/appuser/.config/cdtui/ -u $(id -u):$(id -g) ghcr.io/grota/changedetection-tui
Pushed tags
These are the docker image tags we push to both registries:
- The major-only semver tag (e.g.
grota/changedetection-tui:1) - The full semver tags (e.g.
grota/changedetection-tui:1.2.3) - The latest tag: which corresponds to the last commit on the default branch (main)
⚡️ Usage
🚀 Quick Start
cdtui --url http://your-changedetection-url-here --api-key your-api-key-here
📖 Other ways to specify URL and API key
The URL and the API key values found can also be persisted to the configuration file after launch via settings, here's a screenshot of the main section.
You can avoid storing the API key secret to the configuration file by using the environment variable syntax.
Keybindings
Current keybindings can be seen in the footer, they can be remapped in settings.
- Open Jump Mode: ctrl+j
- Quit: ctrl+c
- Open settings; ctrl+o
- Focus next: tab
- Focus previous: shift+tab
- Open palette: ctrl+p
- Move left/down/up/right: hjkl
- Dismiss jump mode: esc/ctrl+c
Roadmap
Right now the software is complete, I can review PRs for additional feature requests, but the goal is mainly to keep up with the upstream API changes.
👨💻 Development
Prerequisites
- Python 3.13+
- uv package manager
Setup
# Clone the repository
git clone https://github.com/grota/changedetection-tui.git
cd changedetection-tui
# Install dependencies
uv sync --dev
# Run from venv
uv run cdtui
# Run in development mode
uv run textual console -x SYSTEM -x WORKER -x DEBUG -x EVENT
# Run connecting to textual's console
uv run textual run --dev .venv/bin/cdtui
Development Tools
# Install precommits (ruff linting and formatting)
uv run pre-commit install
# Run tests
uv run pytest
# Format code
uv run ruff format .
# Lint code
uv run ruff check .
# optional: run a local installation of changedetection for development
docker compose -f compose-dev.yaml up -d
# Update changelog and create tag
uv run cz bump
📂 Project Structure
src/changedetection_tui/
├── __main__.py # CLI entry point
├── app.py # Main application
├── main_screen.py # Main screen layout
├── dashboard/ # Dashboard components
├── settings/ # Settings management
├── utils.py # Utility functions
└── tui.scss # Textual CSS styling
📙 License
This project is licensed under the MIT License - see the LICENSE file for details.
🔗 Links and acknowledgements
- changedetection.io
- Textual Framework
- GitHub Repository
- Issue Tracker
- posting for showing me how to use
textual
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 changedetection_tui-1.3.0.tar.gz.
File metadata
- Download URL: changedetection_tui-1.3.0.tar.gz
- Upload date:
- Size: 34.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
a5a027397fd6ca97bad7e12824bfe810f853b9434ce06a12ed00fb1b8e91a824
|
|
| MD5 |
0f3c2910084b29b5b1e732925dcb7a6d
|
|
| BLAKE2b-256 |
2d850900389555247b3dbc1f876f48136b69a45ee3216c5ef4aeebb17f9af5e9
|
Provenance
The following attestation bundles were made for changedetection_tui-1.3.0.tar.gz:
Publisher:
pypi-and-gh-release.yml on grota/changedetection-tui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
changedetection_tui-1.3.0.tar.gz -
Subject digest:
a5a027397fd6ca97bad7e12824bfe810f853b9434ce06a12ed00fb1b8e91a824 - Sigstore transparency entry: 1079090651
- Sigstore integration time:
-
Permalink:
grota/changedetection-tui@c7206638dee82d9a0a34ed787c2b6f1ae9c903d0 -
Branch / Tag:
refs/tags/1.3.0 - Owner: https://github.com/grota
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-and-gh-release.yml@c7206638dee82d9a0a34ed787c2b6f1ae9c903d0 -
Trigger Event:
push
-
Statement type:
File details
Details for the file changedetection_tui-1.3.0-py3-none-any.whl.
File metadata
- Download URL: changedetection_tui-1.3.0-py3-none-any.whl
- Upload date:
- Size: 44.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
eb925f89fe8d4a3211679fb3a34167093bc2cdfefeb0dbe3860290e97a7fcc9b
|
|
| MD5 |
c10f979ed50cd041d1f3c67bedc30596
|
|
| BLAKE2b-256 |
fad093d83f11a9c3024173919184b3306b0140de591a424614abaf6583e3dec9
|
Provenance
The following attestation bundles were made for changedetection_tui-1.3.0-py3-none-any.whl:
Publisher:
pypi-and-gh-release.yml on grota/changedetection-tui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
changedetection_tui-1.3.0-py3-none-any.whl -
Subject digest:
eb925f89fe8d4a3211679fb3a34167093bc2cdfefeb0dbe3860290e97a7fcc9b - Sigstore transparency entry: 1079090655
- Sigstore integration time:
-
Permalink:
grota/changedetection-tui@c7206638dee82d9a0a34ed787c2b6f1ae9c903d0 -
Branch / Tag:
refs/tags/1.3.0 - Owner: https://github.com/grota
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
pypi-and-gh-release.yml@c7206638dee82d9a0a34ed787c2b6f1ae9c903d0 -
Trigger Event:
push
-
Statement type: