This is a slightly different blog post, just a few interesting things that you can do with Linux (i.e. stuff that is actually used). The screencasting is just a quick overview and a working command with ffmpeg, while the reminder scripts is a truly functional approach to setup e-mail reminders in a quick and easy way.
Simple Screencasting (using VLC as viewer)
This grabs the display (x11grab -i :0.0+0,0 at the x,y of 0,0) with 1400x940 pixels portion of screen and streams via tcp to the network when the stream is opened on a separate machine using the same IP address/port 6666. The quality -q can range form 1-31, and there is some serious latency (and no audio). But it is a simple approach using a single command (ffmpeg) and a readily available VLC utility. There are ways to do different things (such as the audio), but it can also be a challenge to get the syntax and tie into your system correct. This should be pretty easy to duplicate (just use your correct IP address!). You can then dig into ffmpeg and other examples to do other things. This is on a Debian host.
### Use VLC at client and open "Network Stream" and use tcp://192.168.1.5:6666 (host IP)
ffmpeg -video_size 1400x940 -f x11grab -i :0.0+0,0 -framerate 10 -vcodec mpeg4 -q 12 -f mpegts -r 10 -listen 1 tcp://192.168.1.5:6666
Setting up reminder e-mails
There are 3 elements to this approach - a crontab entry, a runreminders.sh script, and
a folder called reminders that has reminder as files named with the date to send the
reminder via e-mail (i.e. you need to create these files, embed the script, and put in
the text for your reminder (and make sure the file is executable as a script))
The easiest way to create a "new" reminder is to copy an existing reminder,
e.g. cp 2025-05-01 2026-06-01, then edit new reminder to change script (if needed).
Also, you can add a cleanup section to runreminders.sh to clear up "old"
files (but you may not want to if you want a history of these reminders)
This could be something like:
for rmfile in `find /home/user/scripts/reminders/* -mtime +10`;
do
echo Removing this file: $rmfile;
rm -r $rmfile
done
Below are the 3 pieces:
crontab entry (typically crontab -e to edit & update crontab for user)
#Reminders run at 6am every day, refer to /home/user/scripts/reminders/readme.txt
0 6 * * * sh /home/user/scripts/runreminders.sh
runreminders.sh
#!/bin/bash
# Filename: runreminders in /home/user/scripts
# Date Revised: 2025-02-05
# Overview - run every day, looks for file with date filename, and if match
# to current date, sends e-mail (script/reminder embedded in actual file)
# so reminders folder has files like 2025-05-01, 2025-12-11, 2026-01-01, etc.
CURDATE=`date +%Y-%m-%d`
for item in `ls reminders/*`
do
CHKDATE=`basename $item`
# echo $CURDATE
# echo $CHKDATE
if [[ "$CHKDATE" = "$CURDATE" ]] ;
then
echo "Current date $CHKDATE is equal to $CURDATE - Sending Reminder EMail!"
./reminders/$CHKDATE
else
#echo "Current date $CHKDATE is not equal $CURDATE"
fi
done
exit 0
The file readme.txt explains what is in the reminders folder, with a sample
script embedded - to start, you can copy readme.txt to YYYY-MM-DD, e
.g. cp readme.txt 2026-01-01, then delete everything up to the #!/bin/bash line,
save it, and finally make it executable, e.g. chmod a+x 2026-01-01
readme.txt file
readme.txt
reminders sub folder, used by ../runreminders (in crontab)
Format must be YYYY-MM-DD
Refer to existing file for script, e.g. the file name 2028-05-12 is tagged
to be executable as a script, (e.g. chmod a+x 2028-05-12), and has the
following script
File YYYY-MM-DD:
#!/bin/sh
# sendmail command line optons:
# -i - do not treat lines starting with dot specially
# -t - read recipients lists from message headers: TO,CC,BCC
# -v - use verbose mode (describe what is happening)
#
# The empty line separates mail headers from mail body.
# Without -t recipients should be listed after command line options.
REMDATE=`basename $0`
#echo $REMDATE
FROM='mail@example.com'
TO='Your Name '
/usr/sbin/sendmail -i -t << MESSAGE_END
To: ${TO}
From: ${FROM}
Subject: Reminder E-mail - $REMDATE
This is the reminder to do something you wanted to be reminded about, sent on $REMDATE
MESSAGE_END