Skip to main content

TUI client for changedetection.io

Project description

Changedetection TUI

PyPI - Version Docker Image Version GitHub Release PyPI - Python Version

CI License: MIT pre-commit

A terminal user interface (TUI) client for the opensource changedetection.io project.

📽️ Demo Video

changedetection-tui demo

🖼️ Screenshots

Main view

main_view

Non compact view Real-time dashboard view of your monitored URLs

Jump mode

jump_mode_compact

Non compact view cdtui_jump_mode

Settings (keybindings)

cdtui_keybindings

Diff selection modal

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

cdtui_help

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.

Main settings

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

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

changedetection_tui-1.3.0.tar.gz (34.1 kB view details)

Uploaded Source

Built Distribution

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

changedetection_tui-1.3.0-py3-none-any.whl (44.7 kB view details)

Uploaded Python 3

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

Hashes for changedetection_tui-1.3.0.tar.gz
Algorithm Hash digest
SHA256 a5a027397fd6ca97bad7e12824bfe810f853b9434ce06a12ed00fb1b8e91a824
MD5 0f3c2910084b29b5b1e732925dcb7a6d
BLAKE2b-256 2d850900389555247b3dbc1f876f48136b69a45ee3216c5ef4aeebb17f9af5e9

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file changedetection_tui-1.3.0-py3-none-any.whl.

File metadata

File hashes

Hashes for changedetection_tui-1.3.0-py3-none-any.whl
Algorithm Hash digest
SHA256 eb925f89fe8d4a3211679fb3a34167093bc2cdfefeb0dbe3860290e97a7fcc9b
MD5 c10f979ed50cd041d1f3c67bedc30596
BLAKE2b-256 fad093d83f11a9c3024173919184b3306b0140de591a424614abaf6583e3dec9

See more details on using hashes here.

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

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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