build_dianne_skoll_s_remind
Build Dianne Skoll's Remind
This software builds beautiful calendars, and it can do a lot more than that, things like send an e-mail two days before a full moon, or pop up a desktop alert to remind you about your meeting that happens on the fourth Saturday of the month except for November and December when it's on the third Saturday.
This is built on a fresh Debian/Ubuntu/Mint install, it's similar for Fedora/etc…
sudo apt install -y etckeeper git tig sudo apt update && sudo apt upgrade sudo apt install -y build-essential checkinstall libjson-maybexs-perl libpango-perl libcairo-perl git clone https://git.skoll.ca/Skollsoft-Public/Remind.git cd Remind/ ./configure make make test sudo make install cd ~ vim .reminders # This should generate a 12 month calendar for 2024 remind -pp -ca12 ~/.reminders 2024/01/01 | rem2pdf -e -l -c3 -m Letter > Calendar.pdf
Below is the content of the .reminders file;
# Set your latitude and longitude correctly for Sunrise/Sunset/Equinox/Solstice
#
# The values below are for Eastgate, Ohio
SET $LongDeg -84
SET $LongMin 44
SET $LongSec 53
SET $LatDeg 39
SET $LatMin 5
SET $LatSec 51
SET Sunday 0
SET Monday 1
SET Tuesday 2
SET Wednesday 3
SET Thursday 4
SET Friday 5
SET Saturday 6
SET Sun 0
SET Mon 1
SET Tue 2
SET Wed 3
SET Thu 4
SET Fri 5
SET Sat 6
SET Jan 1
SET Feb 2
SET Mar 3
SET Apr 4
SET May 5
SET Jun 6
SET Jul 7
SET Aug 8
SET Sep 9
SET Oct 10
SET Nov 11
SET Dec 12
SET January 1
SET February 2
SET March 3
SET April 4
SET May 5
SET June 6
SET July 7
SET August 8
SET September 9
SET October 10
SET November 11
SET December 12
SET Quote CHAR(34)
SET Week_1 1
SET Week_2 8
SET Week_3 15
SET Week_4 22
FSET _last(mo) "1 " + MON((mo%12)+1)+" --7"
FSET _trig() TRIGGER(TRIGDATE())
FSET _back(days) TRIGGER(TODAY()-days)
FSET _am_pm(tm) IIF(tm<01:00, tm+12*60+"am", \
tm<12:00, tm+"am", \
tm<13:00, tm+"pm", \
tm-12*60+"pm")
FSET _no_lz(s) IIF(SUBSTR(s, 1, 1)=="0", SUBSTR(s, 2), s)
REM Thu MSG Garbage to curb
# Important Meeting
REM 22 Sat SATISFY [$Tm != 11 && $Tm != 12] MSG Important Meeting
REM 15 Sat SATISFY [$Tm == 11 || $Tm == 12] MSG Important Meeting
# Payday!
REM 2022 Aug 19 *14 MSG Payday
# Tiny sunrise, sunset, and day of year notification
FSET _DayOfYear(x) x-(date(year(x),1,1) - 1)
REM SPECIAL PANGO @4,-1 <span size="4200"><i>Rise [sunrise($U)] Set [sunset($U)] [_DayOfYear(today())] ([365+isleap(today())-_DayOfYear(today())])</i></span>
# Show the phases of the moon
[trigger(moondate(0))] SPECIAL MOON 0
[trigger(moondate(1))] SPECIAL MOON 1
[trigger(moondate(2))] SPECIAL MOON 2
[trigger(moondate(3))] SPECIAL MOON 3
IF $LatDeg >= 0
REM [soleq(0)] MSG Vernal Equinox
REM [soleq(1)] MSG Summer Solstice
REM [soleq(2)] MSG Autumnal Equinox
REM [soleq(3)] MSG Winter Solstice
ELSE
REM [soleq(0)] MSG Autumnal Equinox
REM [soleq(1)] MSG Winter Solstice
REM [soleq(2)] MSG Vernal Equinox
REM [soleq(3)] MSG Summer Solstice
ENDIF
# Regular holidays
REM Sat Sun SPECIAL SHADE 245 245 245
SET SaveTrig $NumTrig
SET easter EASTERDATE(YEAR(TODAY()))
REM [TRIGGER(easter-46)] MSG Ash Wednesday
REM [TRIGGER(easter-7)] MSG Palm Sunday
REM [TRIGGER(easter-2)] MSG Good Friday
REM [TRIGGER(easter)] MSG Easter Sunday
REM [TRIGGER(easter+39)] MSG Ascension Day
REM [TRIGGER(easter+49)] MSG Pentecost
REM Jan 1 MSG New Year's Day
REM Mon Jan [Week_3] MSG Martin Luther King Day
REM Feb 2 MSG Ground Hog Day
REM Feb 14 MSG Valentine's Day
REM Mon Feb [Week_3] SCANFROM [_back(7)] SATISFY 1
OMIT [_trig()] MSG President's Day
REM Mar 17 MSG St. Patrick's Day
REM Sun Mar 8 MSG Daylight Saving Time
REM Apr 1 MSG April Fool's Day
FSET _ustax(x) (wkdaynum(x) == 1 && day(x) != 15)
REM OMITFUNC _ustax Mon Tue Wed Thu 15 Apr AFTER MSG %"Income Tax Day%"
REM May 5 MSG Cinco de Mayo
REM Sat May [Week_1] MSG Kentucky Derby
REM Sun May [Week_2] MSG Mother's Day
REM Sat May [Week_3] MSG Armed Forces Day
REM Mon [_last(May)] SCANFROM [_back(7)] SATISFY 1
OMIT [_trig()] MSG Memorial Day
REM Jun 14 MSG Flag Day
REM Jun 19 MSG Juneteenth
REM Sun Jun [Week_3] MSG Father's Day
REM 4 July SCANFROM [_back(7)] SATISFY 1
IF WKDAYNUM(TRIGDATE()) == Sat
REM [TRIGGER(TRIGDATE())] MSG Independence day (actual)
OMIT [TRIGGER(TRIGDATE()-1)] MSG Independence day (observed)
ELSE
IF WKDAYNUM(TRIGDATE()) == Sun
REM [TRIGGER(TRIGDATE())] MSG Independence day (actual)
OMIT [TRIGGER(TRIGDATE()+1)] MSG Independence day (observed)
ELSE
OMIT [TRIGGER(TRIGDATE())] MSG Independence day
ENDIF
ENDIF
REM Aug Fri 1 --7 MSG Sysadmin's Day
REM Sep 22 Emancipation Day
REM Mon Sep [Week_1] SCANFROM [_back(7)] SATISFY 1
OMIT [_trig()] MSG Labor Day
REM Mon Oct [Week_2] MSG Columbus Day
REM Nov 11 MSG Veterans Day
REM Sun Nov 1 MSG Daylight Saving Time ends
REM Oct 30 MSG Mischief Night
REM Oct 31 MSG Halloween
REM Tue Nov 2 SCANFROM [_back(7)] \
SATISFY [(YEAR(TRIGDATE()) % 4) == 0] \
MSG Election Day
REM Thu Nov [Week_4] SCANFROM [_back(7)] SATISFY 1
OMIT [_trig()] MSG Thanksgiving Day
REM Fri Nov [Week_4+1] SCANFROM [_back(7)] SATISFY 1
OMIT [_trig()] MSG Black Friday
REM Dec 24 MSG Christmas Eve
REM Dec 25 MSG Christmas Day
if $NumTrig > SaveTrig
REM SPECIAL SHADE 240 240 220
endif
# Vacation days from work;
SET SaveTrig $NumTrig
REM May, 29, 2023 MSG Memorial Day
REM Jul, 04, 2023 MSG Independence Day
REM Sep, 04, 2023 MSG Labor Day
REM Nov, 23, 2023 MSG Thanksgiving
REM Nov, 24, 2023 MSG Day After Thanksgiving
REM Dec, 22, 2023 MSG Christmas Eve
REM Dec, 25, 2023 MSG Christmas Day
REM Dec, 29, 2023 MSG New Year's Eve
REM Jan, 01, 2024 MSG New Year's Day
REM May, 27, 2024 MSG Memorial Day
REM Jul, 04, 2024 MSG Independence Day
REM Sep, 02, 2024 MSG Labor Day
REM Nov, 28, 2024 MSG Thanksgiving
REM Nov, 29, 2024 MSG Day After Thanksgiving
REM Dec, 24, 2024 MSG Christmas Eve
REM Dec, 25, 2024 MSG Christmas Day
REM Dec, 31, 2024 MSG New Year's Eve
if $NumTrig > SaveTrig
REM SPECIAL SHADE 240 240 200
endif
# Family Holidays!
SET SaveTrig $NumTrig
REM 03 Jan MSG Amy's Birthday
REM 27 Jan MSG Bob's Birthday
REM 01 Feb MSG Chet's Birthday
REM 07 Feb MSG Dee's Birthday
REM 21 Mar MSG Earl's Anniversary
REM 25 Apr MSG Fannie's Birthday
REM 01 May MSG Gail's Birthday
REM 23 May MSG Hugh's Birthday
REM 01 Jun MSG Ingred's Birthday
REM 18 Jul MSG John's Birthday
REM 02 Aug MSG Kim's Birthday
REM 03 Aug MSG Lou's Birthday
REM 06 Sep MSG Marla's Birthday
REM 14 Sep MSG Noel's Anniversary
REM 03 Oct MSG Olivia's Anniversary
REM 07 Oct MSG Paul's Birthday
REM 14 Nov MSG Quinn's Birthday
REM 01 Dec MSG Rod's Birthday
REM 16 Dec MSG Scott's Birthday
if $NumTrig > SaveTrig
REM SPECIAL SHADE 200 240 240
endif
Running this command in the home folder;
remind -pp -ca12 ~/.reminders 2024/01/01 | rem2pdf -e -l -c3 -m Letter > calendar.pdf
Generates this .pdf file.
This is an awk script that creates an ics file from the output of the remind software; rem2ics.
build_dianne_skoll_s_remind.txt · Last modified: by steve
