This page was last updated 21 August 2018.

JPEG screen shot


plan - Calendar and Day Planner

All pictures below have been reduced to one-half size and compressed with fairly brutal quality settings.


There is extensive context-sensitive online help provided with plan.

Calendar Views

plan supports five different view modes:

Each view has active areas that, when pressed, switch to another view. For example, pressing on a day in the month calendar number switches to a day view. There is also a pulldown menu, and keyboard accelerators (Ctrl-M, Ctrl-Y, Ctrl-O, Ctrl-W, and Ctrl-D). Other views can either use the main window, or pop up their own windows (this is a configuration option).

The following paragraphs describe each view in turn. The next chapter defines what an appointment is, what it can do, and when it causes actions such as popping up reminder windows or executing sacripts. Finally, configuration options are discussed.

Month View

Pulldown Menus


Active zones

Year View


Active zones

Year Overview


Active zones

Week View


Active zones

Day View


Active zones


Appointments are entered, changed, and deleted with the edit menu:


Mandatory properties

Optional properties

The rest of this chapter shows the subwindows installed by the square icon buttons below the note.

Recycle popup menu

If more than one of these is specified, the appointment repeats on all of the specified days. Using an end date in the main edit menu without using the recycle popup is equivalent to repeating every 1 days until some end date.

If an appointment repeats, instances of the appointment show up on multiple days, the appointment is not copied to all these dates. Editing any of these edits the appointment. Note that dragging an appointment in one of the views does not change repetition information - if it repeats every Monday and is dragged forward one day, it still repeats on Mondays but begins one Monday later.

Message popup menu

The same popup is installed for the ``%'' icon. It can be used to enter a shell script that is executed at appointment trigger time (but not advance-warning times). Shell scripts should begin with a #! line.

Exception popup menu

The same popup is installed for the ``%'' icon. It can be used to enter a shell script that is executed at appointment trigger time (but not advance-warning times). Shell scripts should begin with a #! line.


Appointments are stored in files, either on a reachable disk or on a netplan IP server. Grouping appointments in files allows specification of which appointments are shown in which views, and using colored backgrounds in views. Also, if multiple users access files, it is possible to grant read/write access to individual users (in this case you should definitely use netplan to properly sequence multiple concurrent accesses).

Files can be specified from a menu called from the File list choice in the File pulldown in the main window:

The first line in the list is the user's ``own'' file, stored either in the .dayplan file in your home directory or under your login name on a netplan IP server. The group and local file name cannot be edited. The name can be edited, but should always be your login name. This makes it easy for other users to find your appointment file if it is stored on a netplan IP server. (Use the padlock flag in the edit menu to make ``own'' appointments inaccessible to others.)

Networking with the netplan IP server

The problem with storing files in plain disk files is that plan basically acts as a text editor, and when two text editors access the same file, two problems exist: changes made by one user do not become visible to the second user, and if both users make changes and write back (plan writes back ten seconds after a change) only the last write will succeed and the first is overwritten.

The netplan IP server solves this problem. It is typically started on a single host on the local network, and manages appointment files. Any number of plan programs can connect to it. netplan sequences all updates to the same appointment so that no two users can edit an appointment simultaneously. It also broadcasts changes to all connected plan programs that have the file in their file lists. All plans then update all their views to reflect the change. netplan supports access lists to limit read, write, and delete access to files based on user, group, and host names, and supports mandatory identd RFC 1413 authentication where available. See the documentation for details.


All configuration menus are called from the Config pulldown.

Config->Calendar Views

Config->Adjust time

Config->Alarm options

This is what a reminder window looks like:

Reminders are posted by a separate program pland, which reads the same files and connects to the same netplan IP servers as the main plan program. While plan is a large GUI program, pland is a very small non-GUI daemon that is not a resource hog like plan.

Config->Define holidays

This menu can be used to define holidays that are shown in month day boxes and elsewhere. Holidays can also redefine plan's idea of weekend days by changing text colors. It is almost always sufficient to copy one of the national holiday files in the distribution, such as holiday_us to .holiday in your home directory or /usr/local/lib/holiday for system-wide holidays. The syntax can be found in the online help. Here is an example:
    small "New Year" weekend on 1/1
    small "President's Day" weekend on third monday in february
    small "Easter" weekend on easter
    small "Memorial Day" weekend on last monday in may
    small "Independence Day" weekend on july 4
    small "Labor Day" weekend on first monday in september
    small "Columbus Day" weekend on second monday in october
    small "Veteran's Day" weekend on november 11
    small "Thanksgiving" weekend on fourth thursday in november
    small "Christmas" weekend on december 25
    "Spring Begins" on march 22
    "Summer Begins" on june 22
    "Fall Begins" on september 22
    "Winter Begins" on december 22

Back to the main plan page.
Tell me if you found this information interesting or useful, or if you have comments.