The super simple birthday and anniversary reminder program.

BDay is a simple program to help you track birthdays and anniversaries. It runs when you start or log in to your computer, displays any events that are coming up, and then exits when you click OK. It does not hang around in the system tray or as a background process taking up your computer’s resources. If there are no events to be displayed, then you wont even see BDay run.
| bday-win32-2.0.exe | 1.2 MB | Windows self-installing executable. |
| bday-linux-i386-2.0.tar.gz | 1.1 MB | Linux 32-bit executable |
| bday-2.0-1.i586.rpm | 976 KB | Linux 32-bit executable RPM |
See the all downloads page for source code, 64-bit Linux and other package formats.
Support is available either via the Issue Tracker hosted at Google Code or Evan’s Software Google Group/Mailing List.
This program is licensed under the GNU General Public License v3.
Events are stored in a simple text file. Each line in the text file lists one event which may be displayed. Here is an example showing a couple of events:
1 Apr 1980 John's birthday
25 Apr ANZAC DaySo a simple event is defined by the day, then the month (3 letters), the year and the event. The year is optional, and if defined then the number of years is displayed with the event. (e.g., John will be 29 on his birthday in 2009, so the number “29” is displayed in parenthesis after the event.)

By default, events are displayed from five days before they occur. You can change this for a specific event by specifying the number of days warning after the year. For example, if you had “1 Apr 1980 10 John's birthday” then on the 25th of March you would see:

If you want to use a default lead time other than five days, you can change it by putting the following in the event file:
lead time n
Where “n” is the number of days lead time you want by default. All events specified after this line will have the new lead time by default.
If you put an event such as “29 Feb Fred & Wilma's Anniversary” it will only show up every leap year. Instead, put in “-1 Feb Fred & Wilma's Anniversary” to display on the last day of February, every year.
See Advanced Event Formats for more details on advanced event formats.
If you want an event on, say the first Sunday of a month, then you can specify an event like this:
Sun Sep Fathers' Day
You specify the day of the week, the month, the year if you want it, and the event.
If you wanted an event on the second Sunday of the month instead, you would specify it like so:
Sun+2 May Mothers' Day
Again, you specify the day of the week, but this time you include a plus two to indicate you wanted the second Sunday, not the first. It is important that there be no spaces around the plus sign. (Note that “Sun” and “Sun+1” are equivalent.)
If instead, you wanted an event on the last Friday of the month, you could specify it like so:
Fri-1 Jan-Dec Balance accounts.
So a negative number indicates the last of the specified day in the month. Likewise the second last Friday would be “Fri-2”.
Note that we also specified a range of months for this event, so the event will occur on the last Friday within the specified range (every month in this case). See Advanced Event Formats for more details on advanced event formats.
There are two event files available for editing:
You can edit these files from the Edit menu.

See Events File Locations for the locations in the file system where these files are stored.
Under the File menu you will see a menu item labelled, “Run on Startup”. Selecting this item will toggle whether BDay will run when the computer starts or the current user logs in.

BDay can be run in “quick” mode in one of two ways:
-q” or--quick” command-line parameter.bdayquick”, which is abday main program.In quick mode, if there are no events to be displayed then BDay will exit immediately.
You typically want to run this when the user logs into the computer. Unfortunately, this is dependant on which window management system you are using. For instance, for KDE you could put a symbolic link into the “~/.kde/Autostart” folder with a command such as:
ln -s /usr/bin/bdayquick ~/.kde/Autostart
(Depending on the distribution of Linux and the version of KDE being used, the relevant folder may be “~/.kde4/Autostart”.)
For Gnome, you must open the System Preferences or Control Centre, select Sessions and then add an entry in the Start Programs tab.
Another option is to run BDay at a scheduled time using cron. To edit your cron schedule, enter the following command at your terminal/console prompt:
crontab -e
The following line would configure cron to run BDay at 5AM every morning, so if there are events to be displayed, they will be there waiting for you when you arrive at your computer in the morning:
0 5 * * * bdayquick
Each event is on a single line, comprised of the following components:
day mon [year] [lead_time] text
The first component is either the day of the month or the day of the
week, followed by the month. This is followed optionally by a year, and
an optional lead time, and finally by the text of the event.
For the day of the month, it can be either:
For the day of the week, it will be one of Mon, Tue, Wed, Thu, Fri, Sat or Sun
to indicate the day of the week, followed by either a positive or
negative number to indicate which week in the month in which the
event occurs.
Examples:
The first Monday of the month.
Also first Monday of the month.
The second Monday of the month.
The last Friday of the month.
The second last Friday of the month.
It is important that there be no spaces between the day name and the number following it.
If you specify the fifth day of the week in a month, such as the
fifth Monday of the month, and the month only contains four Mondays in
the current year, the event will not be displayed for that year.
The month is one of Jan, Feb, Mar, Apr, May, Jun, Jul, Aug, Sep, Oct, Nov or Dec, indicating which calendar month the event occurs.
It is possible to have an event that occurs in more than one month,
either by specifying a range, or as discreet list. For example:
An event occurring on the last Friday in March, June, September and
December:
Fri-1 Mar,Jun,Sep,Dec Prepare quarterly reports
An event that occurs in the first day of the month for the first half of
the year:
1 Jan-Jun This is the first half of the year
An event that occurs on the first Monday in January, February, March and
August
Mon Jan-Mar,Aug The odd event
Again, no spaces should be between the months, only commas or hyphens.
If a year is specified, then the number of years between the current
year and the year of the event is displayed in parenthesis.
Example: For the event:
1 Apr 1980 John's birthday
In the year 2009, it would be displayed with a “29” in parenthesis:

If you wanted an event that only occurred in a specific year, put a “+1” after the year (no spaces). For example:
27 Dec 2009+1 Public holiday for Christmas
If you wanted an event to only occur for two years in a row, you could put a “+2”, a “+3” for three years, and so on.
By default, events are displayed from five days before they occur.
You can change this for a specific event by specifying the number of
days warning after the year. For example, if you had “1 Apr 1980 10 John's birthday” then on the 25th of March you would see:

If you want to use a default lead time other than five days, you can change it by putting the following in the event file:
lead time n
Where “n” is the
number of days lead time you want by default. All events specified
after this line will have the new lead time by default.
This is simply the text to be displayed for the event. It can pretty
much be anything, although it is probably a good idea to avoid starting
the event text with a number or it could get misinterpreted as a year
or the desired lead time.
The location of events files depends on the operating system.
The user events file is stored at:
Where “user” is the user’s log in ID.
The system events file is stored at:
A third events file is also available in Microsoft Windows, the application events file. It is stored in the same folder as the bday.exe program (usually “C:\Program Files\bday”.)
The user events file is stored the user’s home directory:
The system events file is stored at:
Note that BDay also creates the directory “~/.bday” to hold certain application properties.
You can include another events file by entering the following line in one of the above include files:
include filename
Where “filename” is the full path and name of the file to be included.
Ages ago I whipped up a little program in Borland C++ Builder to help me keep track of important dates like birthdays and anniversaries.
It proved to be a popular little program with a few of my friends and family. I think part of its charm was that entering events was as simple as editing a text file, and the fact that it didn’t hang around in the system tray, tying up resources. It did its job and then got out of the way.
Time moved on and I moved from running Windows as my main desktop to running Linux, so I stopped using BDay personally. But every now and again someone would mention what a useful little program it was, and so I wanted to give it a bit of an update, as well as make it cross-platform so I could run it on Linux and others could still use it on Windows.
This also gave me the opportunity to learn a little bit of wxWidgets, a cross-platform GUI library written in C++, but with interfaces for many programming languages.
So enter version 2, with the ability to edit files inside the program (instead of just opening notepad) and some fancier event formats like day of the week.