ICAL
Section: Ical 4.0.2 (1)
Updated: 2026-11-03
Index
NAME
Ical - An X based Calendar Program
This is NOT Apple's iCal or the IETF iCalendar standard RFC2445, RFC5545 or successors.
SYNOPSIS
ical
[-calendar filename]
[-date date]
[-show +days]
[-list]
[-print 1|2|4|8|10|month]
[-exportics]
[-importics]
[-addone]
[-addmultiple]
[-iconic]
[-iconposition x,y]
[-popup]
[-geometry +x+y]
[-fg color]
[-bg color]
[-display display]
[-nodisplay]
HISTORY
By today's standards, this is an ancient program. Much of the code is
33 years old and counting, and it still runs nicely. Performance is no
longer an issue. My calendar has 3500 entries from the last 25 years.
This is NOT Apple's iCal or the IETF iCalendar standard RFC2445,
RFC5545 or successors. The first version of Apple's iCal was released
in 2002, nine years after this was written.
Ical was written by Sanjay Ghemawat when he was at DEC, Palo Alto back
in 1993. At that time, graphic X terminals were used to allow multiple
users to share a Unix workstation, and the home directories were
stored on the remote Unix filesystem. Today, everyone has their own
workstation, and your home directory is generally stored locally. To
reach other users' calendars in their home directories, you will need
to mount those filesystems with some remote access protocol like samba
or nfs. Another alternative is https://syncthing.net/
so your
local workstation has a synchronized copy of the other users'
calendar.
Please
see https://opal.com/src/ical
for more on the history of
this project.
DESCRIPTION
Ical provides an X interface for maintaining a calendar. A
calendar is basically just a set of items. An item is either an
appointment, or a notice. An appointment starts at a particular time
of the day, and finishes at a particular time of the day. A notice
does not have any starting or ending time. Notices are useful for
marking certain days as special. For example, a calendar may contain
a notice for April 15th indicating that taxes are due. When the
documentation below refers to an item, it applies both to notices
and appointments. The main features of Ical are:
-
- *
-
Items can be created and edited easily.
- *
-
Items can be cut, copied and pasted.
- *
-
Items can be made to repeat in various ways.
- *
-
Ical will generate alarms for upcoming appointments.
- *
-
Users can view many calendars at a time.
- *
-
Calendars can be shared by many users.
- *
-
Related items can be grouped in their own calendar.
- *
-
The calendar is stored in .calendar as plain utf-8
text. You can use git to archive your calendar changes.
-
OPTIONS
GENERAL OPTIONS
- [-nodisplay]
-
Ignore the DISPLAY environment variable and run in headless
mode without a display.
- -calendar filename
-
The calendar is read from the specified filename.
See the
description of calendar files for more information.
- [-date date]
-
Set the starting date for item listings or window displays
to the specified date. If this option is not specified,
then the starting date is today. For example:
-
- *
-
ical -date 1/aug/1997
- *
-
ical -date 10/8/2026
-
- [-show +days]
-
Print a text listing of items in the date range
[starting date...(starting date + days
- 1)]
to stdout.
- [-list]
-
Same as -show
+2
- [-print 1|2|4|8|10|month]
-
Generate a single page calendar in PDF format to stdout for
items in the next few days, or for the current month. The
starting date may be changed with the -date
option.
- [-exportics]
-
Export the entire calendar in .ics format to stdout.
- [-importics]
-
Import iCalendar entries from stdin.
- [-addone]
-
Read all of stdin as a single text block, extracts date
and time info from it, and adds it to the calendar. If
the text contains a time, it is added as an appointment.
Otherwise, it is added as a notice.
- [-addmultiple]
-
Same as -addone
except it processes each line of
stdin as a separate calendar item.
X OPTIONS
The following options are valid only if you are logged in on an X display.
- [-iconic]
-
Start up with the main window iconified.
- [-iconposition x,y]
-
Icon is placed at the specified position. This is an ancient
option that seems to have no effect in modern Linux environments.
- [-popup]
-
Popup a window containing the same contents as -show
+2
and exit as soon as the window is dismissed.
- [-geometry +x+y]
-
Use +x+y
as the geometry for the main window.
- [-fg color]
-
Use color
as the foreground for all windows.
- [-bg color]
-
Use color
as the background for all windows.
- [-display display]
-
Use the specified X display.
WINDOWS
The main calendar window displays the appointments and notices for
a particular date.
DATE SELECTOR
The top left portion of the window contains a date selector.
You can click on the various arrows to change the month or the
year. The day of the month can be selected by clicking on the
appropriate day in the month display. The date selector
contains various other buttons for convenient date selection.
NOTICE WINDOW
The bottom left portion of the window contains the notices for
the selected date. A scroll bar is provided if all of the
notices for the selected date do not fit into the notice
window.
APPOINTMENT WINDOW
The right portion of the window contains the appointments for
the selected day. You can scroll this region by using the
scroll bar, or by dragging with the middle mouse button in the
background.
MENUBAR
A menubar runs along the top of the calendar window. The File
menu allows you to create and destroy application windows.
STATUS LINE
The bottom portion of the window contains a status line. This
status line indicates the calendar from which the selected
item comes and whether or not the selected item repeats.
CALENDAR FILES
A calendar is stored in a calendar file. The default calendar file
is named .calendar and is kept in the user's home directory. If
the CALENDAR environment variable is set, its value is used as the
name of the calendar file. The CALENDAR environment variable and
the default can both be overridden by specifying a file name on
the command line as follows -- ical -calendar file-name. Ical
periodically saves any modifications made to a calendar to the
corresponding calendar file. It also periodically incorporates
changes made to a shared calendar file by other instances of Ical.
You can explicitly trigger these periodic saves and reads by using
the File menu.
INCLUDING AND SHARING CALENDARS
You can include other calendars into your private
calendar. This facility is mainly useful for allowing a group
of people to share a common set of items. For example, members
of a particular group might have a calendar that contains the
birthdays for each member of the group. This calendar can be
included in each group member's private calendar. Use the
File menu to include and exclude shared calendars. Use the
Move Item To ... entry from the Item menu to move items
between calendars. Use the From Calendar ... entry in the
List menu to list all items a particular calendar.
ITEMS
NOTICES
You can enter notices by clicking in the background in the
bottom-left portion of the main calendar window. This click
will create a new notice for the selected date. You can enter
text into the notice by typing into it while it is selected
(selected notices are highlighted by being displayed in
different colors). A notice can be selected for editing by
clicking with left button.
APPOINTMENTS
You can enter appointments by left-clicking in the background
in the right portion of the main calendar window. This click
will create a new appointment for the selected date. The start
time for this appointment is determined by the click
location. You can move the appointment by dragging it with the
middle mouse button held down.
Appointments have an associated time zone that defaults to the
current system time zone, or "<Local>" if that cannot be
determined. That default can be overridden in user.tcl as
shown in the Customization
section.
The appointment display always shows the local
time for the appointment. Suppose your local time is Denver
and you add a 12:00 appointment in the Los Angeles time zone.
The window will show this appointment at 13:00. Now if you fly to
Los Angeles, and your workstation picks up the time zone
change, the appointment will show at 12:00.
That automatic adjustment requires that you either adjust your
workstation time zone manually, or that you enable both
automatic device location and automatic time zone in the
desktop settings.
Appointments created with the "<Local>" time zone will not be
adjusted in this manner. If you add a 12:00 appointment in the
"<Local>" time zone, then it will always show at 12:00
wherever you fly.
Appointment text can be edited by typing into the appointment
window while it is selected. If the appointment text you are
typing in does not fit into the appointment area, then it will
overflow out of the appointment area, but will be editable
normally. If you do not like overflowing text, you should
turn off the Allow Text Overflow option in the Options menu .
With this option turned off, if the current text completely
fills the area allocated to the appointment, then any attempts
to add to the appointment text will be ignored until the
appointment is enlarged. Likewise, dragging the window resize
dots will refuse to shrink an appointment window if the
appointment text completely fills the appointment window.
ALARMS
Ical generates alarms for appointments. By default, the first
alarm is generated fifteen minutes before the appointment is
supposed to start and successive alarms are generated every
five minutes until the appointment actually starts. You can
change this default behavior by selecting the Default Alarms
entry from the Options menu. You can also change the timings
of these alarms on an appointment-by-appointment basis by
double-clicking on the appointment, or by selecting the
appointment and then chosing the Properties entry in the Item
menu.
REPEATING ITEMS
Items can be made to repeat in various ways. Item repetition
can be controlled by using the entries in the Repeat menu.
These entries make the item repeat in certain frequently used
ways. For example, the Monthly entry makes the selected item
repeat once per month and the Weekly entry makes the selected
item repeat once per week. The Edit Monthly... and Edit
Weekly... entries can be used to make items that repeat in
more complex ways: for example, an item that occurs on the
last Friday of each month, or an item that occurs on Monday,
Wednesday, and Friday every week.
In addition to making an item repeat in one of the pre-defined
ways, you can also restrict an item's starting and finishing
date by selecting the Set Range... entry from the Repeat menu.
Normally, a modification to a repeating item applies to all
occurrences of that item. A single occurrence of a repeating
item can be modified by selecting the occurrence and then
choosing the Make Unique entry from the Repeat menu. The
selected occurrence can now be modified independently of the
repeating item.
TODO ITEMS
Items can be marked as todo items by selecting the Todo entry
in the Item menu. A todo item is automatically moved forward
to today's date every day until the item is deleted or marked
as done. An item can be marked as done by clicking in the
little check-box right next to the displayed item. Checking
the done box switches the highlighting to never. Unchecking
the done box switches the highlighting to always.
HIGHLIGHTING
By default, if any item occurs on a date, then the date is
highlighted in the date selector located in the top-left
corner of the calendar window. You can use the Highlight
entries in the Item menu to control this highlighting behavior
on an item-by-item basis.
KEY BINDINGS
This section is currently incomplete.
EDITING
Dragging with the left mouse button in a selected appointment or
notice sets the X selection. The Edit menu provides commands for
dealing with the X selection.
Ical also has a clipboard that can store a single item. The Copy
entry in the Edit menu copies the selected item into the
clipboard. The Cut entry does the same, but it also deletes the
item from the calendar. If the selected item repeats, then the Cut
command allows the user to delete all occurrences of the item, or
just the selected occurrence. However, if the selected item does
not belong to you, then Cut just hides the item from you. Other
people will still see the item. An item in the clipboard can be
inserted into the current day by selecting Paste entry. The newly
pasted item loses all repetition information, and occurs just on
the day in which it was pasted.
LISTING ITEMS
You can generate listings of imminent items by selecting one of
the listing options in the List menu. You can also use the
command line options -list, -show, or -popup to generate item
listings. The command line options are most useful in .login
files.
By default an item is included in a listing for a particular date
if it occurs either on that date, or on the very next day. You
can control this feature of item listings with the List item entry
in the Item menu.
PRINTING
Calendar contents can be printed by selecting the Print option
from the File menu.
CUSTOMIZATION
Some of Ical's behavior can be customized via the Options menu.
Other aspects of Ical's behavior can be controlled via Tcl code or
X Resources. Customization via X Resources is a last resort.
TCL CODE
Users can customize Ical by writing tcl code and storing
it in the file /.tk/ical/user.tcl. The code stored in this
file is executed when Ical starts up. This is mostly used
to include pre-written source files from the contrib/ directory.
For example:
######################################
if $have_tk {
global ical
global have_tk
# override the dpi scaling, default is 1.0
set ical(dpi_scaling) 1.2
pref_update_scaling
# override the default timezone, default is your current
# timezone as seen by /etc/localtime
#set ical(timezone) "<Local>"
#set ical(timezone) "America/Denver"
set d $ical(library)/contrib
source -encoding utf-8 $d/timeofday.tcl
source -encoding utf-8 $d/weeknumber.tcl
}
######################################
See the "Tcl Interface to Ical" document available via the
Ical help menu.
Ical can run even when X is not available, therefore
customization files should be written so that they will
function even when Tk commands are not available.
X RESOURCES BEHAVIOR
The following X resources can be used to control various
aspects of Ical's behavior.
- Ical.pollSeconds
-
Shared calendars are checked for changes made by other
people once every pollSeconds seconds. The default value
is 120.
- Ical.saveSeconds
-
Calendar files are checked for modifications every
saveSeconds seconds. The default value is 30.
DIMENSIONS
The following X resources can be used to control various
dimensions of Ical's appearance.
- Ical.itemSelectWidth
-
The border width of selected items is set to the value of
this option to display the selected status of the item to
to the user. On color displays, the default value of this
option is 0 because on color displays selection is
indicated by changing the color of the selected item. On
monochrome displays, the default value of itemSelectWidth
is 4.
- Ical.Dayview.geometry
-
X geometry specification for main calendar window.
Usually, you will just specify the window position here.
The size of the window is easier to control via the
Options menu.
- Ical.Reminder.geometry
-
X geometry specification for alarms. Usually, you will
just specify the window position here. The window size
will be calculated automatically.
- Ical.Listing.geometry
-
X geometry specification for item listings. Usually, you
will just specify the window position here. The window
size will be calculated automatically.
COLORS
The following X resources can be used to customize Ical's use
of colors. If Ical windows show up with illegible colors (not
enough distinction between background and foreground), it may
be because your X resources contain definitions for
*foreground or *background that conflict with Ical colors. In
general, it is a bad idea to define *foreground and
*background in your resources because it will break a number
of programs. You will be better off defining resources on an
application by application basis.
- Ical*Foreground/Ical*Background
-
Foreground and background colors for most of Ical's
windows.
- Ical*disabledForeground
-
Foreground color assigned to disabled buttons and menu
entries.
- Ical.itemFg/Ical.itemBg
-
Foreground and background colors for unselected items.
The default foreground is black and the default background
is gray.
- Ical.itemSelectFg/Ical.itemSelectBg
-
Foreground and background colors for selected items. The
default foreground is black and the default background is
SlateBlue1.
- Ical.itemOverflowColor/Ical.itemOverflowStipple
-
Background color and stippling used for appointment text
that overflows out of the appointment area. On color
displays, the default overflow background is SlateBlue3
and no stippling is done (specified by an empty stipple
option). On monochrome displays, the default overflow
background is black, and the default overflow stippling is
gray50.
- Ical.apptLineColor
-
The color for the background lines and times displayed in
the appointment window.
- Ical.weekdayColor
-
The color used to display days of the week. The default
is black.
- Ical.weekendColor
-
The color used to display weekends. The default is red.
- Ical.interestColor
-
The color used to highlight interesting dates. The
default is blue.
- Ical.weekendInterestColor
-
The color used to highlight interesting dates on weekends
and holidays. The default is purple.
MENUS
FILE MENU
-
-
Save
Save any modifications to the appropriate calendar files.
Ical will check for modifications every 30 seconds and will
save the calendar files if there have been any changes.
- Re-Read
-
Read any changes made to a shared calendar by another user
or another instance of Ical. Ical will automatically
invoke this function periodically. It is provided as a
menu entry for people who do not want to wait for Ical's
periodic checks.
- Print
-
Print calendar contents. The user has the option of
saving the print-out to a file, pre viewing the print-out
by specifying a PDF displaying program (default is
evince), or sending the print-out directly to a PDF
printer by specifying a printing command (default is
lpr). In the case of preview and print, the specified
command will have the name of a temp file appended to the
argument list, and that file will be deleted after the
preview program or printing program finishes.
- Include Calendar
-
Select a calendar to include into your private calendar.
Included calendars are normally used to share calendars
between different users.
- New Window
-
Open a new calendar window. This new window can be used to
view the items for a different date than the original
window.
- Close Window
-
Close the selected window.
- Exit
-
Save any changes and kill Ical.
EDIT MENU
- Cut Item
-
Delete the currently selected item and store it in the
clipboard.
- Copy Item
-
Copy selected item to the clipboard.
- Paste Item
-
Paste item from clipboard into calendar.
- Delete Text
-
Delete the currently selected text from the selected item.
- Insert Text
-
Insert the current X selection into the selected item.
- Import Text
-
Import the current X selection as a new item into the
calendar. The date and time of this new item are parsed
from the X selection if possible.
ITEM MENU
- Todo
-
Toggle the item between being a todo item and not being a
todo item.
- Always Highlight
-
The item always causes the corresponding date to be
highlighted. This is the default behavior.
- Never Highlight
-
The item never causes the corresponding date to be
highlighted.
- Highlight Future
-
The item causes the corresponding date to be highlighted
if and only if the date is not in the past.
- Holiday
-
The item causes the corresponding date to be highlighted
as a holiday.
- Link to Web Document
-
Adds a link to a URI to the item. The item will display with
a small arrow, and a left-click on that arrow will open
the configured browser with that URI.
- Link to Local File
-
Adds a link to a local file to the item. The item will display
with a small arrow, and a left-click on that arrow will open
a text window to display that file.
- Remove Link
-
Removes the link from the item.
- Change Alarms
-
Pops up a dialog box that allows you to edit the
alarm times for an appointment.
Note that this will only change the alarm times for the
selected appointment. You can make this change for all
appointments that do not have special alarm times by using
the Default Alarms entry in the Options menu.
- Early Warning
-
By default an item is included in a listing for a
particular date if it occurs either on that date, or on
the very next day. Sometimes, you may want to include an
item in listings for earlier dates. For example, if you
have an item reminding you of a birthday on March 17th,
you might want this item to be included in all listings
from March 7th to March 17th so that you will have enough
time to go out and buy a present. You can achieve this
effect by selecting this menu entry and then entering "10
days" into the resulting dialog.
Note that this will only change the listing behavior for
the selected item. You can make this change for all items
you create from now on by using the Default Listings entry
in the Options menu.
- Properties ...
-
Edit various item properties, including the calendar to
which the item belongs, highlighting information, early
warning options, alarm times, and starting and ending
times for appointments. You can also double-click on an
item to pop up the property editing dialog.
- Search Forward
-
Search forward looking for an item that contains a user
specified string.
- Search Backward
-
Search backward looking for an item that contains a user
specified string.
REPEAT MENU
- Don't Repeat
-
Make the selected item a non-repeating item.
- Daily
-
Make the item repeat every day.
- Weekly
-
Make the item repeat once every week.
- Monthly
-
Make the item repeat once every month.
- Annually
-
Make the item repeat once every year.
- Edit Weekly
-
Make the item repeat on a weekly basis in a complicated
fashion. For example, on Tuesday and Thursday every week.
- Edit Monthly
-
Make the item repeat on a monthly basis in a complicated
fashion. For example, on the third Sunday in June, or the
last working day of each month.
- Set Range...
-
Restrict the range for a repeating item.
- Last Occurrence
-
Make the current occurrence the last occurrence of the
selected item. I.e., remove any occurrences after the
current date.
- Make Unique
-
If you want to modify just a single occurrence of a
repeating item, select the item occurrence you want to
modify and then activate this menu entry. Now all
modifications to this item occurrence will only affect
this particular occurrence.
LIST MENU
- One Day
-
List the item occurrences for one day.
- Seven Days
-
List the item occurrences for the next seven days.
- Ten Days
-
List the item occurrences for the next ten days.
- Thirty Days
-
List the item occurrences for the next thirty days.
- Week
-
List the item occurrences for this week.
- Month
-
List the item occurrences for this month.
- Year
-
List the item occurrences for this year.
- From Calendar ...
-
List all item occurrences from a selected calendar.
OPTION MENU
- Appointment Range
-
Controls the subset of a day displayed by default in the
appointment listing. The default settings display 8:00am
to 6:00pm.
- Notice Window Height
-
Controls the height of the notice window. The main window
height is recomputed based on the notice window height.
- Item Width
-
Controls the width of displayed appointments and notices.
- Web Browser
-
Sets the path to the web browser used to open links from
appointments and notices.
- Allow Text Overflow
-
If this option is selected, then you can type in any
amount of text into an appointment. The part of the text
that does not fit into the appointment will be allowed to
overflow out of the appointment. If you do not like text
overflowing out of an appointment, then you should turn
off this option.
- Display Am/Pm
-
If this option is selected, time will be printed in twelve
hour mode with am or pm indicators. Otherwise, time will
be printed in twenty-four hour mode.
- Start Week on Monday
-
If this option is selected, month displays will start each
week off on a Monday. Otherwise, each week will start on
a Sunday.
- Default Alarms
-
Use this menu entry to change the time intervals at which
alarms go off. The factory settings cause alarms to be
triggered fifteen minutes before each appointment, and
then once every five minutes until the appointment
actually starts. This menu entry changes the default
alarm behavior for all appointments. You can override
this default behavior on an appointment-by-appointment
basis by selecting an appointment and then selecting the
Change Alarms entry in the item menu.
- Default Listings
-
This menu can be used to select the default listing
behavior for newly created items. If the On Occurrence
entry is selected, then a newly created item will only be
shown in the listing of the day on which the item occurs.
If the A Day Early entry is selected, then a new item will
be shown in listings starting a day before the item
occurrence. Similarly, the other menu entries can be
selected to make new items show up in listings a number of
days before their actual occurrence. This menu selects
the default behavior for new items. Individual item
behavior can be controlled by similar entries in the Item
menu.
HELP MENU
- About Ical
-
Displays Ical version number and author information.
- User Guide
-
Displays this document.
- Tcl Interface to Ical
-
Displays instructions for using Tcl to customize Ical.
AUTHOR
Originally written by Sanjay Ghemawat in 1993. Updated by Carl
Byington in 2026.
COPYRIGHT
Copyright (C) 1993 by Sanjay Ghemawat. Permission is granted to make
and distribute verbatim copies of this manual provided the copyright
notice and this permission notice are preserved on all copies.
Index
- NAME
-
- SYNOPSIS
-
- HISTORY
-
- DESCRIPTION
-
- OPTIONS
-
- GENERAL OPTIONS
-
- X OPTIONS
-
- WINDOWS
-
- DATE SELECTOR
-
- NOTICE WINDOW
-
- APPOINTMENT WINDOW
-
- MENUBAR
-
- STATUS LINE
-
- CALENDAR FILES
-
- INCLUDING AND SHARING CALENDARS
-
- ITEMS
-
- NOTICES
-
- APPOINTMENTS
-
- ALARMS
-
- REPEATING ITEMS
-
- TODO ITEMS
-
- HIGHLIGHTING
-
- KEY BINDINGS
-
- EDITING
-
- LISTING ITEMS
-
- PRINTING
-
- CUSTOMIZATION
-
- TCL CODE
-
- X RESOURCES BEHAVIOR
-
- DIMENSIONS
-
- COLORS
-
- MENUS
-
- FILE MENU
-
- EDIT MENU
-
- ITEM MENU
-
- REPEAT MENU
-
- LIST MENU
-
- OPTION MENU
-
- HELP MENU
-
- AUTHOR
-
- COPYRIGHT
-
This document was created by
man2html,
using the manual pages.
Time: 23:07:20 GMT, November 03, 2026