Provided by: xcal_4.1-19build1_amd64 bug

NAME

       xcal -  calendar with alarms and a notebook for X11

SYNTAX

       xcal  [  -debug ][ -alarmscan ][ -format fmt ][ -editformat fmt ][ -stripformat fmt ][ -clocktick tick ][
       -u username ]

DESCRIPTION

       Xcal is an interactive calendar program.  The user interface has  several  levels.   When  started,  xcal
       displays  today's date in a small command box that is intended to sit on the screen as a companion to the
       xclock program.  The format of the command box may be altered using the resource manager, so you are  not
       stuck  with  my  preferred  layout.   You can set the time in the window too, if you wish (see the format
       resource).  Access to further levels in xcal is made by clicking a mouse button in the command box.   The
       command box is split into several areas and clicking on one of these will popup a window supporting a new
       function.

       Clicking with mouse button one on the question mark in the command box pops up a help window.  Xcal comes
       with many help buttons.  When you are convinced they are no longer any use to you, they can all be turned
       off using an X resource.

       A  small  button containing a `mouse' bitmap can be pressed with mouse button one to inspect appointments
       for today.  This generates a panel showing information from the calendar file for today  and  information
       from  a set of seven daily files holding regular commitments.  The panel also contains a text scratchpad,
       `the memo panel'.  This allows the editing of a memo file.

       The calendar functions are accessed by clicking a mouse  buttons  inside  date  portion  of  the  command
       window.

       1)     Mouse  button  one  pops  up  a calendar `strip' for the current month.  The strip has some header
              lines and then one line per day of the month.  The `line per day' display contains the day in  the
              month and the day of the week.  Today may be highlighted specially - the notion of Today alters at
              midnight.  The strip has a help button which displays a description of the panel.  Command buttons
              in the header line allows the user to bring up a strip for the previous or the next month.

       2)     Pressing  mouse  button two in the date area will bring up a dialogue box which allows the user to
              select any month of any year (yes, September 1752 is supported).  The month may be input as  month
              name or abbreviation, even though the prompt indicates a more restrictive format.

       3)     Pressing  mouse  button 3 in the date label causes the whole program to exit, a dialog box is used
              to ask the user for confirmation.

       Like xcalendar, daily events are stored in set of files, one for each day.  If the file exists  when  the
       strip  is started, its data is displayed as the label in the command button on the right-hand side of the
       month strip.  The file is created and edited by entering a simple text editor (the standard text  widget)
       which  is started by pressing the right hand side of the appropriate day line in the strip.  You can also
       add data to the file by selecting a string on the screen and clicking  with  the  middle  button  on  the
       right-hand  side  of  the  month strip.  The string is appended to the file for the day.  This short-hand
       allows one entry to be loaded into several day files.

       The width of the month strip is computed from the width of the header.  Users who wish to display a wider
       strip to show more of the stored information should widen the strip using the minStripWidth resource (see
       below).

       The colours and fonts used in the strip is controllable by resources.  The  widget  that  comprises  each
       line  in  the strip is tagged with the short form name of the day, so it's easy to vary the strip display
       showing weekends differently from the weekdays.

       Data files are stored in a directory usually called Calendar under the user's home directory.  Each  file
       is  stored  in  a  subdirectory containing all the data for a particular year.  This is incompatible with
       xcalendar, the user may specify that the compatibility should be maintained.

       Alarms are supported by xcal.  When a line in the data file starts with a digit, it is assumed  to  be  a
       time  specification and a candidate for an alarm.  The line contains a string giving the alarm time and a
       text string displayed in a dialogue alarm box that pops up when the alarm fires.  You  can  also  arrange
       for  countdown alarms to fire, so that you can be told that something is about to happen.  These dialogue
       boxes will automatically go away after two minutes, unless the `Stick' button is pressed glueing the  box
       onto the screen.  The box can be made to go away at any time by hitting the `Unpin' button.

       When  specifying  alarms,  Xcal  tries  to  be  liberal  about  the  times  that  it  understands.   Time
       specifications are: h, hh, hhmm, hmm, hh:mm, h:mm, hh.mm, h.mm; all of these may be  optionally  followed
       by  an  am/pm  indicator  -  one  of:  A,  a, AM, am, Am, aM, P, p, PM, pm, Pm, pM.  Times must always be
       followed by at least one space or tab.  Some legal examples are:
            12:00 Lunch - Meet Joe at Burger King
            14.30 Meeting in the cafeteria
            2:30p Ring Mark
            7pm Pizza

       You can make a time like 2:30 mean 14:30 by setting the resource AlarmWarp to be true.  If  this  is  the
       case,  an alarm hour will be promoted to a PM time if it is found to be between the range of zero and the
       value of the resource minAlarmWarp.

       Xcal also supports timed command execution from the data file.  To trigger a command, the  data  part  of
       the line starts with an exclamation mark, eg:
            4.30pm !xmessage -message 'ring home'

       The  exclamation  mark  can  also  be  replaced  by the string `%cron'.  It is also possible to make xcal
       execute a command whenever an alarm is triggered, see the Cmd resource below.

       The memo function of Xcal is accessed by pressing the non-date portion of the command window.  This shows
       a bitmap diagram of three mouse buttons.  Clicking the left mouse button in this area brings up a complex
       panel, clicking on the button again will pop it back down again.  The top half of the panel displays  the
       information  held in the diary for today; pressing the Edit button here will start an edit box for today.
       The next section of the panel displays the information held  in  the  weekly  files.   Again  you  cannot
       directly change the text in this area, you must press on the Edit button to bring up a strip enabling you
       to  change  things.   The bottom portion of the panel is an edit window displaying the contents of a file
       usually called `memo' in the Calendar directory.  The idea of this panel is to allow you to  access  your
       current information in one button click.

       It  is  obviously  possible to change Xcal's data files without using the inbuilt text widget editor.  In
       general, Xcal will not notice this.  Editing random day files with a standard text editor will not change
       the contents of any displayed strips until the strips are popped down and up again.  Xcal knows what days
       have been altered when the text widget is used to edit  the  day  files,  and  will  reflect  any  change
       immediately into the displayed strips.

       You can make Xcal take notice of today's date file and the current memo file.  The `Update' resource sets
       a  polling  time  in  seconds.  When the clock fires and today's file has been altered, the alarm list is
       rebuilt from the current date file and the memo panel is updated.  The bottom part of the memo  panel  is
       also updated if the `memo' file has been altered on the clock tick.

OPTIONS

       Version  4  of  Xcal  permits one user to view another's calendar by giving the -u option followed by the
       user's login name.  The user's calendar storage area is assumed to be called  `Calendar'  in  their  home
       directory.  The facilities are somewhat rudimentary.  First, the main date box will have the user's login
       name  appended  to  the date format string.  When a month strip is generated, you will be given read-only
       access to their calendar files, assuming that the file permissions allow  you  to  read  them.   This  is
       intended to be one step better than using cat on their calendar files.

       The  -debug  switch  causes  contents  of the initial date window to be incremented very frequently, this
       allows some testing of the program.

       The -alarmscan switch prints debugging information about the alarm system on standard output.

       The argument following the -format is a date format used to display dates in the top  level  window  (see
       below,  the  Format  resource).  Changing this to include a time format will make xcal display a clock in
       your top level window.

       The argument following the -stripfmt argument is a date format used to display month names and  years  in
       the monthly calendar strip.  (see the resource StripFmt).

       Similarly,  the  -editfmt  argument  is  the  format  for  dates  used in an edit window (see the Editfmt
       resource).

       The -clocktick argument is used to set the clock update time of the main date window, should  a  time  be
       displayed as well as the date.  See the Clocktick resource.

RESOURCES

       As  with all standard X applications, xcal may be customised through entries in the resource manager.  It
       is a serious  mistake  to  install  Xcal  without  putting  the  resource  initialisation  file  Xcal  in
       /usr/lib/X11/app-defaults.  Resource class names are listed below; resource instance names are identical,
       except the first letter is in lower case.  The following resource manager entries are defined:

       Debug              If  True  enables  accelerated  time.   Alarms  will not function correctly.  Default:
                          False.

       OtherUser          the name of the user whose calendar files will be inspected.  This is usually  set  by
                          the -u option.

       AlarmScan          If  True  enables  printing  of  alarm  related  debugging information to the standard
                          output.  Default: False.

       ReverseVideo       If true display the output in reverse video.  Default: False.

       Format             This is a format string used to create the contents of the top command button and  the
                          memo  box.  The format is aimed at the system routine: strftime.  I have chosen to use
                          the system routine because it makes  it  easier  for  non-english  language  sites  to
                          generate  their  own  formats.  However, this means that the names used for months and
                          days may not be compatible with the ones set in the resources below.   Any  characters
                          in  the format string are passed to the output unchanged unless they specify a format.
                          Format letters are preceded by a `%' character and can be found in  the  documentation
                          for strftime on your system.  The SunOS 4.1.3 routine supports:

                          %%      same as %
                          %a      day of week using abbreviated name
                          %A      day of week using full weekday names
                          %b      (%h) month, using locale's abbreviated names
                          %B      month, using locale's full names
                          %c      date and time as %x %X
                          %C      date and time, in local long-format date and
                                  time representation
                          %d      day of month (01-31)
                          %D      date as %m/%d/%y
                          %e      day of month (1-31; single digits are preceded  by a blank)
                          %H      hour (00-23)
                          %I      hour (00-12)
                          %j      day number of year (001-366)
                          %k      hour (0-23; single digits are preceded by a blank)
                          %l      hour (1-12; single digits are preceded by a blank)
                          %m      month number (01-12)
                          %M      minute (00-59)
                          %n      same as \n
                          %p      local equivalent of AM or PM
                          %r      time as %I:%M:%S %p
                          %R      time as %H:%M
                          %S      seconds (00-59)
                          %t      same as \t
                          %U      week number of year (01-52), Sunday is the first day of the week
                          %W      week number of year (01-52), Monday is the first day of the week
                          %x      date, using locale's date format
                          %X      time, using locale's time format
                          %y      year within century (00-99)
                          %Y      year, including century (fore example, 1988)
                          %Z      time zone abbreviation

                          The default is "%A %d %B %Y", printing the day, the date, the month and the full year.
                          I  prefer  to  use  "%A  %e %B %Y", but this does not seem to be portable to different
                          systems.  The format string is scanned to  determine  the  update  frequency  that  is
                          needed  to  maintain a correct date image.  The default needs updating every 24 hours,
                          if you insert an AM/PM format then the strip will be updated every 12  hours.   Adding
                          an  hour  specification  will  cause  an  update  every hour and specifying minutes or
                          seconds will cause appropriate behaviour.

       ClockTick          If you specify a second hand in the main date string and only want it updated every 30
                          seconds (say) then setting the ClockTick resource to 30 will force an update for  that
                          period.  Default: 0 (derived from the Format string).

       StripFmt           is  used  to  format  the  date  line at the top of each strip.  This uses an internal
                          version of the strftime routine that  only  supports  format  characters  relating  to
                          months,  years and days.  The supported format characters are: %A, %a, %B, %b, %h, %D,
                          %d, %e, %m, %n, %t, %x, %y and %%.  Long/short day and month names are taken from  the
                          resources.  Default: "%B %y".

       EditFmt            provides  the format string for any edit window.  This uses the same code as StripFmt.
                          Default: "%A %d %B %Y".  Again, I prefer to use "%A %e %B %Y".

       MarkToday          If True then highlight today.  Default True.

       TodayBackground    the background colour when marking, default Black.

       TodayForeground    the foreground colour when marking today, default White.

       FontToday          Today may be marked by using a special font, if this is desired the font is  given  by
                          this resource.  Default is to use the default font.

       Directory          The  name  of  the  directory under the home directory where the day files are stored.
                          Default: Calendar.

       XcalendarCompat    If true then subdirectories are not created in the Calendar directory.  This  flag  is
                          not  relevant  when files are being read, so users can use both programs with existing
                          data files.  Default: False.

       GiveHelp           If True than access to  the  help  information  is  given.   If  False,  help  buttons
                          disappear returning screen real-estate to the user.  You should resist setting this to
                          False in the default resources file.  Default: True.

       HelpFromFile       The  Xcal  program  will  usually  have  help  strings compiled into it.  These are in
                          English and it may be desirable to use help data in other languages.  If this resource
                          is true, it forces Xcal to look in a data file for the help strings.  Default: False.

       HelpFile           gives the name of the file used as a database  for  the  help  system,  accessed  when
                          HelpFromFile is True.  Default: /usr/lib/X11/XCal.help.

       InitialCalendar    If  True  then  the calendar for this month is automatically displayed on startup.  If
                          False, the calendar is not automatically displayed.  Default: False.

       InitialEdit        If True then an edit window for today is automatically displayed on startup if a  file
                          exists  for  today's  date.  If False, the edit window is not automatically displayed.
                          Default: False.

       InitialMemo        If True then the memo window is automatically displayed on startup.  Default: False.

       UseWmTitle         If True display the month and the year at the head of each strip.  This information is
                          duplicated if your window manager uses titles so it is nice to be able to turn it off.
                          Default: True.

       TextBufferSize     the maximum number of bytes which we are prepared to deal  with  in  an  edit  window.
                          Default: 2048 bytes.

       Alarms             whether or not to enable the alarm system.  Default: True.

       ExecAlarms         if  the  alarm  system  is  active, whether or not to invoke timed-execution commands.
                          Default: True.

       Update             When scanning for alarms in the current day file Xcal inspects it at  program  startup
                          time and also when it is edited using the normal built-in editing mechanism.  However,
                          if  some  external  program  changes t file xcal will not see the new contents and new
                          alarms will not be set.  Setting this resource to non-zero will force xcal to scan the
                          file every `update' seconds looking for alterations in  size  and  modification  date.
                          When  it  detects  that  the  file is altered, then it will rebuild the internal alarm
                          list.  Default: zero.

       Nbeeps             When an alarm window is popped up, it is accompanied by `Nbeeps' beeps.  Default: 3.

       Volume             Control the loudness of the beep. Default: 50.

       Cmd                This resource contains a command that is executed by  calling  the  shell  when  every
                          alarm  is  triggered.   The  command  is  passed  the contents of the data line as one
                          argument.

       Countdown          contains a comma separated string of numbers; for example: 10,5,0.  The string  allows
                          the user to customise warning alarms: so in the example, alarm boxes will be displayed
                          10 minutes before the stated time, 5 minutes before the stated time and exactly on the
                          stated  time.   Commands  lines in the data prefaced by a `!' will always be triggered
                          exactly at the stated time.  Default: 10,0.

       Autoquit           Each dialogue box containing an alarm message contains an `Unpin' button allowing  the
                          user  to  remove the message from the screen by using mouse button one.  Additionally,
                          the message box can remove itself from the  screen  after  a  specified  period,  this
                          resource gives that timeout in seconds.  If the resource is set to zero, then the user
                          is always forced to take explicit action to remove the box.  Default: 120, alarm boxes
                          disappear after 2 mins.

       Alarmleft          contains  a  printf  string  that is displayed in the label at the top of an alarm box
                          when countdown is in operation and there is some time before  the  stated  time.   The
                          time  before  the  stated time is supplied as the second argument to printf.  Default:
                          ``%d minutes before...''

       Alarmnow           contains the printf string that is displayed in the label at the top of an  alarm  box
                          when the stated time is reached.  Default: ``Time is now...''.

       UseMemo            enables  the  use  of  the memo feature.  This defaults to ``True'', but is present to
                          allow users to make XCal have as it used to.

       MemoLeft           affects the placing of the memo button in the top level date window.  The  default  is
                          `True' meaning that the button box is placed on the left of the date portion.  Setting
                          this to `False' will place the button box to the right of the date portions.

       MemoFile           gives the name of the memo file within the Calendar directory.  The default is `memo'.

       MaxDisplayLines    controls  the maximum number of text lines that can placed in the top half of the memo
                          panel.  The top hald will normally size to the number of lines in the diary  file  for
                          the  day,  unless the number of lines exceed the value in this resource.  This ensures
                          that today's events do not dominate the memo panel.  Default: 5 lines.

       MaxStripHeight     controls the maximum height of a strip.  A scroll bar will be added into the date part
                          of the scrip of the contents are larger than this number.  If unset, this defaults  to
                          the height of the screen.  Default: unset.

       MinStripWidth      The  width  of  month strips are set by the top line, which usually displays the month
                          and year.  The whole strip can be widened from this  default  value  by  setting  this
                          resource to be non-zero.  Default: zero (i.e. off).

       January            February and so on.  The names of the long form of the month name.

       Jan                Feb  and  so  on.  A short form of the month name - done this way because I doubt that
                          writing with %3s works in all languages.  Changing this resource means that  the  data
                          file will no longer be compatible with xcalendar .

       Sunday             Monday  and so on.  The long names of the days: Sunday, Monday etc.  These are used in
                          titles: the top level widget, the title of an edit window and the memo frame.

       Sun                Mon and so on.  The short names of the days - used in date strips.

       Private            Contains the string `Private calendar entry' and is used when  the  -u  option  is  in
                          force. It is displayed when a calendar file entry is unreadable by the caller.

       Alarmleft          Contains the string `%d minutes before'.

       Alarmnow           Contains the string `Time is now...'.

       Already            Contains  the string `Already editing %d %B %Y' I prefer to use `Already editing %e %B
                          %Y'.

       AlreadyWeekly      Contains the string `Already editing %A'.

PANEL MAP

       Xcal makes extensive use of the resource manager.  The user needs to know the names of the various panels
       and widgets which comprise the application.

       XCal                            Toplevel application
               form                    Form containing two buttons
                       today           Memo Command button
                       date            Strip Command button
                       mainHelp                Optional main help button

       Then we have various popups.  The Calendar Strip is:

       "Mon Year"                      the popup shell
               Month                   panel containing the strip
                       header          label containing month and year
                       action          form containing < quit > buttons
                               back    command containing < - last month
                               quit    command containing exit button
                               next    command containing > - next month
                       help            command generating help
               viewport                        viewport permitting scrolling of the
               data                    data widget
                       "DDD"           form containing day button (lots of these)
                                       these are named for the short days of the week
                               label   label containing dd DDD, day of the month
                                       and day of the week
                               info    command containing the file data

       Note that each day button is named for the day of the week, so that weekends can be highlighted specially
       using the standard resources.

       The weekly popup strip is:

       weekly                          the popup shell
               weekly                  panel containing the strip
                       header          label containing the title
                       action          form containing quit and help
                               quit    command containing exit button
                               help    command generating help
               viewport                viewport permitting scrolling of the
               data                    data widget
                       shortday        form containing days
                               label   label containing day of the week
                               info    command containing the file data

       The Edit Window is:

       edit                            the popup shell
               panel                   the panel inside the shell
                       title           the form containing the first line
                               quit    the exit button
                               save    the save button
                               help    the help button
                               date    the date string
                       text            the text widget for editing

       The Help Window is:

       help                            the popup shell
               helpPanel                       the panel inside the shell
                       helpForm                the form containing the title line
                               quit    the exit button
                       helpText                the text widget showing the information

       The Alarm Window is:

       alarm                           the popup shell
               alarmPanel              the panel inside the shell
                       alarmForm       form for top line
                               alarmQuit       the exit button
                               alarmHold       the hold button
                               alarmTitle      the title on the alarm window
                       alarmText       the text widget for displaying

       The Memo Window is:

       memo                            the popup shell
               memoPanel               the panel inside the shell
                       title           Top line form widget
                               quit    the exit button
                               edit    edit button - edit today's info
                               help    the help button
                               date    display today's date
                       display         text from today's date file
                       weeklyMemo      form for the Memo title line
                               weeklyEdit      Edit button
                               weeklyTitle     Title area
                       display         text from today's weekly file
                       memoMiddle      Middle line form widget
                               save    Save button
                               memoTitle       text title of middle line
                       memoText        Text widget showing memo file

       The Middle button date selection popup is:

       question                                the popup shell
               newdate                 the dialog widget
                       ok              the OK button
                       cancel          the cancel button

       The Right button exit selection popup is:

       question                                the popup shell
               exit                    the dialog widget
                       yes             the yes button
                       no              the no button

       An error is shown when a multiple attempts are made to edit the same day file.

       question                                the popup shell
               noedit                  the dialog widget
                       ok              the OK button

       A dialog box is popped up when an attempt is made to exit from an editing box without saving the file.

       check                           the dialog widget
               yes                     the yes button
               no                      the no button

FILES

       $HOME/Calendar/∗

       xc<dd><Mon><Year>  A data file is day, Month in three letter format and the year.

       xy<Year>           A year directory.

       xw<Day>            A data file for the weekly code, one per day.

       memo               The memo file.

       The standard resource database can be found in /usr/lib/X11/app-defaults/Xcal.   Assuming  that  this  is
       where the system admin installed it.

SEE ALSO

       xrdb(1), xcalev(1), xcalpr(1), xcal_cal(1)

BUGS

       There should be some way of removing several edit windows from the screen at once.

       Setting an alarm 1 minute in the future may not work.

       Countdown  does  not  work  in  the early hours of the morning, if you have a ten minute countdown and an
       alarm set at 0005 - then you will not get warning at 2325.

       Alarms set at 0000 probably won't work.

AUTHOR

       Copyright 1989,1990,1993 by Peter Collinson, Hillside Systems All rights reserved.

       This product includes software developed by the University of California, Berkeley and its contributors.

       At one time, much of the  xcalendar  program  was  plundered  to  create  xcal  ;  author  is:  Roman  J.
       Budzianowski, MIT Project Athena

       Thanks  to Ed Gould, Mt Xinu for the support for the calendar(1) program.  Thanks to Mark Majhor, Sequent
       for the basis of the alarm code.  Thanks to Rod Whitby, Austek Microsystems Pty. Ltd., Australia for  the
       ideas  of  the  Stick/Unpin  code  for alarms and for prompting me to add the memo code.  Thanks to Miles
       O'Neal from Pencom for revising the help code to be a little more `X', although this was later revised to
       use files.

       There are a number of other people who have sent in revisions, some I have used, some I have not.  Thanks
       anyway.

X Version 11 R5                                  September 1990                                          xcal(1)