A very simple terminal application to use the pomodoro technique and keep track of daily tasks.
The motivation behind this project was to simply get more used to the Haskell syntax and the Functional Programming way of programming, this was started with literally zero previous knowledge about Haskell and FP, I literally discovered stuff while I was doing it so it may be the case that the code is not the best possible but it definitely helped me get my feet wet in the entire Haskell and FP way of thinking.
If you are also new and interested in learning more about Haskell and FP, this might be a good project for you to take a look and probably try implementing some new features or refactoring code that looks bad, either way feel free to use, edit and do whatever you want with this piece of software.
Even though the program has very little functionality and is very simple, I do want to implement some more functionality to it as time goes by, if you are not interested in learning Haskell but want a specific feature to be implemented, feel free to create an issue.
Currently only Linux is supported.
You can download the binary through the Releases. You can run it directly where it was downloaded or put it in a directory present in your PATH
.
You can also build homodoro with nix-build
or cabal build
or run a development shell with nix-shell
.
Just run homodoro
and you should see the timers and the task list.
Every time the Pomodoro timer reaches 0, the Pomodoros
counter increases by 1, every 4th Pomodoro
round ends, instead of switching the focus to Short Break
, the focus will be switched to Long Break
, everytime a Long Break
is finished, the counter that switches to Long Break
on the 4th Pomodoro
resets and the cycle starts again.
You can press c
when not editing or creating a task to see the commands.
Shift + Tab
AKABackTab
Go to next timerq
Quit applications
Start/stop timerr
Reset timeri/d
Increase/Decrease timer by 1minI/D
Increase/Decrease timer by 10sect
Add a taske
Edit a taskDel
Delete a taskCtrl + C
Change a task's status
Other than the commands that are shown at the bottom of the screen, you can check the List and Editor commands in the Brick documentation for each of the Widgets.
The tasks file is saved at the path set to the XDG_DATA_HOME
environment variable.
According to its specification, if that variable is not set or empty, it defaults to $HOME/.local/share on non-Windows systems.
When a timer reaches zero an alarm sound should ring and a notification popup should appear.
The popup is shown using the libnotify library
The alarm sound is played using SDL2 and SDL2-mixer
Written in Haskell using the brick library. This was heavily inspired by the other brick programs featured in it's repo's Featured Projects.