Man Linux: Main Page and Category List

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.