Skip to main content

senile

PyPI version License

A command-line todo list and time tracker.

Overview

This utility functions as a personal todo list and time tracker. You can create tasks with tags and they are saved in sqlite3 file: ~/.senile.

Installation

install from pypi (recommend)

python3 -m pip install senile

install from git (latest master)

python3 -m pip install -U git+https://gitlab.nul.one/mush/senile.git

senile supports Python 3.11, 3.12, and 3.13.

development installation

Create an isolated environment, then install development dependencies:

python3 -m venv .venv
. .venv/bin/activate
python -m pip install --upgrade pip
python -m pip install -e '.[dev]'

Run the quality checks and test suite with:

python -m ruff check .
python -m ruff format --check .
python -m pytest --cov=senile

Usage

Commands:

  • add Add a new task.
  • modify Modify existing task.
  • remove Delete following task(s).
  • list List non-archived tasks.
  • all List all tasks, including archived tasks.
  • start Start a task or resume the paused task.
  • stop Stop tasks.
  • pause Pause the active task while keeping it in focus.
  • todo Set following task(s) to todo.
  • done Set following task(s) to done.
  • archive Archive following task(s).
  • show Show details for one task or list-style summaries and notes for multiple tasks. With no IDs, shows only active and todo tasks.
  • tags List all tags and their counts.
  • edit Open task notes for editing.
  • focus Show the active task and its elapsed duration. Alias: f.
  • normalize Remove orphaned tags and normalize task IDs.

Task priority

Use %NUMBER to set a task's priority when adding or modifying it, for example senile add "Submit report" %10. Use %NUMBER with list or all to show only tasks with that priority or higher.

add

Add a new task.

  • aliases: a
  • usage: senile add Some text description +tag1 +tag2 +tag3 %PRIORITY
  • example: senile add Submit the project +work +project +new %10

modify

Modify existing task.

  • aliases: mod, m
  • usage: senile mod ID_OR_UUID Updated text -TAG_TO_REMOVE +TAG_TO_ADD %PRIORITY
  • example: senile mod 5 Re-submit the finished project -new +old %10

remove

Delete following task(s).

  • aliases: rm
  • usage: senile rm ID_OR_UUID_1 ID_OR_UUID_2 ID_OR_UUID_3
  • example: senile rm d59de172 fcf8799e 4 5

list

List non-archived tasks.

  • aliases: ls, l
  • usage: senile l SOME_TEXT_TO_SEARCH +CONTAIN_TAG -DO_NOT_CONTAIN_TAG %MIN_PRIORITY
  • example: senile l project +work -old %10

all

List all tasks, including archived tasks.

  • aliases: la, ll
  • usage: senile all SOME_TEXT_TO_SEARCH +CONTAIN_TAG -DO_NOT_CONTAIN_TAG %MIN_PRIORITY
  • example: senile all project +work -old %10

start

Start a task or resume the paused task.

  • usage: senile start [TASK_ID_OR_UUID]
  • example: senile start 5
  • note: Without an ID, resumes the paused task. Only 1 task can be focused.

stop

Stop tasks.

  • Called without arguments and stops a single task that was started.

pause

Pause the active task while keeping it in focus. Its elapsed duration stops increasing until it is started again.

todo

Set following task(s) to todo.

  • usage: senile todo ID_OR_UUID_1 ID_OR_UUID_2 ID_OR_UUID_3
  • example: senile todo d59de172 fcf8799e 4 5

done

Set following task(s) to done.

  • usage: senile done ID_OR_UUID_1 ID_OR_UUID_2 ID_OR_UUID_3
  • example: senile done d59de172 fcf8799e 4 5

archive

Archive following task(s).

  • aliases: ar, arc, arch
  • usage: senile archive ID_OR_UUID_1 ID_OR_UUID_2 ID_OR_UUID_3
  • example: senile archive d59de172 fcf8799e 4 5

show

Show details for one task or list-style summaries and notes for multiple tasks. With no IDs, shows only active and todo tasks.

  • aliases: s, i, info
  • usage: senile show [TASK_ID_OR_UUID ...]
  • example: senile show d59de172 fcf8799e

tags

List all tags and their counts.

  • aliases: t, tag
  • Called without arguments. Lists tags of all tasks, even archived.

edit

Edit notes for a task.

  • aliases: e, notes, n
  • usage: senile edit TASK_ID_OR_UUID
  • Opens a multiline prompt where you can edit notes. (Alt+Return to finish)
  • Notes are rendered as Markdown by senile show.

Configuration

Configuration options are available as environment variables that you need to export, either on each senile command or in your environment file (e.g. .bashrc, .profile, etc.).

Data file

By default, senile creates and uses an sqlite3 database file located at ~/.senile. Export SENILE_DB_PATH variable to desired alternative file location.

The database is preserved across application upgrades. Back it up before upgrading:

cp ~/.senile ~/.senile.backup

Icons

You can change default status icon theme by exporting SENILE_ICON_THEME. Possible values are:

  • default - standard theme
    • hidden: 🗄️
    • done: ✔️
    • todo:
    • active: 🔴
  • text
    • hidden: h
    • done: d
    • todo: T
    • active: A
  • senile
    • hidden: 👓
    • done: ⚰️
    • todo: 📰
    • active: 🧠
  • love
    • hidden: 💔
    • done: 💖
    • todo: ❤️
    • active: 💘
  • xmas
    • hidden: ☃️
    • done: 🎁
    • todo: 🎄
    • active: 🛷
  • archery
    • hidden: 🐺
    • done: 🏅
    • todo: 🎯
    • active: 🏹

Download files

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

Source Distribution

senile-0.4.1.tar.gz (17.0 kB view details)

Uploaded Source

Built Distribution

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

senile-0.4.1-py3-none-any.whl (13.8 kB view details)

Uploaded Python 3

File details

Details for the file senile-0.4.1.tar.gz.

File metadata

  • Download URL: senile-0.4.1.tar.gz
  • Upload date:
  • Size: 17.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for senile-0.4.1.tar.gz
Algorithm Hash digest
SHA256 4d92ffbb8fc513600978c5c5a398d08ceb95776673a5fa9e092dec74eb9d7938
MD5 2fae6217c72da087bd5fc9bf64ee8849
BLAKE2b-256 24f41235ac17b458f206b5032f51def0d40b678352a76663724cd60049daa492

See more details on using hashes here.

File details

Details for the file senile-0.4.1-py3-none-any.whl.

File metadata

  • Download URL: senile-0.4.1-py3-none-any.whl
  • Upload date:
  • Size: 13.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.5

File hashes

Hashes for senile-0.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 f3db28622a93fef3c21fcd1fa72282a577eceafa667d069bde5cf41dad817944
MD5 a6f8997a4bc8ad7e3931e8772c182845
BLAKE2b-256 8e0b961deb2c3b1a068c4ecf29c897b681c8e989eb2f95d32e2f87de530a3982

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 Sentry Error logging StatusPage Status page