senile
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:
addAdd a new task.modifyModify existing task.removeDelete following task(s).listList non-archived tasks.list-allList all tasks, including archived tasks.startStart a task or resume the paused task.stopStop tasks.pausePause the active task while keeping it in focus. Alias:p.todoSet following task(s) to todo.doneSet following task(s) to done.archiveArchive following task(s).infoShow details for one task or list-style summaries and notes for multiple tasks. With no IDs, shows only active and paused tasks.tagsList all tags and their counts.editOpen task notes for editing.focusShow the active task and its elapsed duration. Alias:f.normalizeRemove 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 %MAX_PRIORITY with list or list-all to
show only tasks with that priority or lower. Lower priority numbers are more
important.
When adding a task without %NUMBER, senile prompts for its priority. The
default is 20 when the prompt is left empty.
add
Add a new task.
-
When no priority is specified, prompts for a priority before opening the notes editor. The default priority is 20.
-
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 %MAX_PRIORITY - example:
senile l project +work -old %10 - use
+by itself to show only tasks without tags; use-by itself to exclude tasks without tags
list-all
List all tasks, including archived tasks.
- aliases: la, ll
- usage:
senile list-all SOME_TEXT_TO_SEARCH +CONTAIN_TAG -DO_NOT_CONTAIN_TAG %MAX_PRIORITY - example:
senile list-all project +work -old %10 - use
+by itself to show only tasks without tags; use-by itself to exclude tasks without tags
start
Start a task or resume the paused task.
- aliases: s
- 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.
- alias: p
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
info
Show details for one task or list-style summaries and notes for multiple tasks. With no IDs, shows only active and todo tasks.
- aliases: i
- usage:
senile info [TASK_ID_OR_UUID ...] - example:
senile info 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 info.
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:
🔴
- hidden:
text- hidden:
h - done:
d - todo:
T - active:
A
- hidden:
senile- hidden:
👓 - done:
⚰️ - todo:
📰 - active:
🧠
- hidden:
love- hidden:
💔 - done:
💖 - todo:
❤️ - active:
💘
- hidden:
xmas- hidden:
☃️ - done:
🎁 - todo:
🎄 - active:
🛷
- hidden:
archery- hidden:
🐺 - done:
🏅 - todo:
🎯 - active:
🏹
- hidden:
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 senile-0.4.6.tar.gz.
File metadata
- Download URL: senile-0.4.6.tar.gz
- Upload date:
- Size: 18.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9c10133b65737030664fd236792d72e7f2f84888a04a85e1220515dbd32906de
|
|
| MD5 |
65a114e670a4866c6ded9437764a7cf4
|
|
| BLAKE2b-256 |
90578eddcbc10907ce0c8aa145a881f26490a355aab189154a97388769eaf304
|
File details
Details for the file senile-0.4.6-py3-none-any.whl.
File metadata
- Download URL: senile-0.4.6-py3-none-any.whl
- Upload date:
- Size: 14.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
dbd4de81a7194401fa9004a8dac68a500c9406ac39ce5b5c23460b21f0ed302e
|
|
| MD5 |
047dd4ce2ce72756cd112d86e2259bbe
|
|
| BLAKE2b-256 |
809e8917814831f4342c4456b4fa5834014ea6e849261745aff4209657548993
|