Soji is a terminal based tool for helping you stay mindful at work.
Soji is based on concepts originating in the fields of Psychology, Productivity, and Zen Buddhism.
These include:
- Pomodoro Technique
- Premack's Principal
- Concentraction meditation -- Samatha
- Awareness meditation -- Shikantaza
- Journaling
soji requires the Guile programming language to be installed
Fedora
sudo dnf install guile
Ubuntu
sudo apt install guile
Mac
brew install guile
Mac also requires brightness and terminal-notifier. They can be installed with
brew install brightness
brew install terminal-notifier
NOTE: I am developing soji
on Ubuntu and am currently unsure that it works on any other platform. Please feel free to lend a hand getting it working on your Platform :)
git clone [email protected]:joecannatti/soji.git
cd soji
sudo make install
Soji is design to interact with you primarily through your command prompt (as pictured above).
The standard prompt setup is built into soji. You just need to add to you .bashrc
or .bash_profile
PROMPT_COMMAND='PS1="`soji header`"'
I use a very up to date version of GNU bash
. I do not know if this will work with other shells, including zsh
Soji may be usable without this step, but I've not really tried. You could not have the info in your prompt and just run the commands soji
and soji status
to see what's going on.
A special note file is created for each day called the the engineering-log
. It's just a markdown file named like, $SOJI_NOTES_DIR/engineering-log-2016-06-19.md
Beginning any soji activity adds an entry into this file in the form of
** start -- Write Soji README.md -- 01:15PM
You are free to add your own notes in that file in between soji's log entries.
Running the soji command with no args will open this file in $EDITOR
. (I only use vi
, so I'm not sure how well this works currently with other editors)
$ soji
I open this file many times everyday. I recommend aliasing soji
to s
.
In you .bashrc
alias s='soji'
Then, you can easily pop this file open by running
$ s
Soji uses the start
subcommand to begin a pomodoro.
$ soji start 'Write README.md'
-
You will see your current pomodoro status in the prompt (see screenshot above).
-
After 25 min, soji will dim you screen(s) to 25%. (only verified as working on Ubuntu currently)
-
After another 5 min for the break, it will return the screen brightness to 100%
-
The pomodoro count in the command prompt will increment with each pomodoro that you begin.
-
The count is color coded based on the number of poms for the day
-
0-3 (Red)
- 4-7 (Yellow)
- 8-up (Green)
soji start
Begins a pomodoro. This commands creates an entry in the
engineering-log
and schedules a screen dim and break for 25 min
soji dim
Dims the screen to 30% brightness. (Only works on Ubuntu)
soji report
Displays a summary for the day's data
soji log
Sort of a private function. Handles writing to the engineering-log file
soji note
Opens today's log file. Can also open one off notes by supplying an arg for the name of the file
soji header
Prints the colorized header to be added to your bash prompt
soji break
Begins a break. Dims the screen. Schedules the screen to return to full brightness in 5 min.
soji meeting
Begins a meeting
soji bright
Brings the screen to 100% brightness. (Only works on Ubuntu)
soji heart-sutra
Begins the Heart Sutra chant in the terminal
soji lunch
Begins lunch
soji meditate
Begins unguided meditation
soji note journal
Write a journal entry for the day
Soji is written in pure bash (for the time being)
It uses a library called bats for automated testing.
Tests can be run locally with make