Berkala
Berkala runs scheduled tasks specified in a YAML-based configuration.
To get started, first download the binary for your operating system from the Releases page. Unpack the ZIP file and run the executable.
Since a config file does not exist yet, you will be offered to create one.
Simply accept it and berkala.yml
will be created, which may look like the following:
tasks:
boot:
steps:
- notify: Berkala starts now
stay-hydrated:
interval: every 1 hour
steps:
- notify: Drink some water!
- print: Reminder was sent
lunch:
interval: at 11:58am
steps:
- notify: It's lunch time very soon
title: Important
- say: Get ready for lunch
sign-of-life:
interval: every 2 hours
steps:
- run: ping -c 7 google.com
timeout-minutes: 2
weekend-exercise:
cron: 0 9 * * 6
steps:
- notify: Time for some exercises!
title: Stay healthy
Just like any regular YAML, everything from the #
character until the end of the line will be ignored. Use this to insert comments.
The schedule for each task can be specified as:
If neither is explicitly stated, then the task runs right away.
Each task consists of one or more steps.
Every step must be one of the following:
run
: executes a shell command
Example:
sign-of-life:
interval: every 30 minutes
steps:
- run: ping -c 7 google.com
Optionally, timeout-minutes
can be used to limit the execution time and working-directory
can be used to set the directory to start the execution from.
Another example:
sys-resource:
interval: every 2 hours
steps:
- run: |
date >> resources.log
top | head -n 4 >> resources.log
timeout-minutes: 3
working-directory: /var/log
print
: displays a message to the standard output
Example:
morning:
interval: at 7:00am
steps:
- print: Good morning!
notify
: sends a desktop notification
Optionally, title
can be used to set the notification title.
Example:
mahlzeit:
interval: at 11:58am
steps:
- notify: It's lunch time very soon
title: Yummy
The notification is supported on the following system:
say
: converts text to audible speech
Example:
vaya-con-dios:
interval: 0 17 * * 1-5
steps:
- say: Time to go home
The text-to-speech conversion is supported on the following system:
Found a problem or have a new idea? File an issue!
Alternative way to run Berkala (with Node.js)
With Node.js v14 or later (that has npx):
npx @ariya/berkala
To run the development version, check out this repo and then:
npm install
npm start