||3 weeks ago|
|.bonzo||5 months ago|
|.gitignore||5 months ago|
|Makefile||5 months ago|
|README.md||3 weeks ago|
|bonzo.c||3 weeks ago|
|bonzo.h||3 weeks ago|
|plan.md||4 months ago|
I'm just trying to rip off nowify.
What It Does
Bonzo prompts you at various points in your day with routines, tasks, and check-ins to help keep you healthy and sane. Using a gentle sound from
sox, it shows you the task and asks if you have done it yet, if it idn't done yet, or if you want to skip it.
Once you've created your
.bonzo file, you can run Bonzo Buddy by running the makefile on your machine (
make) and then running
./bonzo. If you want to use different lists, you can add each one as an argument following the initial
./bonzo call. e.g.
./bonzo work @home will show tasks from
.bonzo file in your
Each list is delimited by three equals preceding and succeeding the list name, e.g.
===work===. The list
===always=== is a reserved list that will always be invoked. Each task must be part of a list. If you always want everything to be run, they must go inside of the
Each task is on a separate line. On each line, the following parameters are separated by a tab:
- Task name: prefaced by a
!if "priority" or
- Regularity: minutes after completion for task to show up again. Use
0if not a recurring task.
- Starting time: 24-hour time of when the task will be first run, written as
Empty lines are ignored.
===always=== !Drink a glass of water <tab> 120 Take a deep breath <tab> 60 ===@home=== Brush your teeth <tab> <tab> 1300 ===work=== !!Get to inbox zero Complete TPS report <tab> 15 <tab> 1530
- The tasks in the
alwayslist will always run.
- "Drink a glass of water" is a priority task that will repeat every 2 hours
- "Take a deep breath" is a normal task that will repeat every hour
- The tasks in the
@homelist will only run if that list name is specified.
- "Brush your teeth" is a normal task that will first run at 1300 hours and will go away once it is marked "done"
- The tasks in the
worklist will only run if that list name is specified.
- "Get to inbox zero" is a starting task that will go away once it is marked as "done"
- "Complete TPS report" is a normal task that will first run at 1530 and then repeat every 15 minutes
Task Types and Recurrence/Delay Behavior
There are three task types:
- Normal - These tasks will be prompted normally.
- Priority (
!prefix) - These tasks will be prompted normally with different recurrence/delay behavior.
- Starting (
!!prefix) - These tasks will be prompted on application start and share Priority recurrence and delay behavior.
|Starting/Priority||Done||Repeat after N minutes of "regularity" or never if regularity is 0|
|"||Not Done||10 minutes|
|"||Skip||Prompt again after N minutes of "regularity" or 10 minutes if regularity is 0|
|Normal||Done||Repeat after N minutes of "regularity" or never if regularity is 0|
|"||Not Done||40 minutes|
|"||Skip||Prompt again after N minutes of "regularity" or 40 minutes if regularity is 0|
|All||Wait||Delay for time specified by user in minutes (e.g.
Keep a log of activity as the session continues. Timestamps in a logfile would work. Make animation on the "running" line Make one-time task for review and update your todo list. Multiple lists that can be invoked via command line. A default which is none, others by name, and maybe an 'all' which go into every list. Add a "wait" or "pause" option to say to try again in X minutes. Still think maybe an initial delay might be even better, but whatever. Start time. I want to have something only start prompting after a certain time of day. Maybe a third value signifying hour of day in 24 hour time? (Note: I added "starting tasks" so now I can ensure things prompt on startup, that's good!)
- Organize the file better. Make it more logical in it's progression. Separate functions. Update 20220415: Partly done. Still a bit to do.
- Keep track between instances? e.g. could stop and start it and it would save all data for the day of what has been done or not
- if first line matches current strftime, continue appending
- else, open for writing (make clean slate)
- Break for work pomodoros using threads? Maybe as an exercise to figure out threading, but I don't know. If I did this, I would probably also want to implement a time spreader for when tasks back up, so they don't just keep piling up at the same time.
- Add a test suite. Would love to implement TDD with this, never done it in C. (http://eradman.com/posts/tdd-in-c.html)