9 stable releases
new 1.3.4 | Mar 19, 2023 |
---|---|
1.3.3 | Mar 7, 2023 |
1.3.2 | Feb 26, 2023 |
1.3.1 | Jul 10, 2022 |
1.1.1 | Apr 3, 2022 |
#412 in Command line utilities
93 downloads per month
105KB
2.5K
SLoC
⏱️⌛ rust-cli-pomodoro
Table of Contents
- Demo
- 💡 Motivation
- 👷🏻♀️ Architecture
- 📜 Features
- ⌛ Installation & How to use
- 🚧 RoadMap
- 🖥️ Compatibility
Demo

Motivation
Pomodoro technique is a time management method (Refer the link for more information). Typically 25 minutes works and 5 minutes break is one set. For me, while I'm working I found intentional break time is needed for the better performance and health (do some stretching 5 minutes). So I made it.
Architecture
Pomodoro supports two input types, standard input and IPC (via unix domain socket). To support them, the pomodoro app architecture looks like this.
Features
Currently pomodoro provide the features listed as below. for more features, run pomodoro
and type help
!
- Create notification with customized work and break time
- Queue the notification. Queued notification will start to run after previously registered notifications are finished
- Customize notification delivery channels. Refer Using credential.json section
- Pretty print created notifications using
list
command - Delete registered notification(s)
- Track delete notification(s) using
history
command - Clear terminal
(A
notification
is consisted of work time and break time. Pomodoro manages timer usingnotification
.)
Depend on the input types, command is provided slightly differently.
Start up & IPC command
If you want to start up, run the pomodoro with proper OPTIONS
.
Or if you want to send command to already started up pomodoro (via IPC), run the command with SUBCOMMANDS
pomodoro 1.2.0-beta.0
Young
start up application with config or run command using uds client
USAGE:
pomodoro [OPTIONS]
pomodoro <SUBCOMMAND>
OPTIONS:
-c, --config <FILE> read credential json file from this path
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
create create the notification
delete delete a notification
help Print this message or the help of the given subcommand(s)
history show archived notifications
list list notifications
queue create the notification
test test notification
Standard input command
While pomodoro is running, you can interactively make command.
pomodoro 1.2.0-beta.0
Young
manage your time!
USAGE:
pomodoro [SUBCOMMAND]
OPTIONS:
-h, --help Print help information
-V, --version Print version information
SUBCOMMANDS:
clear clear terminal
create create the notification
delete delete a notification
exit exit pomodoro app
help Print this message or the help of the given subcommand(s)
history show archived notifications
list list notifications
queue create the notification
test test notification
Installation and How to use
Installation
- Currently just clone this repo and run
cargo run --release
or build your self and use binary as you wish.
git clone git@github.com:24seconds/rust-cli-pomodoro.git
cd rust-cli-pomodoro
cargo run --release
- Use
cargo install rust-cli-pomodoro
cargo install rust-cli-pomodoro
Using credential.json
pomodoro support slack notification.
To use it, you need to create credential.json
file in somewhere in your local machine. credential.json
supports two keys, slack
and discord
.
The slack
and discord
value is json. It looks like this
{
"slack": {
"token": "your-bot-token-string",
"channel": "your-slack-channel-id"
},
"discord": {
"webhook_url": "your-webhook-url"
}
}
For the slack notification, It uses chat.PostMessage API
To run pomodoro with credential.json
, run the app like this.
# If the credential.json file exists in the current path
pomodoro --config ./credential.json
RoadMap
- Run previous command if needed
- Command auto completion
- Write integration tests
- More rich notification: sound, app icon, hint, action etc
- Provide more notification delivery option: Currently pomodoro uses desktop notification. But notification could be delivered through slack, email or any kind of method.
- slack integration
- discord integration
- what else?
- Provide an easy way to use this app (brew, snap, cargo install, etc..)
- cargo install
- Support mac os (>= 11.0.0) notification: Currently notify-rust uses mac-notification-sys but
mac-notification_sys
doesn't support recent mac version (as of 17:10 Sun 17 Oct 2021) => published binary can send desktop notification without problem (01:21 Fri 13 May 2022)
Compatibility
Start up & Standard input
It depends on notify-rust support, so Linux, Mac (<= 11.0.0) and Windows (10, 8.1).
- note: If you use this app by installing
cargo install
command, then macOs desktop notification seems to work well (Sun 03 Apr 2022)
IPC
Currently Linux and Mac are supported (as pomodoro used unix domain socket)
Dependencies
~17–52MB
~1M SLoC