diff options
Diffstat (limited to 'doc/manual.txt')
-rw-r--r-- | doc/manual.txt | 1112 |
1 files changed, 1112 insertions, 0 deletions
diff --git a/doc/manual.txt b/doc/manual.txt new file mode 100644 index 0000000..563f9e2 --- /dev/null +++ b/doc/manual.txt @@ -0,0 +1,1112 @@ +//// +/* + * $calcurse: manual.txt,v 1.1 2011/02/24 11:36:50 fleischer Exp $ + * + * Copyright (c) 2004-2010 Frederic Culot <frederic@culot.org> + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * - Redistributions of source code must retain the above + * copyright notice, this list of conditions and the + * following disclaimer. + * + * - Redistributions in binary form must reproduce the above + * copyright notice, this list of conditions and the + * following disclaimer in the documentation and/or other + * materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + */ +//// + +CALCURSE - text-based organizer +=============================== + +Abstract +-------- + +This manual describes `calcurse` functionnalities, and how to use them. The +installation from source is first described, together with the available +command line arguments. The user interface is then presented, with all of the +customizable options that change `calcurse` behavior. Last, bug reporting +procedure is explained, as well as the way one can contribute to `calcurse` +development. + +Introduction +------------ + +`calcurse` is a text-based calendar and scheduling application. It helps +keeping track of events, appointments and everyday tasks. A configurable +notification system reminds user of upcoming deadlines, and the curses based +interface can be customized to suit user needs. All of the commands are +documented within an online help system. + +Overview +-------- + +Creation history +~~~~~~~~~~~~~~~~ + +I started thinking about this project when I was finishing my Ph.D. in +Astrophysics... It started to be a little hard to organize myself, and I really +needed a good tool to help me in that difficult task ;) + +I like programs which use Text User Interfaces, because they are simple, fast, +portable and efficient, so I thought about working on coding a simple calendar +using such an interface. Moreover, I wanted to go on learning the `C` +language, which I only used for a while during my undergraduate studies. So I +thought that would be the good project to start in order to get organized and +to learn about a few `C` things ! + +Unfortunately, I finished my Ph.D. before finishing `calcurse`, but anyway, I +still wanted to work on it, hoping it would be helpful to other people. So +here it is... + +But why _calcurse_ anyway ? Well, it is simply the concatenation of _CALendar_ +and _nCURSEs_, the name of the library used to build the user interface. + +Important features +~~~~~~~~~~~~~~~~~~ + +`Calcurse` is multi-platform and intended to be lightweight, fast and reliable. +It is to be used inside a console or terminal, locally or on a distant machine +within an ssh (or similar) connection. + +`Calcurse` can be run in two different modes : interactive or non-interactive +mode. The first mode allows oneself to view its own personal organizer almost +everywhere, thanks to the text-based interface. The second mode permits to +easily build reminders just by adding `calcurse` with appropriate command line +arguments inside a cron tab or within a shell init script. + +Moreover, `calcurse` was created with the end-user in mind, and tends to be as +friendly as possible. This means a complete on-line help system, together with +having all of the possible actions displayed at any time inside a status bar. +The user interface is configurable, and one can choose between several color +and layout combinations. Key bindings are also configurable, to fit everyone's +needs. Last, a configurable notification system reminds user of upcoming +appointments. The reminders are sent even if the user's interface is not +running, as calcurse is able to run in background. + +Installation +------------ + +Requirements +~~~~~~~~~~~~ + +ncurses library +^^^^^^^^^^^^^^^ + +`Calcurse` requires only a `C` compiler, such as `cc` or `gcc`, and the +`ncurses` library. It would be very surprising not to have a valid `ncurses` +library already installed on your computer, but if not, you can find it at the +following url: http://ftp.gnu.org/pub/gnu/ncurses/ + +NOTE: It is also possible to link `calcurse` against the `ncursesw` library + (ncurses with support for unicode). However, UTF-8 is not yet supported + by `calcurse`. + +[[installation_requirements_gettext]] +gettext library +^^^^^^^^^^^^^^^ + +`calcurse` supports internationalization (*i18n* hereafter) through the +`gettext` utilities. This means `calcurse` can produce multi-lingual messages +if compiled with native language support (i.e. *NLS*). + +However, *NLS* is optionnal and if you do not want to have support for +multi-lingual messages, you can disable this feature. This is done by giving +the `--disable-nls` option to `configure` (see section +<<install_process,Install process>>). To check if the `gettext` utilities are +installed on your system, you can search for the `libintl.h` header file for +instance: + +---- +$ locate libintl.h +---- + +If this header file is not found, then you can obtain the `gettext` sources at +the following url : http://ftp.gnu.org/pub/gnu/gettext/ + +NOTE: Even if `libintl.h` is found on your system, it can be wise to specify + its location during the <<install_process,install process>>, by using the + `--with-libintl-prefix` option with `configure`. Indeed, the `configure` + could fail to locate this library if installed in an uncommon place. + +[[install_process]] +Install process +~~~~~~~~~~~~~~~ + +First you need to gunzip and untar the source archive: + +---- +$ tar zxvf calcurse-2.8.tar.gz +---- + +Once you meet the requirements and have extracted the archive, the install +process is quite simple, and follows the standard three steps process: + +---- +$ ./configure +$ make +$ make install # (may require root privilege) +---- + +Use `./configure --help` to obtain a list of possible options. + +calcurse basics +--------------- + +Invocation +~~~~~~~~~~ + +[[invocation_commandline]] +Command line arguments +^^^^^^^^^^^^^^^^^^^^^^ + +`calcurse` takes the following options from the command line (both short and +long options are supported): + +`-a, --appointment`:: + Print the appointments and events for the current day and exit. The calendar + from which to read the appointments can be specified using the `-c` flag. + +`-c <file>, --calendar <file>`:: + Specify the calendar file to use. The default calendar is + `~/.calcurse/apts` (see section <<basics_files,calcurse files>>). + +`-d <date|num>, --day <date|num>`:: + Print the appointments for the given date or for the given number of + upcoming days, depending on the argument format. Two possible formats are + supported: ++ +-- + * a date (possible formats described below). + * a number `n`. +-- ++ +In the first case, the appointment list for the specified date will be +returned, while in the second case the appointment list for the `n` upcoming +days will be returned. As an example, typing `calcurse -d 3` will display +your appointments for today, tomorrow, and the day after tomorrow. Possible +formats for specifying the date are defined inside the general configuration +menu (see <<options_general,General options>>), using the +`input_datefmt` variable. ++ +Note: as for the `-a` flag, the calendar from which to read the appointments +can be specified using the `-c` flag. + +`-D <dir>, --directory <dir>`:: + Specify the data directory to use. This option is incompatible with -c. + If not specified, the default directory is `~/.calcurse/`. + +`-h, --help`:: + Print a short help text describing the supported command-line options, + and exit. + +`-i <file>, --import <file>`:: + Import the icalendar data contained in `file`. + +`-n, --next`:: + Print the next appointment within upcoming 24 hours and exit. The indicated + time is the number of hours and minutes left before this appointment. ++ +Note: the calendar from which to read the appointments can be specified using +the `-c` flag. + +`-N, --note`:: + When used with the `-a` or `-t` flag, also print note content if one is + associated with the displayed item. + +`-r[num], --range[=num]`:: + Print events and appointments for the num number of days and exit. If no num + is given, a range of 1 day is considered. + +`-s[date], --startday[=date]`:: + Print events and appointments from date and exit. If no date is given, the + current day is considered. + +`-S<regex>, --search=<regex>`:: + When used with the `-a`, `-d`, `-r`, `-s`, or `-t` flag, print only the items + having a description that matches the given regular expression. + +`--status`:: + Display the status of running instances of calcurse. If calcurse is + running, this will tell if the interactive mode was launched or if + calcurse is running in background. The process pid will also be indicated. + +`-t[num], --todo[=num]`:: + Print the `todo` list and exit. If the optional number `num` is given, then + only todos having a priority equal to `num` will be returned. The priority + number must be between 1 (highest) and 9 (lowest). It is also possible to + specify `0` for the priority, in which case only completed tasks will be + shown. + +`-v, --version`:: + Display `calcurse` version and exit. + +`-x[format], --export[=format]`:: + Export user data to specified format. Events, appointments and todos are + converted and echoed to stdout. Two possible formats are available: ical and + pcal (see section <<links_others,Links>> below). If the optional + argument `format` is not given, ical format is selected by default. ++ +Note: redirect standard output to export data to a file, by issuing a command +such as: ++ +---- +$ calcurse --export > my_data.dat +---- + +Environment variable for i18n +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +`calcurse` can be compiled with native language support (see +<<install_requirements_gettext,gettext library>>). Thus, if you wish to have +messages displayed into your native language, first make sure it is available +by looking at the `po/LINGUAS` file. This file indicates the set of available +languages by showing the two-letters corresponding code (for exemple, *fr* +stands for french). If you do not find your language, it would be greatly +appreciated if you could help translating `calcurse` (see the <<contribute,How +to contribute?>> section). + +If your language is available, run `calcurse` with the following command: + +---- +$ LC_ALL=fr_FR calcurse +---- + +... where *fr_FR* is the locale name in this exemple, but should be replaced by +the locale corresponding to the desired language. + +You should also specify the charset to be used, because in some cases the +accents and such are not displayed correctly. This charset is indicated at the +beginning of the po file corresponding to the desired language. For instance, +you can see in the fr.po file that it uses the iso-8859-1 charset, so you could +run `calcurse` using the following command: + +---- +$ LC_ALL=fr_FR.ISO8859-1 calcurse +---- + +Other environment variables +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + +The following environment variables affect the way `calcurse` operates: + +`VISUAL`:: + Specifies the external editor to use for writing notes. + +`EDITOR`:: + If the `VISUAL` environment variable is not set, then `EDITOR` will be used + as the default external editor. If none of those variables are set, then + `/usr/bin/vi` is used instead. + +`PAGER`:: + Specifies the default viewer to be used for reading notes. If this variable + is not set, then `/usr/bin/less` is used. + +User interface +~~~~~~~~~~~~~~ + +Non-interactive mode +^^^^^^^^^^^^^^^^^^^^ + +When called with at least one of the following arguments: `-a`, `-d`, `-h`, +`-n`, `-t`, `-v`, `-x`, `calcurse` is started in non-interactive mode. This +means the desired information will be displayed, and after that, `calcurse` +simply quits and you are driven back to the shell prompt. + +That way, one can add a line such as `calcurse --todo --appointment` in its +init config file to display at logon the list of tasks and appointments +scheduled for the current day. + +[[basics_interface_interactive]] +Interactive mode +^^^^^^^^^^^^^^^^ + +NOTE: Key bindings that are indicated in this manual correspond to the default + ones, defined when `calcurse` is launched for the first time. If those + key bindings do not suit user's needs, it is possible to change them + within the keys configuration menu (see <<options_keys,key bindings>>). + +When called without any argument or only with the `-c` option, `calcurse` is +started in interactive mode. In this mode, you are shown an interface +containing three different panels which you can browse using the `TAB` key, +plus a notification bar and a status bar (see figure below). + +---- + appointment panel---. .---calendar panel + | | + v v + +------------------------------------++----------------------------+ + | Appointments || Calendar | + |------------------------------------||----------------------------| + | (|) April 6, 2006 || April 2006 | + | ||Mon Tue Wed Thu Fri Sat Sun | + | || 1 2 | + | || 3 4 5 6 7 8 9 | + | || 10 11 12 13 14 15 16 | + | || 17 18 19 20 21 22 23 | + | || 24 25 26 27 28 29 30 | + | || | + | |+----------------------------+ + | |+----------------------------+ + | || ToDo | todo + | ||----------------------------| panel + | || | | + | || | | + | || |<--. + | || | + +------------------------------------++----------------------------+ + |---[ Mon 2006-11-22 | 10:11:43 ]---(apts)----> 01:20 :: lunch <---|<--. + +------------------------------------------------------------------+ notify-bar + | ? Help R Redraw H/L -/+1 Day G GoTo C Config | + | Q Quit S Save J/K -/+1 Week Tab Chg View |<-. + +------------------------------------------------------------------+ | + | + status bar +---- + +The first panel represents a calendar which allows to highlight a particular +day, the second one contains the list of the events and appointments on that +day, and the last one contains a list of tasks to do but which are not assigned +to any specific day. + +Depending on the selected view, the calendar could either display a monthly +(default as shown in previous figure) or weekly view. The weekly view would +look like the following: + +---- ++------------------------------------+ +| Calendar | +|----------------------------(# 13)--| +| Mon Tue Wed Thu Fri Sat Sun | +| 29 30 31 01 02 03 04 | +| <----+-- slice 1: 00:00 to 04:00 AM +| -- -- -- -- -- -- | +| <----+-- slice 2: 04:00 to 08:00 AM +| -- -- -- -- -- -- | +| <----+-- slice 3: 08:00 to 12:00 AM +| - -- -- -- -- -- -- - <-+-- midday +| <----+-- slice 4: 12:00 to 04:00 PM +| -- -- -- -- -- -- | +| <----+-- slice 5: 04:00 to 08:00 PM +| -- -- -- -- -- -- | +| <----+-- slice 6: 08:00 to 12:00 PM ++------------------------------------+ +---- + +The current week number is displayed on the top-right side of the panel (*# 13* +meaning it is the 13th week of the year in the above example). The seven days +of the current week are displayed in column. Each day is divided into slices of +4 hours each (6 slices in total, see figure above). A slice will appear in a +different color if an appointment falls into the corresponding time-slot. + +In the appointment panel, one can notice the *`(|)`* sign just in front of the +date. This indicates the current phase of the moon. Depending on which is the +current phase, the following signs can be seen: + +` |) `:: + first quarter + +` (|) `:: + full moon + +` (| `:: + last quarter + +` | `:: + new moon + +no sign:: + Phase of the moon does not correspond to any of the above ones. + +At the very bottom of the screen there is a status bar, which indicates the +possible actions and the corresponding keystrokes. + +Just above this status bar is the notify-bar, which indicates from left to +right : the current date, the current time, the calendar file currently in use +(apts on the above example, which is the default calendar file, see the +following section), and the next appointment within the upcoming 24 hours. Here +it says that it will be lunch time in one hour and twenty minutes. + +NOTE: Some actions, such as editing or adding an item, require to type in some + text. This is done with the help of the built-in input line editor. + +Within this editor, if a line is longer than the screen width, a `>`, `*`, or +`<` character is displayed in the last column indicating that there are more +character after, before and after, or before the current position, +respectively. The line is scrolled horizontally as necessary. + +Moreover, some editing commands are bound to particular control characters. +Hereafter are indicated the available editing commands (`^` stands for the +control key): + +`^a`:: + moves the cursor to the beginning of the input line + +`^b`:: + moves the cursor backward + +`^d`:: + deletes one character forward + +`^e`:: + moves the cursor to the end of the input line + +`^f`:: + moves the cursor forward + +`^h`:: + deletes one character backward + +`^k`:: + deletes the input from the cursor to the end of the line + +`ESCAPE`:: + cancels the editing + +[[basics_daemon]] +Background mode +~~~~~~~~~~~~~~~ + +When the daemon mode is enabled in the notification configuration menu (see +<<options_notify,Notify-bar settings>>), `calcurse` will stay in background +when the user interface is not running. In background mode, `calcurse` checks +for upcoming appointments and runs the user-defined notification command when + necessary. When the user interface is started again, the daemon automatically + stops. + +`calcurse` background activity can be logged (set the `notify-daemon_log` +variable in the notification configuration <<options_notify,menu>>), +and in that case, information about the daemon start and stop time, reminders' +command launch time, signals received... will be written in the `daemon.log` +file (see section <<basics_files,files>>). + +Using the `--status` command line option (see section +<<basics_invocation_commandline,Command line arguments>>), one can know if +`calcurse` is currently running in background or not. If the daemon is +running, a message like the following one will be displayed (the pid of the +daemon process will be shown): + +---- +calcurse is running in background (pid 14536) +---- + +NOTE: To stop the daemon, just send the `TERM` signal to it, using a command + such as: `kill daemon_pid`, where *daemon_pid* is the process id of the + daemon (14536 in the above example). + +[[basics_files]] +calcurse files +~~~~~~~~~~~~~~ + +The following structure is created in your `$HOME` directory (or in the +directory you specified with the -D option) the first time `calcurse` is run +: + +---- +$HOME/.calcurse/ + |___notes/ + |___conf + |___keys + |___apts + |___todo +---- +`notes/`:: + this subdirectory contains descriptions of the notes which are attached to + appointments, events or todos. One text file is created per note, whose name + is built using mkstemp(3) and should be unique, but with no relation with the + corresponding item's description. +`conf`:: + this file contains the user configuration +`keys`:: + this file contains the user-defined key bindings +`apts`:: + this file contains all of the events and user's appointments +`todo`:: + this file contains the todo list + +NOTE: If the logging of calcurse daemon activity was set in the notification + configuration menu, the extra file `daemon.log` will appear in calcurse + data directory. This file contains logs about calcurse activity when + running in background. + +Import/Export capabilities +~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The import and export capabilities offered by `calcurse` are described below. + +Import +^^^^^^ + +Data in icalendar format as described in the rfc2445 specification (see +<<links_others,links>> section below) can be imported into calcurse. Calcurse +ical parser is based on version 2.0 of this specification, but for now on, only +a subset of it is supported. + +The following icalendar properties are handled by calcurse: + +* `VTODO` items: "PRIORITY", "VALARM", "SUMMARY", "DESCRIPTION" + +* `VEVENT` items: "DTSTART", "DTEND", "DURATION", "RRULE", "EXDATE", "VALARM", + "SUMMARY", "DESCRIPTION" + +The icalendar `DESCRIPTION` property will be converted into calcurse format by +adding a note to the item. If a "VALARM" property is found, the item will be +flagged as important and the user will get a notification (this is only +applicable to appointments). + +Here are the properties that are not implemented: + +* negative time durations are not taken into account (item is skipped) + +* some recurence frequences are not recognize: "SECONDLY" / "MINUTELY" / + "HOURLY" + +* some recurrence keywords are not recognized (all those starting with `BY`): + "BYSECOND" / "BYMINUTE" / "BYHOUR" / "BYDAY" / "BYMONTHDAY" / "BYYEARDAY" / + "BYWEEKNO" / "BYMONTH" / "BYSETPOS" plus "WKST" + +* the recurrence exception keyword "EXRULE" is not recognized + +* timezones are not taken into account + +Export +^^^^^^ + +Two possible export formats are available: `ical` and `pcal` (see section +<<links_others,Links>> below to find out about those formats). + +Online help +~~~~~~~~~~~ + +At any time, the built-in help system can be invoked by pressing the `?` +key. Once viewing the help screens, informations on a specific command can be +accessed by pressing the keystroke corresponding to that command. + +Options +------- + +All of the `calcurse` parameters are configurable from the Configuration menu +available when pressing `C`. You are then driven to a submenu with five +possible choices : pressing `C` again will lead you to the Color scheme +configuration, pressing `L` allows you to choose the layout of the main +`calcurse` screen (in other words, where to put the three different panels on +screen), pressing `G` permits you to choose between different general options, +pressing `K` opens the key bindings configuration menu, and last you can modify +the notify-bar settings by pressing `N`. + +[[options_general]] +General options +~~~~~~~~~~~~~~~ + +These options control `calcurse` general behavior, as described below: + +`auto_save` (default: *yes*):: + This option allows to automatically save the user's data (if set to *yes*) + when quitting. <p class="rq"><span class="valorise">warning:</span> No data + will be automatically saved if `auto_save` is set to *no*. This means the + user must press `S` (for saving) in order to retrieve its modifications. + +`periodic_save` (default: *0*):: + If different from `0`, user's data will be automatically saved every + *periodic_save* minutes. When an automatic save is performed, two asterisks + (i.e. `**`) will appear on the top right-hand side of the screen). + +`confirm_quit` (default: *yes*):: + If set to *yes*, confirmation is required before quitting, otherwise pressing + `Q` will cause `calcurse` to quit without prompting for user confirmation. + +`confirm_delete` (default: *yes*):: + If this option is set to *yes*, pressing `D` for deleting an item (either a + *todo*, *appointment*, or *event*), will lead to a prompt asking for user + confirmation before removing the selected item from the list. Otherwise, no + confirmation will be needed before deleting the item. + +`skip_system_dialogs` (default: *no*):: + Setting this option to *yes* will result in skipping the system dialogs + related to the saving and loading of data. This can be useful to speed up + the input/output processes. + +`skip_progress_bar` (default: *no*):: + If set to *yes*, this will cause the disappearing of the progress bar which + is usually shown when saving data to file. If set to *no*, this bar will be + displayed, together with the name of the file being saved (see section + <<basics_files,calcurse files>>). + +`calendar_default_view` (default: *0*):: + If set to `0`, the monthly calendar view will be displayed by default + otherwise it is the weekly view that will be displayed. + +`week_begins_on_monday` (default: *yes*):: + One can choose between Monday and Sunday as the first day of the week. If the + option `week_begins_on_monday` is set to *yes*, Monday will be first in the + calendar view. Else if the option is set to *no*, then Sunday will be the + first day of the week. + +`output_datefmt` (default: *%D*):: + This option indicates the format to be used when displaying dates in + non-interactive mode. Using the default values, dates are displayed the + following way: *mm/dd/aa*. You can see all of the possible formats by typing + `man 3 strftime` inside a terminal. + +`input_datefmt` (default: *1*):: + This option indicates the format that will be used to enter dates in + *calcurse*. Four choices are available: ++ +1. mm/dd/yyyy +2. dd/mm/yyyy +3. yyyy/mm/dd +4. yyyy-mm-dd + +[[options_keys]] +Key bindings +~~~~~~~~~~~~ + +One can define it's own keybindings within the `Keys` configuration menu. The +default keys look like the one used by the `vim` editor, especially the +displacement keys. Anyway, within this configuration menu, users can redefine +all of the keys available from within calcurse's user interface. + +To define new keybindings, first highlight the action to which it will apply. +Then, delete the actual key binding if necessary, and add a new one. You will +then be asked to press the key corresponding to the new binding. It is possible +to define more than one key binding for a single action. + +An automatic check is performed to see if the new key binding is not already +set for another action. In that case, you will be asked to choose a different +one. Another check is done when exiting from this menu, to make sure all +possible actions have a key associated with it. + +The following keys can be used to define bindings: + +* lower-case, upper-case letters and numbers, such as `a`, `Z`, `0` + +* CONTROL-key followed by one of the above letters + +* escape, horizontal tab, and space keys + +* arrow keys (up, down, left, and right) + +* `HOME` and `END` keys + +While inside the key configuration menu, an online help is available for each +one of the available actions. This help briefly describes what the highlighted +action is used for. + +Color themes +~~~~~~~~~~~~ + +`calcurse` color theme can be customized to suit user's needs. To change the +default theme, the configuration page displays possible choices for foreground +and background colors. Using arrows or calcurse displacement keys to move, and +`X` or space to select a color, user can preview the theme which will be +applied. It is possible to keep the terminal's default colors by selecting the +corresponding choice in the list. + +The chosen color theme will then be applied to the panel borders, to the +titles, to the keystrokes, and to general informations displayed inside status +bar. A black and white theme is also available, in order to support non-color +terminals. + +NOTE: Depending on your terminal type and on the value of the `$TERM` + environnement variable, color could or could not be supported. An error + message will appear if you try to change colors whereas your terminal + does not support this feature. If you do know your terminal supports + colors but could not get `calcurse` to display them, try to set your + `$TERM` variable to another value (such as *xterm-xfree86* for instance). + +Layout configuration +~~~~~~~~~~~~~~~~~~~~ + +The layout corresponds to the position of the panels inside `calcurse` screen. +The default layout makes the calendar panel to be displayed on the top-right +corner of the terminal, the todo panel on the bottom-right corner, while the +appointment panel is displayed on the left hand-side of the screen (see the +figure in section <<basics_interface_interactive,Interactive mode>> for an +exemple of the default layout). By choosing another layout in the +configuration screen, user can customize `calcurse` appearence to best suit his +needs by placing the different panels where needed. + +The following option is used to modify the layout configuration: + +`layout` (default: *0*):: + Eight different layouts are to be chosen from (see layout configuration + screen for the description of the available layouts). + +Sidebar configuration +~~~~~~~~~~~~~~~~~~~~~ + +The sidebar is the part of the screen which contains two panels: the calendar +and, depending on the chosen layout, either the todo list or the appointment +list. + +The following option is used to change the width of the sidebar: + +`side-bar_width` (default: *0*):: + Width (in percentage, 0 being the minimum width) of the side bar. + +[[options_notify]] +Notify-bar settings +~~~~~~~~~~~~~~~~~~~ + +The following options are used to modify the notify-bar behavior: + +`notify-bar_show` (default: *yes*):: + This option indicates if you want the notify-bar to be displayed or not. + +`notify-bar_date` (default: *%a %F*):: + With this option, you can specify the format to be used to display the + current date inside the notification bar. You can see all of the possible + formats by typing `man 3 strftime` inside a terminal. + +`notify-bar_time` (default: *%T*):: + With this option, you can specify the format to be used to display the + current time inside the notification bar. You can see all of the possible + formats by typing `man 3 strftime` inside a terminal. + +`notify-bar_warning` (default: *300*):: + When there is an appointment which is flagged as `important` within the next + `notify-bar_warning` seconds, the display of that appointment inside the + notify-bar starts to blink. Moreover, the command defined by the + `notify-bar_command` option will be launched. That way, the user is warned + and knows there will be soon an upcoming appointment. + +`notify-bar_command` (default: *printf '\a'*):: + This option indicates which command is to be launched when there is an + upcoming appointment flagged as `important`. This command will be passed to + the user's shell which will interpret it. To know what shell must be used, + the content of the `$SHELL` environment variable is used. If this variable is + not set, `/bin/sh` is used instead. ++ +==== +Say the `mail` command is available on the user's system, one can use the +following command to get notified by mail of an upcoming appointment (the +appointment description will also be mentioned in the mail body): + +---- +$ calcurse --next | mail -s "[calcurse] upcoming appointment!" user@host.com +---- +==== + +`notify-daemon_enable` (default: *no*):: + If set to yes, daemon mode will be enabled, meaning `calcurse` will run into + background when the user's interface is exited. This will allow the + notifications to be launched even when the interface is not running. More + details can be found in section <<basics_daemon,Background mode>>. + +`notify-daemon_log` (default: *no*):: + If set to yes, `calcurse` daemon activity will be logged (see section + <<basics_files,files>>). + +Known bugs +---------- + +Incorrect highlighting of items appear when using calcurse black and white +theme together with a `$TERM` variable set to *xterm-color*. To fix this bug, +and as advised by Thomas E. Dickey (`xterm` maintainer), *xterm-xfree86* should +be used instead of *xterm-color* to set the `$TERM` variable: + +____ +"The xterm-color value for $TERM is a bad choice for XFree86 xterm because it +is commonly used for a terminfo entry which happens to not support bce. Use the +xterm-xfree86 entry which is distributed with XFree86 xterm (or the similar one +distributed with ncurses)." +____ + +[[bugs]] +Reporting bugs and feedback +--------------------------- + +Please send bug reports and feedback to: `calcurse .at. culot .dot. org` or to +the author: `frederic .at. culot .dot. org`. + +[[contribute]] +How to contribute? +------------------ + +If you would like to contribute to the project, you can first send your +feedback on what you like or dislike, and if there are features you miss in +`calcurse`. For now on, possible contributions concern the translation of +`calcurse` messages and documentation. + +NOTE: any help in getting `calcurse` internationalized would be very welcomed, + but before contributing, send a mail to `calcurse-i18n .at. culot .dot. + org` to know if someone already started the translation process into your + language. + +Translating documentation +~~~~~~~~~~~~~~~~~~~~~~~~~ + +The *doc/* directory of the source package already contains translated version +of `calcurse` manual. However, if the manual is not yet available into your +native language, it would be appreciated if you could help translating it. + +To do so, just copy one of the existing manual file to `manual_XX.html`, where +*XX* identifies your language. Then translate this newly created file and send +it to the author (see <<bugs,Reporting bugs and feeback>>), so that it can be +included in the next `calcurse` release. + +calcurse i18n +~~~~~~~~~~~~~ + +As already mentioned, `gettext` utilities are used by `calcurse` to produce +multi-lingual messages. This section provides informations about how to +translate those messages into your native language. However, this howto is +deliberately incomplete, focusing on working with `gettext` for `calcurse` +specifically. For more comprehensive informations or to grasp the Big Picture +of Native Language Support, you should refer to the `GNU gettext` manual at: +http://www.gnu.org/software/gettext/manual/ + +Basically, three different people get involved in the translation chain: +coders, language coordinator, and translators. After a quick overview of how +things work, the translator tasks will be described hereafter. + +Overview +^^^^^^^^ + +To be able to display texts in the native language of the user, two steps are +required: *internationalization* (i18n) and *localization* (l10n). + +i18n is about making `calcurse` support multiple languages. It is performed by +coders, who will mark translatable texts and provide a way to display them +translated at runtime. + +l10n is about making the i18n'ed `calcurse` adapt to the specific language of +the user, ie translating the strings previously marked by the developers, and +setting the environment correctly for `calcurse` to use the result of this +translation. + +So, translatable strings are first marked by the coders within the `C` source +files, then gathered in a template file (*calcurse.pot* - the *pot* extension +meaning *portable object template*). The content of this template file is then +merged with the translation files for each language (*fr.po* for french, for +instance - with *po* standing for *portable object*, ie meant to be read and +edited by humans). A given translation team will take this file, translate its +strings, and send it back to the developers. At compilation time, a binary +version of this file (for efficiency reasons) will be produced (*fr.mo* - *mo* +stands for *machine object*, ie meant to be read by programs), and then +installed. Then `calcurse` will use this file at runtime, translating the +strings according to the locale settings of the user. + + +Translator tasks +^^^^^^^^^^^^^^^^ + +Suppose someone wants to initiate the translation of a new language. Here are +the steps to follow: + +* First, find out what the locale name is. For instance, for french, it is + `fr_FR`, or simply `fr`. This is the value the user will have to put in his + `LC_ALL` environment variable for software to be translated (see + <<basics_invocation_variable,Environment variable for i18n>>). + +* Then, go into the *po/* directory, and create a new po-file + from the template file using the following command: `msginit -i calcurse.pot + -o fr.po -l fr --no-translator` If you do not have `msginit` installed on + your system, simply copy the *calcurse.pot* file to *fr.po* and edit the + header by hand. + +Now, having this *fr.po* file, the translator is ready to begin. + +po-files +^^^^^^^^ + +The format of the po-files is quite simple. Indeed, po-files are made of four +things: + +1. *location lines:* tells you where the strings can be seen (name of file and + line number), in case you need to see a bit of context. + +2. *msgid lines:* the strings to translate. + +3. *msgstr lines:* the translated strings. + +4. *lines prefixed with `#`:* comments (some with a special meaning, as we will + see below). + +Basically, all you have to do is fill the *msgstr* lines with the translation +of the above *msgid* line. + +A few notes: + +*Fuzzy strings*:: + You will meet strings marked with a `"#, fuzzy"` comment. `calcurse` won't + use the translations of such strings until you do something about them. A + string being fuzzy means either that the string has already been translated + but has since been changed in the sources of the program, or that this is a + new string for which `gettext` made a 'wild guess' for the translation, based + on other strings in the file. It means you have to review the translation. + Sometimes, the original string has changed just because a typo has been + fixed. In this case, you won't have to change anything. But sometimes, the + translation will no longer be accurate and needs to be changed. Once you are + done and happy with the translation, just remove the `"#, fuzzy"` line, and + the translation will be used again in `calcurse`. + +*c-format strings and special sequences*:: + Some strings have the following comment: `"#, c-format"`. This tells that + parts of the string to translate have a special meaning for the program, and + that you should leave them alone. For instance, %-sequences, like `"%s"`. + These means that `calcurse` will replace them with another string. So it is + important it remains. There are also \-sequences, like `\n` or `\t`. Leave + them, too. The former represents an end of line, the latter a tabulation. + +*Translations can be wrapped*:: + If lines are too long, you can just break them like this: ++ +---- +msgid "" +"some very long line" +"another line" +---- + +*po-file header*:: + At the very beginning of the po-file, the first string form a header, where + various kind of information has to be filled in. Most important one is the + charset. It should resemble ++ +---- +"Content-Type: text/plain; charset=utf-8\n" +---- ++ +You should also fill in the Last-Translator field, so that potential +contributors can contact you if they want to join you in the translation team, +or have remarks/typo fixes to give about the translations. You can either just +give your name/nick, or add an email address, for exemple: ++ +---- +"Last-Translator: Frederic Culot <frederic@culot.org>\n" +---- + +*Comments*:: + Adding comments (lines begining with the `#` character) can be a good way to + point out problems or translation difficulties to proofreaders or other + members of your team. + +*Strings size*:: + `calcurse` is a curses/console program, thus it can be heavily dependant on + the terminal size (number of columns). You should think about this when + translating. Often, a string must fit into a single line (standard length is + 80 characters). Don't translate blindly, try to look where your string will + be displayed to adapt your translation. + +*A few useful tools*:: + The po-file format is very simple, and the file can be edited with a standard + text editor. But if you prefer, there are few specialized tools you may find + convenient for translating: ++ +* `poEdit` (http://www.poedit.org/) +* `KBabel` (http://i18n.kde.org/tools/kbabel/) +* `GTranslator` (http://gtranslator.sourceforge.net/) +* `Emacs` po mode +* `Vim` po mode + +*And finally*:: + I hope you'll have fun contributing to a more internationalized world. :) If + you have any more questions, don't hesitate to contact me at *frederic .at. + culot .dot. org*. + +Links +----- + +This section contains links and references that may be of interest to you. + +calcurse homepage +~~~~~~~~~~~~~~~~~ + +The `calcurse` homepage can be found at http://culot.org/calcurse + +calcurse announce list +~~~~~~~~~~~~~~~~~~~~~~ + +If you are interested in the project and want to be warned when a new release +comes out, you can subscribe to the `calcurse` announce list. In doing so, you +will receive an email as soon as a new feature appears in `calcurse`. + +To subscribe to this list, send a message to *calcurse-announce .at. culot +.dot. org* with "subscribe" in the subject field. + +calcurse RSS feed +~~~~~~~~~~~~~~~~~ + +Another possibility to get warned when new releases come out is to follow the +RSS feed at: http://culot.org/calcurse/news_rss.xml + +This RSS feed is updated each time a new version of calcurse is available, +describing newly added features. + +[[links_others]] +Other links +~~~~~~~~~~~ + +You may want to look at the ical format specification (rfc2445) at: +http://tools.ietf.org/html/rfc2445 + +The pcal project page can be found at: http://pcal.sourceforge.net/ + +Thanks +------ + +Its time now to thank other people without whom this program would not exist! +So here is a list of contributing persons I would like to thank : + +* Alex for its patches, help and advices with `C` programming + +* Gwen for testing and general discussions about how to improve `calcurse` + +* Herbert for packaging `calcurse` for FreeBSD + +* Zul for packaging `calcurse` for NetBSD + +* Wain, Steffen and Ronald for packaging `calcurse` for Archlinux + +* Kevin, Ryan, and fEnIo for packaging `calcurse` for Debian and Ubuntu + +* Pascal for packaging `calcurse` for Slackware + +* Alexandre and Markus for packaging `calcurse` for Mac OsX and Darwin + +* Igor for packaging `calcurse` for ALT Linux + +* Joel for its calendar script which inspired `calcurse` calendar view + +* Michael Schulz and Chris M. for the german translation of `calcurse` and its + manual + +* Jose Lopez for the spanish translation of `calcurse` and its manual + +* Neil Williams for the english translation + +* Leandro Noferini for the italian translation + +* Tony for its patch which helped improving the recur_item_inday() function, + and for implementing the date format configuration options + +* Jeremy Roon for the dutch translation + +* Erik Saule for its patch implementing the `-N`, `-s`, `-S`, `-r` and `-D` + flags + +* people who write softwares I like and which inspired me, especially : + + - `vim` for the displacement keys + - `orpheus` and `abook` for documentation + - `pine` and `aptitude` for the text user interface + - `tmux` for coding style + +And last, many many thanks to all of the `calcurse` users who sent me their +feedback. |