XALARM(1)

NAME
xalarm - alarm clock for X

xmemo - memo for X

xfortune - fortune for X

xyow - yow for X

SYNOPSIS
xalarm [-toolkitoption ...] [-option ...] [message_text]

xmemo [-toolkitoption ...] [-option ...] message_text

xfortune [-toolkitoption ...] [-option ...]

xyow [-toolkitoption ...] [-option ...]

DESCRIPTION
xalarm is an interactive alarm clock for the X(1) Window System, and is analogous to a combination of leave(1) and calendar(1), but much more powerful. You can set the alarm either on the command line or by using the popup window. At the appropriate time and date, xalarm pops up a window to tell you that your time is up. The time the alarm is to trigger may be a specific time or a time for xalarm to wait before triggering. The date may be a specific date or a number of days in the future. You can tell xalarm to pop up warning windows at specified times before the alarm is to trigger, in order to warn you of the impending triggering of the alarm, and specify what message you want the alarm to display. You can also make xalarm read alarm times and dates, along with the message to display in the alarm, from alarm files. This can be done once by xalarm, or you can make it read from the file periodically, as an xalarm daemon. This enables you to forget your regular or important appointments, but xalarm will tell you by popping up at the appropriate time. In the event that the current X session is terminated before xalarm has finished, xalarm saves its alarm (if it is not already in the alarm file) so that it will automatically be restarted the next time xalarm is invoked. Any daemons connected to the display will go away. This means that you can set an alarm even if you are likely to terminate the X session underwhich you are currently running before it triggers, and the alarm will still trigger on whatever display you are then connected to at the time. The alarm window itself consists of a box of buttons and an area containing the alarm message. To give you an opportunity to carry on after the alarm has triggered and be late anyway, xalarm allows you to snooze the alarm. For the completely absent-minded, xalarm can also repeatedly re-trigger after a specified interval. To help with setting the alarm, each popup displays the current time, and the alarm itself also displays the time since the alarm last triggered.

USING XALARM TO SET AN ALARM
If no alarm time is specified, xalarm will pop up a window in order for an alarm time to be entered. This form is suitable for inclusion as a menu option under a window manager. The window is also popped up if an invalid alarm or warning time is given (see below for date and time syntax), or if you specify that confirmation should be sought before setting the alarm. The window gives you an opportunity to change the alarm setting, warning times, and the message xalarm will display when the alarm is triggered. The popup resizes itself to edit any message larger than the space given by default. The keymap used by the Athena Dialog widget is modelled on the text buffer keymap of the editor/environment emacs(1). Text may be entered when the pointer is anywhere within the popup. This popup window comprises of four separate windows, dealing with the alarm time, date, the warning time(s) and confirmation of all the settings (where you can also re-edit the alarm message). If the confirmation window is popped up, then you can re-edit the alarm time, date, or warning time(s) by switching through the windows using the edit buttons. Confirmation of a window's settings is made using the enter buttons, and the translations resource is set so that the return key will do the same thing. From the confirmation window you can also save the alarm settings in your own alarm file. You can make xalarm read alarms from this alarm file. If confirmation is not enabled, then the window for confirmation of all settings will not be popped up even if the other windows are. Also see the examples section.

USING XALARM TO READ AN ALARM FILE
You can put alarms in alarm files. xalarm looks in ~/.xalarms and all the files in the colon separated list of files in the environment variable XALARMFILEPATH. This form is suitable for inclusion in your X start up or initialisation script. It is suited to those who start up X on a regular (eg. daily) basis. Each line in the file should consist of an optional date on which the alarm is to trigger, optionally followed the by time and/or message. If the time and/or date are/is specified, then they must be separated from the date by a `-' on its own. If both the time and message are given, the time must come first. If no date is specified, it is assumed to be today. If no time is specified, the alarm will trigger at the current time on whatever date is given. The format for entries in an alarm file is therefore:

				date [- [time] [message]]
	or
				      - [time] [message]
To make it easier to put entries into the alarm file, xalarm can create them for you. You can save settings by pressing the save button in the confirmation window when you have set the alarm that you want. The settings are saved in the alarm file ~/.xalarms. You can use XALARMFILEPATH to include alarms shared among a number of people. If a path in the list is not absolute, then it is assumed to be relative to your home directory. Blank lines and any line with `#' or `!' as the first character are ignored. This can be used to structure and comment the alarm file. All other command line options and resources still apply. See below for the date and time formats. Also see the examples section.

USING A DAEMON TO READ AN ALARM FILE
An alternative to using the file option to search for alarms within a certain date, is to use an xalarm daemon. This form is suitable for inclusion in your X start up or initialisation script. It is suited to those whose X sessions typically span days. The daemon behaves in the same way as invoking xalarm with the file option, except that it periodically attempts to scan the alarm file(s). The interval between scanning may be a date in the form of +days, or one of the special symbols daily (equivalent to +1) or weekly. See below for more on date formats. Once started, the daemon immediately reads the alarm file(s), starting those alarms which are within the date given. It then sleeps until the number of days given ahead (on the following Sunday if given as weekly) at just passed midnight before trying again, ad infinitum. The daemon dies when the connection to the display is lost. Note that any xalarm processes that the daemon invokes will try to connect to the same display each time. If you move displays, xalarm cannot know. Also see the examples section.

TIMES
The definition is that for times given with 3 or 4 digits, the last 2 digits are always assumed to be minutes. Absolute times may be suffixed with `am' or `pm', and are assumed to be in hours if given with 1 or 2 digits. Times relative to the present time must be prefixed by `+', and are assumed to be in minutes if given with 1 or 2 digits. The special symbols now and noon may also be used, and are equivalent to +0 and 12:00, respectively. Hours and minutes may be separated with `:', `.' or `-'. To prevent ambiguities, hours and minutes must be in their usual ranges. If a time of an hour or more is wanted, you must state it in hours and minutes. It is not possible to specify days in the time. The format is a super-set (by far) of the format recognised by leave(1). Also see the examples section.

DATES
The date may be in the form of that given by date(1) (day of week, day of month, month, year), but can be in any order, need not be completely specified, and case is not significant. xalarm attempts to find the nearest real date which matches the date given. Alternatively, the date may be specified as the number of whole days into the future, by prefixing the number with `+'. The special symbols today, tomorrow and week may also be used, and these symbols may be combined. They are equivalent to +0, +1 and +7, respectively. Note that if there is more than one word in the date, then the date must be quoted to stop the shell treating them as separate arguments. When given as an argument to the -date option, week means ``seven days into the future''. However, when it is used as an argument to the -file or -daemon options, it means ``until the end of the current week'' (up to and including the coming Sunday), as in weekly. This is to make it easier to get xalarm to set all the alarms for the current week. Because the alarm is set in milliseconds, you cannot set an alarm for more than 49 days into the future (on the assumption that your machine has 32-bit unsigned longs). All symbols must consist of at least the first 3 characters of the name. Unlike calendar(1), tomorrow always means tomorrow. Also see the examples section.

WARNINGS
When given, warnings are popped up at specified times before the alarm. You can also specify that a number of words from the alarm message should be displayed with any warnings, in case you've forgotten what you set it for. If none are to be used, the warning will only indicate when the alarm is due. Also see the examples section.

RINGING
You can specify how xalarm announces itself, when either a warning or the alarm is popped up. Each of these events has a separate resource, which can be one of the special symbols bell, beep and quiet, or a shell script. The first two cause the terminal bell to be rung, and quiet does nothing. Otherwise it is assumed to be a shell script and is executed under a Bourne shell (sh(1)). You can also control the volume at which the terminal bell is rung. Note that if the script contains more than one word then the whole script must be quoted to stop the shell treating them as separate arguments. Also see the examples section.

SNOOZING AND PESTERING
You can snooze the alarm and make it pester you, after the alarm has triggered. Snoozing is done by selecting a time to snooze using the +mins buttons (they can be pressed as often as necessary) and pressing the snooze button. The snooze time may be zeroed by clicking on the snoozetime button (it has these two functions; display and zero). For the really lazy, the initial value of snoozetime can be set either by the relevant command line option or by its resource. Pestering is done either by the relevant command line option or by its resource. The alarm will then re-popup after the specified interval, a bit like snooze on autopilot. Note that if you snooze the alarm, pestering is temporarily disabled and you will have to rely on the snoozed alarm. Also see the examples section.

MORE ON XALARM
Even after you have set the alarm and confirmed it, you can reset the alarm as long as you know the xalarm process number. This can be found by using the command line option to list process numbers, or ps(1). xalarm makes maximum use of resources, as well as having a number of command line options, and these can be used to control most of the appearance of xalarm and (just about) all of its behaviour. Both command line options and useful resources are listed below. When xalarm is invoked it immediately attempts to fork off a child and exit itself, leaving the child to continue with the alarm. The child disappears when the X session on which display xalarm is using is terminated. You can exit from xalarm at any time by pressing the available quit button.

XMEMO, XFORTUNE & XYOW
In reality, xmemo is just a front end to xalarm (implemented as xalarm -time now -date today), while xfortune and xyow are front ends to xmemo (implemented as xmemo "`fortune`" etc.). Options supplied to them on the command line still override these defaults, however.

Note that xfortune and xyow require fortune(6) and yow(6) respectively - yow(6) comes with emacs(1). Also note that since they are front ends to xmemo, you can actually give extra message text to include on the command line. If you specify a time in the future, you can edit the message text when asked to confirm (if enabled).

OPTIONS
xalarm accepts all of the standard X Toolkit command line options along with the additional options listed below:

-help
    Print a (possibly) helpful usage message.

-version
    Print out the version number of xalarm in the form version.patchlevel.

-restart[only]
    This option makes xalarm attempt only to restart those alarms which had not finished when a previous X session was terminated.

-kill pid|all
    This option sends a signal to the process number pid, or to all xalarm processes, on the current host. If the process is an xalarm, owned by you, it will exit. Note these are what ps(1) thinks are xalarm processes, and only on the current host.

-d[a]emon +days|daily|weekly
    This option starts a new xalarm daemon on the current host connected to the current display. See the above description for more on alarm files, dates and daemons.

-f[ile] +days|date|today|tomorrow|weekly
    This option makes xalarm read alarms from the alarm file(s). See the above description for more on the alarm file and dates.

-date +days|date|today|tomorrow|week
    This option indicates the date on which the alarm is to be triggered. See the above description for more on dates.

-t[ime] +time|time|now|noon
    This option indicates at what time the alarm is to be triggered. See the above description for more on times.

-w[arn] time[,time...]
    Indicate the time(s) before the alarm is due to trigger when a warning should be given. They need not be in any particular order, and should be in the same format as relative times, but without the preceding `+'. Note that multiple times must be separated by commas but without spaces.

-c[onfirm]
    This option overrides the resource value and forces xalarm to ask for confirmation, unless the alarm is due to trigger immediately.

-warnwords [-ww] number_of_words
    Indicate the number of words from the alarm message you wish to display with the warning.

-l[ist]
    List the process numbers of any xalarm processes running on the current host. Note that this lists what ps(1) thinks are xalarm processes, and only on the current host.

-r[eset] pid|all
    This option sends a signal to the process number pid, or to all xalarm processes, on the current host. If the process is an xalarm, owned by you, it will pop up the confirmation window to allow you to re-edit the alarm settings. If the process is an xalarm daemon, it will have no effect. Note these are what ps(1) thinks are xalarm processes, and only on the current host.

-p[ester] time
    Indicate the time that xalarm should wait before re-triggering. It should be in the same format as relative times, but without the preceding `+'.

-s[nooze] time
    Indicate the time that snoozetime should initially have when the alarm triggers. It should be in the same format as relative times, but without the preceding `+'.

-alarmaudio [-aa] bell|beep|quiet|shell script
    The method by which xalarm should announce the fact that the alarm has been triggered. See above for a description on the different options.

-warningaudio [-wa] bell|beep|quiet|shell script
    As above, but for when any warning windows are popped up.

-q[uiet]
    This is equivalent to specifying -alarmaudio quiet -warningaudio quiet, or setting the relevant resources to quiet.

-v[olume] percentage
    The percentage of full volume at which the terminal bell should ring, if it is rung. This currently applies to the terminal bell only.

-nowarn [-nw]
    This option overrides the resource value and forces xalarm not to give any warnings. This is the same as setting the warning times resource to the empty string.

-noconfirm [-nc]
    This option overrides the resource value and forces xalarm not to ask for confirmation.

-nowarnwords [-nww]
    This option overrides the resource value and forces xalarm not to display any of the alarm text with any warnings. This is the same as setting the warningwords resource to zero.

-nopester [-np]
    This option overrides the resource value and forces xalarm not to re-trigger the alarm once it has popped up. This is the same as setting the pester resource to zero.

-noalarmaudio [-naa] -nowarningaudio [-nwa]
    These options make the relevant resource values quiet, and are equivalent to setting the audio method to quiet.

message_text
    The remaining unrecognised text is used as the message displayed with the triggering of the alarm. Note that each separate argument is assumed to be a single line, so words must be quoted if they are to appear on the same line. For example:

% xalarm "On one line" Secondline "Third line"
    It is a good idea always to use quotes, even when a line is only one word. Newlines within arguments are recognised, so that input from other tools can be used:

% xalarm -time now "`fortune -l`"
    Also note that xalarm deletes its copy of any arguments, including any message, given on the command line, so your boss can't see them by looking at the xalarm process.

EXAMPLES
An entry in an X initialisation file, invoked along with all the other utilities, before the window manager is executed, making xalarm check the alarm file for today's appointments, asking for confirmation before each of the alarms are set, and using up to three words from the alarm message in any warning message:

	xclock &
	xbiff &
	xalarm -file today -confirm -warnwords 3
	exec twm
If you do not want to know about the alarms that remain from the previous X session, you could first restart them silently. Here they are restarted with warnings set at 15 and 30 minutes prior to each alarm's triggering. To check the week's appointments, including some shared alarm files, warning 1 hour, and 30 and 15 minutes before each alarm (if you set the variable in your X initialisation script, rather than your login script, you may need to export it):

	XALARMFILEPATH=\
		/usr/local/lib/seminars.xlm:/usr/local/lib/meetings.xlm
	export XALARMFILEPATH
	xalarm -restartonly -noconfirm -warn 15,30
	xalarm -file weekly -confirm -warn 1:00,30,15
Or to start an xalarm daemon, which is to scan the alarm file on a daily basis. Each alarm should not ask for confirmation, but should give warnings 30 and 15 minutes before triggering, and pester every 5 minutes thereafter:

	xalarm -daemon daily -noconfirm -warn 15,30 -pester 5
The alarm file might contain, for example, the lines:
	# This is just a comment.
	! So is this.  Format is: date [- [time] [message]]
	!                     or:       - [time] [message]
	Wednesday - 12:30pm Football !!!
	Sun 29 september - 9pm Drag yourself home.
	Oct 4 - Contrib sometime today...
So that every Wednesday I have an alarm set for 12:30pm; on Sunday September 29 there is an alarm to be set for 9pm; on October 4 the alarm is to trigger straight away.

A twm(1) window manger entry which forces xalarm to ask for confirmation, and have the triggered alarm re-trigger every 5 minutes:

	Menu "Utilities" {
		...
		"alarm":	f.exec "xalarm -confirm -pester 5 &"
		...
	}

The following examples show how to set the alarm from the command line. It is often more convenient to invoke xalarm without specifying the time and, where necessary, the date and/or message as arguments (using a window manager, say, as above), using the popup window to enter these options. If this was the method of entry, the option arguments would be entered in the relevant Dialog box instead, just as they appear below (except that there is no need to quote multi-word arguments). To only restart those xalarm processes that were set before a previous X session was terminated, not including those in the alarm file:

% xalarm -restartonly

To set an alarm for tomorrow at noon, so as to avoid missing yet another meeting:

% xalarm -date tomorrow -time noon "MEETING!!!"

To set an alarm on Tuesday week (that is one week on from the next Tuesday) at 3:30 in the afternoon:

% xalarm -date "Tues week" -time 3-30pm

To set an alarm for March 10th (my very own personal public holiday), first thing in the morning, just in case I have forgotten:

% xalarm -date "10 march" -time 9am "Birthday boy!"

To set an alarm for 5 o'clock in the evening without confirmation, with the snooze time initially 10 minutes, but with the default alarm message:

% xalarm -time 5pm -snooze 10 -noconfirm

To set an alarm for 2 hours in advance, warning 1 minute and 5 minutes before it, with a message other than the default:

% xalarm -time +2.00 -warn 5,1 "Get off your bottom"

To set a completely silent alarm for 4.30 (not specifying am/pm, so it is whichever is first), with the default warnings and a message other than the default:

% xalarm -quiet -time 4:30 "Time to sneak off home!"

To reset a running xalarm we first find out its process number, and then we can reset it:
	% xalarm -list
	xalarms: 12345 12321
	% xalarm -reset 12345
To put a 2 line message on the display foo immediately (this will only work if the display foo can be opened):

% xmemo -display foo:0.0 "Bob!" "The bar for lunch?"

To display a fortune (a random adage from hell) at a specific geometry in 5 minutes:

% xfortune -geometry +10+300 -time +5

To display a Zippy quote (yow!!!), characteristically harassing you every minute and making some noise each time it triggers by executing a shell script:

% xyow -pester 1 -alarmaudio "play -v30 yow.au"

In this example, -v30 is the option to make play play the audio data in the file yow.au at maximum volume.

WIDGET HIERARCHY

xalarm uses the Athena Widget set, and the widget hierarchy is as follows:

	XAlarm (applicationShell)
		Alarm! (transientShell)
			alarm (form)
				buttons (form)
					quit (command)
					snooze (command)
					snooze1 (command)
					snooze5 (command)
					snooze15 (command)
					snoozetime (command)
				message (label)
		When? (transientShell)
			when (form)
				time (dialog)
					label (label)
					value (asciiText)
					ok (command)
					editdate (command)
					editwarnings (command)
					quit (command)
				date (dialog)
					label (label)
					value (asciiText)
					ok (command)
					edittime (command)
					editwarnings (command)
					quit (command)
				warnings (dialog)
					label (label)
					value (asciiText)
					ok (command)
					edittime (command)
					editdate (command)
					quit (command)
				confirm (dialog)
					label (label)
					value (asciiText)
					ok (command)
					cancel (command)
					save (command)
					quit (command)
		Warning! (transientShell)
			warning (form)
				dismiss (command)
				message (label)
				reset (command)
				quit (command)

EXAMPLE RESOURCES

Some example resources. These are the most common resources, and the ones most likely needed changed in order to alter the (default) behaviour of xalarm:

	! For some nice colours...  If you have X11R5:
	*customization:				-color
	! Otherwise:
	XAlarm*background:			LightYellow
	XAlarm*foreground:			IndianRed
	XAlarm*Command.background:		IndianRed
	XAlarm*Command.foreground:		LightYellow
	XAlarm.When?.when.Dialog.background:	MidnightBlue
	XAlarm.Warning!.warning.background:	HotPink
	XAlarm.Alarm!.alarm.background:		DarkGreen
	! This is what you normally get...
	XAlarm*background:			White
	XAlarm*foreground:			Black
	XAlarm*Command.background:		Black
	XAlarm*Command.foreground:		White
	! Perhaps the most commonly used resources...
	XAlarm.confirm:				True
	XAlarm.warnings:			5,15
	XAlarm.warningwords:			0
	XAlarm.pester:				0
	XAlarm.snooze:				0
	XAlarm.volume:				50
	XAlarm.alarmaudio:			bell
	XAlarm.warningaudio:			bell
	! If the fonts are not to your taste, try "-new century schoolbook-"
	! instead of "-times-".
	XAlarm*font: -*-times-bold-r-*-*-14-*-*-*-p-*-iso8859-1
	XAlarm.When?.when.confirm.value*font: -*-times-bold-i-*-*-14-*-*-*-p-*-iso8859-1
	XAlarm.Alarm!.alarm.message.font: -*-times-bold-i-*-*-34-*-*-*-p-*-iso8859-1
	! If you want a more compact alarm window, try these...
	XAlarm.Alarm!.alarm.buttons.snooze1.fromVert:	quit
	! This will vary depending on button labels & font...
	XAlarm.Alarm!.alarm.buttons.snooze1.horizDistance:	-93
	XAlarm.Alarm!.alarm.buttons.snooze5.fromVert:	quit
	XAlarm.Alarm!.alarm.buttons.snooze15.fromVert:	quit
	XAlarm.Alarm!.alarm.buttons.snoozetime.fromHoriz:	snooze
	! Plus, if you want...
	XAlarm.Alarm!.alarm.message.fromHoriz:		buttons
	! This will vary depending on button labels & font...
	XAlarm.Alarm!.alarm.message.vertDistance:		-33
	! Some other defaults...
	XAlarm.Alarm!.alarm.background:		Black
	XAlarm.Alarm!.alarm.message.label:		Alarm Call!!!
	XAlarm.Alarm!.alarm.buttons.quit.label:	Quit
	XAlarm.Alarm!.alarm.buttons.snooze.label:	Snooze
	XAlarm.Alarm!.alarm.buttons.snooze1.label:	+1 min
	XAlarm.Alarm!.alarm.buttons.snooze5.label:	+5 mins
	XAlarm.Alarm!.alarm.buttons.snooze15.label:	+15 mins

TOOLKIT OPTIONS
The following standard X Toolkit command line arguments are commonly used with xalarm:

-display display
    This option specifies the X server to contact.

-geometry geometry
    This option specifies the preferred size and position of xalarm. It is a little meaningless to specify a size; it is as large as need be.

-xrm resourcestring
    This option specifies a resource string to be used. This is especially useful for setting resources that do not have separate command line options.

ENVIRONMENT

DISPLAY
    to get the default host and display number.

XENVIRONMENT
    to get the name of a resource file that overrides the global resources stored in the RESOURCE_MANAGER property.

XALARMFILEPATH
    a colon separated list of file names to be used in conjunction with ~/.xalarms for xalarm to look for alarms to set.

USER
    The user's login name. This may be used by xalarm when looking for the user's name for the alarm title, or the user's xalarm processes.

HOME
    The user's home directory. This may be used by xalarm when looking for the user's alarm file.

FILES

~/.xalarms
    The name of the alarm file looked at by xalarm for alarms to set and where alarms are saved. See also the environment variable XALARMFILEPATH.

~/.xalarms.died
    The name of the alarm file where xalarm stores its alarm which had not finished when the X session under which it was running was terminated.

SEE ALSO
X(1), leave(1), calendar(1), date(1), emacs(1), twm(1), ps(1), sh(1), fortune(6), yow(6)

BUGS

Preamble:
    Because of the way xalarm has evolved (it started as a 24-hour period one-off alarm clock), its dealing with dates, alarm files and the interface to these is not ideal. Nobody said evolution was perfect. If you want to report a bug, or anything else, please first give as much information as you can. See COMMENTS at the end of the manual.

General:
    Each alarm is a separate, forked, xalarm process, each with its own connection to the display. There is no way to get xalarm to set more than one alarm or to display on several displays at once. Because xalarm is one of those clients you tend to start from a window manager or from an X initialisation script, you may not see error messages that these xalarm processes write to standard error. You will only see them if this output also goes to, or is redirected to, your display. If your shell initialisation script does any output, xalarm may get confused when trying to list other xalarm processes (and therefore also when killing or resetting all xalarm processes).

Daemons:
    If you terminate the session which an xalarm daemon is running under, the daemon does not exit until just before it re-tries to start new alarms from the alarm file. It is possible, but unlikely, that someone else may have got your particular display connection (not physical display) in the meantime. xalarm cannot know when this happens. It would be nice to be able to tell daemon and normal xalarm processes apart when listing them.

Saving to file:
    The date saved in the alarm file is the exact date the alarm would trigger, not the date specified in the date input popup window. Both types of behaviour have their advantages, but only this behaviour is implemented. The same happens with those alarms that are saved when the X session under which they are running is terminated. This type of behaviour does seem more useful than the alternative. Currently does not satisfactorily save alarms with multi-line messages.

Restarting:
    Because uncompleted alarms are saved in the same format as the alarm file format, the resource environment of restarted alarms is inherited from the xalarm which restarted them. This is not necessarily the same as the original resource environments of these alarms.

Times & Dates:
    xalarm is at the mercy of the system clock. The message informing at what time xalarm is to trigger may appear to be wrong if the clocks go forwards or backwards between the present and the time it is due to trigger. If the time is relative to the present and confirmation is sought, the alarm and warnings are set from when the time is confirmed, not from when xalarm was invoked. Date and symbol names are recognised by the first three characters only, the rest are ignored. This is why week and weekly are equivalent, and midday and midnight are not implemented. There is no real wild carding within dates. You can only set an alarm that will trigger within the next 49 days (on the assumption that your machine has 32-bit unsigned longs).

Editing:
    The dialog box uses a subset of the emacs(1) editor/environment keymap for text buffers (which is certainly not a bug!). However, the return key event is translated by default into the confirm button event, as it is translated similarly in the alarm time and warning dialog boxes. To insert a newline, use ctrl-m (since under emacs(1) the return key is a synonym for ctrl-m, under X they generate different events), or just change the relevant resource(s) so that return produces the desired effect. The resources, followed by the necessary value, are:

XAlarm.When?.time.value.translations
        XAlarm.When?.date.value.translations
        XAlarm.When?.warnings.value.translations
        XAlarm.When?.confirm.value.translations
                    #override <Key>Return: newline()

Resetting & Killing:
    Signalling is implemented very simply, and if the process signalled is not an xalarm, strange things may occur. Usually, nothing will happen. However, killing does not use the KILL signal, and is therefore relatively safe to use even though your ps(1) can never be 100% reliable. Still, this can mean that when you reset or kill all xalarm processes, not all will have been signalled.

Input:
    Doesn't take input from a pipe etc.

Audio:
    Doesn't parse the alarm or warning message to produce voice output(!)

COPYRIGHT
Copyright 1991, 1992, 1995 Simon Marshall.

AUTHOR
Simon Marshall, Formally of the Ph.D. Self Defense Group, Dept. of Computer Science, University Of Hull, UK. Currently at the European Space Agency's Research Institute (ESRIN), Frascati, Italy. Use simon@gnu.ai.mit.edu as a mail address.

CONTRIBERS
A lot of people have put in effort for xalarm since it was first released in the summer of 1991; testing, suggesting, commenting, cajoling and even fixing, in all the areas that software development entails. Not all will have been mentioned below, but thanks for your input. Big thanks yet again have to go to Gisle Hannemyr, Norsk Regnsesentral (NCC), J Braham Levy, UDSP Lab, University of Keele and Ex-Tek Associates (UK), and Stefan Haenssgen, Informatik Rechnerabteilung, University of Karlsruhe, for their help with ideas, comments and code, in the making of xalarm version 3.03. Thanks also to Paul Moore and Kirk Morgan for their help in porting xalarm for versions 3.04 and 3.05. For version 3.06, look no further than Charles Durst. For getting version 3 from version 2 in the first place, thanks have to go to Bill Leonard, Harris Computer Systems Division, Florida, for harassing me with suggestions for improvements to make xalarm version 3 a useful tool and this manual page easier to understand, and Andreas Stolcke, International Computer Science Institute, Berkeley, for his help fixing code. Without both, xalarm would still be pretty much as version 2. Thanks also to J Braham Levy, Stefan Haenssgen, Jamie Zawinski, Jason Venner and Kimmo Suominen for their help with version 3. For their help and suggestions with xalarm "over the years", I would also like to thank (in no real order) Steve Aronson, Dave Brooks, Reiner Hammer, Jay Lawlor, Janet Anstett, Gordon Freedman, Francois-Regis Colin and Jeffrey Mast. If I've missed anyone, sorry.

COMMENTS
I'd welcome any; comments, suggestions, code, bug reports and fixes, etc. Don't forget to include which version of xalarm you are using (from xalarm -version), machine/OS, X release & patch number, window manager etc.