https://github.com/tagirov/rusk
A minimal cross-platform terminal task manager
https://github.com/tagirov/rusk
cross-platform minimal minimalist minimalistic rusk rust task-manager todo-manager
Last synced: 3 months ago
JSON representation
A minimal cross-platform terminal task manager
- Host: GitHub
- URL: https://github.com/tagirov/rusk
- Owner: tagirov
- License: gpl-3.0
- Created: 2025-07-30T22:25:56.000Z (11 months ago)
- Default Branch: main
- Last Pushed: 2026-03-30T18:22:29.000Z (3 months ago)
- Last Synced: 2026-03-30T19:13:29.310Z (3 months ago)
- Topics: cross-platform, minimal, minimalist, minimalistic, rusk, rust, task-manager, todo-manager
- Language: Rust
- Homepage:
- Size: 736 KB
- Stars: 18
- Watchers: 0
- Forks: 1
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-cli-apps-in-a-csv - rusk - A minimal cross-platform terminal task manager. (<a name="todo-manager"></a>Todo managers)
- awesome-cli-apps - rusk - A minimal cross-platform terminal task manager. (<a name="todo-manager"></a>Todo managers)
README
rusk
A minimal cross-platform terminal task manager
- [Install](#install)
- [Usage](#usage)
- [Working with Multiple Tasks](#working-with-multiple-tasks)
- [Interactive Editing](#interactive-editing)
- [Data Safety & Backup](#data-safety--backup)
- [Automatic Backups](#automatic-backups)
- [Manual Restore](#manual-restore)
- [Aliases](#aliases)
- [Configuration](#configuration)
- [Shell Completion](#shell-completion)
- [Quick Install (Recommended)](completions/README.md#quick-install-recommended)
- [Manual Installation](completions/README.md#manual-installation)
- [Bash](completions/README.md#bash)
- [Zsh](completions/README.md#zsh)
- [Fish](completions/README.md#fish)
- [Nu Shell](completions/README.md#nu-shell)
- [PowerShell](completions/README.md#powershell)
- [Database Location](#database-location)
# Install
#### Linux/MacOS/Windows
```bash
cargo install --git https://github.com/tagirov/rusk
```
The binary will be installed to:
- Linux/MacOS: `$HOME/.cargo/bin/rusk`
- Windows: `%USERPROFILE%\.cargo\bin\rusk.exe`
Make sure that these paths are added to your $PATH environment variable to use `rusk` command globally.
#### Arch Linux (AUR)
```bash
yay -S rusk
```
#### Manually
```bash
git clone https://github.com/tagirov/rusk && cd rusk
```
```bash
cargo build --release
```
Linux/MacOS
```bash
sudo install -m 755 ./target/release/rusk /usr/local/bin
```
Windows
```bash
copy .\target\release\rusk.exe "%USERPROFILE%\AppData\Local\Microsoft\WindowsApps\"
```
# Usage
```bash
# Add a new task
rusk add Buy groceries
# Add a task with a deadline
rusk add Finish project report --date 31-12-2025
# Or with short year and slash separator:
rusk add Finish project report --date 31/12/25
# Leading zero for day and month is optional:
rusk add Finish project report --date 1-3-25
# Relative deadline from today (local date): chain number + suffix with no spaces.
# d=days, w=weeks, m=months, q=quarters (3 months), y=years
rusk add Follow up --date 2w
rusk add Review --date 10d5w
# View all tasks
rusk list
# or simply
rusk
# Mark a task as done
rusk mark 1
# Mark a task as undone (toggle)
rusk mark 1
# Edit task text (replace)
rusk edit 1 Complete the project documentation
# Edit task date
rusk edit 1 --date 25/12/2025
rusk edit 1 --date 1m3q
# Edit both text and date
rusk edit 1 Update documentation --date 23-12-25
# Delete a task
rusk del 1
# Delete all completed tasks
rusk del --done
# Get help
rusk --help
# Help for a specific command
rusk add --help
rusk del --done --help
```
## Working with Multiple Tasks
Multiple task IDs must be comma-separated (no spaces allowed between IDs)
```bash
# Mark multiple tasks as done
rusk mark 1,2,3
# Edit multiple tasks with the same text
rusk edit 1,2,3 Update status to completed
# Delete multiple tasks
rusk del 1,2,3
```
## Interactive Editing
```bash
# Edit task text interactively
rusk edit 1
# Edit task text and date interactively (prompt accepts DD-MM-YYYY and relative offsets)
rusk edit 1 --date
# Interactive editing of tasks in sequence
rusk edit 1,2,3
```
## Data Safety & Backup
#### Automatic Backups
- Every save operation creates a `.json.backup` file
- Backups are stored in the same directory as your database
- Atomic writes prevent data corruption during saves
#### Manual Restore
```bash
# Restore from the automatic backup
rusk restore
# This will:
# 1. Validate the backup file
# 2. Create a safety backup of current database (if valid)
# 3. Restore tasks from backup
```
## Aliases
```bash
rusk a (add)
rusk l (list)
rusk m (mark)
rusk e (edit)
rusk d (del)
rusk r (restore)
rusk c (completions)
-d (--date)
-h (--help)
-V (--version)
```
# Configuration
### Shell Completion
> For installation instructions, see [completions/README.md](completions/README.md).
It provides autocomplete for commands and task text during editing by pressing `` button.
**Features**
- Command completion: `add`, `edit`, `mark`, `del`, `completions`, etc. and their aliases
- Task text completion: `rusk edit ` appends the task text for that ID. If the text contains shell-special characters (``| ; & > < ( ) [ ] { } $ " ' \` * ? ~ # @ ! % ^ = + - / : ,``), it is automatically wrapped in single quotes (double quotes if the text has `'`)
- Flag completion: Autocomplete `--date`, `--done`, etc.
**Windows Support**
- Git Bash: Works with `bash` completions (uses Unix-style paths)
- WSL: Works with `bash`, `zsh`, `fish`, and `nu` completions
- Nu Shell: Works natively on Windows (uses `%APPDATA%\nushell\completions\`)
- PowerShell: Works natively on Windows (uses `Documents\PowerShell\rusk-completions.ps1`)
- CMD: Basic commands work (add, list, mark, del, edit with text/date). Interactive editing (`rusk edit` without arguments) requires Windows 10+ and may have limited functionality. Tab completion is not supported. Colors work on Windows 10+ (build 1511 and later)
### Database Location
By default, Rusk stores tasks to: `./.rusk/tasks.json`
```bash
# Use different task lists for different projects
cd ~/projects/website
rusk add Fix responsive layout
cd ~/projects/api
rusk add Add authentication endpoint
# Each project has its own task list because Rusk uses a relative default database path
```
You can customize the database location using the `RUSK_DB` environment variable:
```bash
# Use a custom database file
export RUSK_DB="/path/to/your/db.json"
# Use a custom directory (tasks.json will be created inside)
export RUSK_DB="/path/to/your/project/"
```
**Debug Mode**
When running in debug mode (`cargo run` or debug builds), Rusk uses a temporary database location to avoid affecting your production data:
- Linux/MacOS: `$TMPDIR/rusk_debug/tasks.json` (usually `/tmp/rusk_debug/tasks.json`)
- Windows: `%TEMP%\rusk_debug\tasks.json` (usually `C:\Users\\AppData\Local\Temp\rusk_debug\tasks.json`)
In debug mode, the `RUSK_DB` environment variable is ignored, and the database path is printed to the console when the program starts.