105 lines
4.4 KiB
Markdown
105 lines
4.4 KiB
Markdown
# calendarender
|
|
|
|
<img src="https://git.laboratoryb.org/trav/calendarender/raw/branch/master/calendar.jpg" width=556>
|
|
|
|
|
|
|
|
These are 2 scripts for calendaring in plantext files.
|
|
|
|
`calendar.txt` shows the current day at the top and continues down as far as the number of months you have rendered.
|
|
|
|
`calendar_archive.txt` contains all the days before current day.
|
|
|
|
calendar.txt looks like this:
|
|
|
|
```
|
|
☼ sun nov 29
|
|
water plants
|
|
coop fed meeting
|
|
|
|
|
|
◯ mon nov 30
|
|
recycling
|
|
|
|
|
|
———— December ————
|
|
|
|
☼ tue dec 01
|
|
reading group
|
|
|
|
|
|
☼ wed dec 02
|
|
1pm appointment
|
|
|
|
|
|
⇃◌ thu dec 03
|
|
open hours at lab
|
|
```
|
|
|
|
|
|
## installation + configuration
|
|
1. clone or download the repo.
|
|
|
|
2. configure calendarender by opening calendarender.sh in your texteditor of choice and modify the line:
|
|
|
|
`calendarFile="/Users/YOU/WHEREYOURNOTESARE/calendar.txt"`
|
|
|
|
to say where your calendar file is. This must be the absolute path to your calendar file. If you don't have one just make an empty txt file there to start.
|
|
|
|
You might also like to configure recurring events. Recurring events really ought to be in a separate config file but currently they are hardcoded within the program itself. To add recurring events go down to where it says `############# render weekly things`. This section is broken down by day. There are a number of examples for Sundays that you can look at and modify for different days of the week/month. Anything in quotes after `echo` will be added to the calendar.
|
|
|
|
```
|
|
#every sunday
|
|
if [ "$dayOfWeek" = "Sun" ]; then echo "water plants">> $calendarFile; sunday=$(($sunday+1)); fi
|
|
```
|
|
_Make sure not to get rid of the section `sunday=$(($sunday+1))` because that is how the program keeps track of which sunday/monday/tuesday/(etc) we're on._
|
|
|
|
```
|
|
#second sunday
|
|
if [ "$dayOfWeek" = "Sun" ] && [ "$sunday" -eq 2 ]; then echo "example potluck">> $calendarFile; fi
|
|
```
|
|
_copy this to another day and change `Sun`, `sunday`, and `sunday` to that day. The 2 indicates this will be on the second sunday_
|
|
|
|
```
|
|
#last sunday
|
|
if [ "$(date -v1d -v+"$tooFarNum"m -v-1d -v-sun +%a-%b-%d)" = "$(date -v1d -v+"$1"m -v+"$PLACEINMONTH"d +%a-%b-%d)" ] && [ "$dayOfWeek" = "Sun" ]; then echo "last sunday of the month potluck">> $calendarFile; fi
|
|
|
|
```
|
|
_this one is a liiiitle more complicated but you can copy and paste this one to create events on the last monday/tuesday/etc of the month. Just change "Sun" to a different day of the week_
|
|
|
|
|
|
3. configure calendarchive
|
|
|
|
Within calendarchive.sh, find the lines:
|
|
|
|
`calendarFile="/Users/YOU/YOURNOTESFOLDER/calendar.txt"`
|
|
|
|
`calendarchive="/Users/YOU/YOURNOTESFOLDER/calendar_archive.txt"`
|
|
|
|
and modify them to point to your calendar files. Make sure both those exist at least as blank files.
|
|
|
|
4. you might need to `chmod +x` each of the scripts to make sure they're executable.
|
|
|
|
5. You can now just run them with `sh calendarchive.sh` or `sh calendarender.sh` but they're easier to use if they're in your path:
|
|
|
|
Copy the scripts somewhere like `~/bin` and add `export PATH=$PATH:~/bin` to `~/.bashrc`
|
|
|
|
|
|
## usage
|
|
|
|
My personal notes folder is plain text synced between machines with SyncThing and edited via Notational Velocity or TextEdit or Gedit, etc. I keep calendar.txt, calendar_archive.txt and all sorts of other notes in there. I've been calendaring this way since fall of 2019.
|
|
|
|
|
|
### calendarender
|
|
|
|
calendarender takes one argument and that's the number of months in the future you'd like to render. So say it's currently some day in November and I want to add the days in January to my calendar.txt, I would run `calendarender 2`. It'll print to the terminal as well as to the file.
|
|
|
|
calendarender also prints relevant moon phases: new, full, crescents and halfs. On any day that isn't one of those phases a sun is printed. If it's waxing an up-arrow will be printed, waning, down-arrow. It's not the _most_ accurate moon-phase algorithm but close enough for me :)
|
|
|
|
|
|
### calendarchive
|
|
|
|
if you run calendarchive without any arguments it will remove all days from calendar.txt that are before the current day and append them to the bottom of calendar_archive.txt. If it's late at night but before midnight you can run `calendarchive 1` and it'll also archive today as well (this doesn't work on linux though because of differences in how the `date` program works. Oh well.).
|
|
|
|
you could cron calendarchive to have it automatically run but personally I keep all kinds of notes and things in my calendar and don't want to lose track of anything. So I manually run calendarchive.
|