This page was last updated 4 November 2020.
plan - Calendar and Day Planner
The current release version is 1.12.
is a schedule planner based on X/Motif. It displays a
month calendar similar to xcal, but every day box is large enough to
show appointments in small print. By pressing on a day box, the
appointments for that day can be listed and edited. Appointments are
entered with the following information (everything except the time is
- the date, time, and length (time and days) of the appointment,
- an optional text message to be printed,
- an optional script to be executed,
- early-warn and late-warn triggers that precede the alarm time
- repetitions: [n-th] weekdays, days-of-the-month, every n days, yearly
- optional fast command-line appointment entry
- flexible ways to specify holidays and vacations
- extensive context help
- multiuser capability using an IP server program (with access lists),
- grouping of appointments into files, per-user, private, and others
The action being taken when a warn or alarm time is reached is
programmable; by default a window pops up. In addition, a program can
be executed, or mail can be sent. Other methods of listing appointments
(today, this week, next week, or a keyword search for regular
expressions) are also available. Plan can be configured to
display times in 12-hour or 24-hour formats, mmddyy and ddmmyy date
formats, and can show either Monday or Sunday in the leftmost column.
Four view modes are supported: month, year, week, day, and a 365-day
overview. The day, week, and overview plot appointments as colored and
labeled bars on a time chart.
You do not need root access to install and run these programs. Edit
the Makefile to change the installation directories (default
/usr/local/bin), and run make systemname. For a list of
supported system names, run make help.
plan compiles and runs on anything that has Motif. At this
time, X11R5 and Motif 1.1.2 will do, but X11R6 and Motif 1.2 features are
recommended. It also works with XFree86, with certain restrictions for some
very old versions of XFree86. To compile plan, Motif libraries
are required; however, if static linking is used the resulting binary can
be run on non-Motif systems. A Linux binary is available on
There is no way to compile or even port plan to OpenLook
or Athena. It has been linked successfully with version 0.86.1 of LessTif, a free clone of Motif, although
occasional rough edges may appear. Versions prior to LessTif 0.86.1 have
problems with plan.
For connection software for the Apple Newton PDA and
plan data, see
For connection software for the PalmPilot PDA and
plan data, see
Supported systems include:
- Silicon Graphics: IRIX 4, IRIX 5, IRIX 6
- Hewlett-Packard: HP/UX 8-11
- IBM RS6000 running AIX
- IBM PS/2 Model 8577, AIX 1.3 with mpp level 0013 patches, gcc
- DEC running OSF/1
- Sun with Motif (won't work with OpenLook)
- Sun 4.1.3 or Solaris 2.2 or 2.5
- Ultrix 4.3 with Motif 1.1.3
- CDC/Mips running EP/IX 2.1.1
- Mips Magnum RISCos 4.52 with RISCwindows 4.0
- Data General DG/UX, with gcc
- SNI SINIX 5.41
- SunSoft Interactive Unix v4.0
- NCR 3000 systems
- USL SVR4.2 V1 with mdev package
- Linux with Motif or LessTif (static binary is available)
- NetBSD/i386 1.0A
- FreeBSD 2.x
- SVR4 Using gcc
- Sony NEWS-OS4.x and NEWS-OS6.x
- Sequent Dynix/ptx 2.0, 2.1, 4.0, and 4.1
- Convex C220 running BSD, gcc
- UnixWare 1.1 and 2.0
- HP/Apollo DomainOS
Similar systems usually work. The default Sun compiler is not sufficient,
it is intended for kernel recompilations only. Use gcc.
Full sources are available here:
If you are a collector of old hardware like me, here is latest Silicon
Graphics IRIX version is 1.9 and available here:
Please send bug reports or ideas for new features to me, at
Since I get quite a lot of mail, please be patient, I am not very good at
replying quickly... Also note although I appreciate new ideas and still
actively enhance plan, I throw out more ideas than I accept
because I avoid creeping featurism, which kills program faster than neglect.
Please read the Troubleshooting section below or in the online help. It
answers the most common questions, including the #1 problem - how to set
- If you get the message No type converter registered for 'Pixel'
to 'String' conversion, you probably have a CDE system that
overrides standard resources with nonfunctional values. Run
plan -d >> ~/.Xdefaults; xrdb -merge to fix.
- If the time display in the month view and in the icon title do not
update, and/or you get the message X server fails to send timer
events, switching to synchronous file writing, there is something
wrong with your X server (probably XFree). The message shows that
plan has noticed this (after changing an appointment at least 40
seconds after startup) and will at least make sure that no data is
lost. There is no fix for the time display. This is new in plan 1.8.2.
- If you get messages like "pland: .../.dayplan: illegal line:
y s--------- 1 1 0" or "pland: too many u stmts in .../.dayplan",
you are running the wrong pland version, 1.4.4 or earlier instead
of 1.4.7 or higher. Install the correct version of pland in the
directory specified as LIB in the Makefile (/usr/local/mi/lib by
default). Also make sure notifier, netplan, plan.help, and
plan_cal.ps are in the same directory.
- If you run netplan as root, and it can't open its home directory,
check whether NOB_UID and NOB_GID in the Makefile really contain
the user and group ID of the <nobody> account, and make sure
that <nobody> can access the netplan.dir home directory in
- If plan refuses to change other users' appointments that were
attached with the Config->User list menu, saying "no permission",
make sure that you own the file. Having write permission is not
enough. You can override this safety feature by turning off the
"Only owner can write" mode in the Config->Calendar menu, but
do so with great care because multiple writers are not sequenced.
- If your screen saver stops working when plan is running, put a
line "Plan*showIconTime: False" into your ~/.Xdefaults file. If
plan updates the time in the icon, the screen saver timeout is
restarted, and never reaches timout because updates happen once
every minute. Only some X servers exhibit this problem.
- On SGI systems, if the icon doesn't show a picture, copy the icon
picture Plan.icon into your ~/.icons directory. If you don't have
one and don't want one, set the plan*noIcon resource to False in
your ~/.Xdefaults file. It may be necessary to restart 4Dwm to
register the icon after copying it to ~/.icons.
- If starting plan prints cpp errors to stderr (or pops up an error
dialog on SGIs if desktop error reporting is turned on), change
all '#' characters in your ~/.holiday to ':'. The comment
introducer was changed in version 1.3 to allow #include statements.
- If the main menu shows an incorrect time above the month calendar,
and alarms trigger an hour early or late, plan might have an
incorrect idea of your timezone and Daylight Saving Time status.
To correct this, choose "Adjust Time" from the Config pulldown,
and change the defaults.
- If the pulldowns in the main menu show labels like "button_3", add
-DNOMSEP to whatever xxx_C line you are using in the Makefile, and
recompile. If the problem persists, also add -DFIXMBAR.
- On some BSD-based systems, it takes a while for appointment
changes to propagate to the daemon. The result is that alarms that
trigger a few minutes after they were added or edited are ignored.
This is normal on these systems. However, if alarms don't trigger
at all, use the ps command (see man ps) to make sure that pland is
running, and verify that its process ID agrees with the number in
/tmp/.plandUID (with UID being your numerical user ID). Also, plan
may get out of sync if you start more than one, and answer Continue
in the warning dialog.
- Previous versions of plan contained a recommendation to put "killall
pland" into your .logout file. Don't do this, it kills the daemon
whenever you delete a window, and no more alarms will trigger.
- The plan program uses quite a few colormap entries. Although there
is a black&white fallback mode, you may have problems starting other
programs that also need many colormap entries. The only workaround
is to kill plan when you don't need it; alarms will trigger anyway.
- If radio and toggle buttons appear gray regardless of the colToggle
and colRed resources, make sure that the sgiMode resource is False.
In SGI desktop mode, colToggle and colRed are disabled because they
would override the desktop defaults. The sgiMode resource is True
only if plan was compiled with "make sgi5", add "plan*sgiMode: False"
to your ~/.Xdefaults file in this case, or recompile with "make sgi4".