etmtk  3.2.31
About: etm manage events and tasks using simple text files (based on Tk).
  Fossies Dox: etmtk-3.2.31.tar.gz  ("unofficial" and yet experimental doxygen-generated source code documentation)  

No Matches
etmtk Documentation

Some Fossies usage hints in advance:

  1. To see the Doxygen generated documentation please click on one of the items in the steelblue colored "quick index" bar above or use the side panel at the left which displays a hierarchical tree-like index structure and is adjustable in width.
  2. If you want to search for something by keyword rather than browse for it you can use the client side search facility (using Javascript and DHTML) that provides live searching, i.e. the search results are presented and adapted as you type in the Search input field at the top right.
  3. Doxygen doesn't incorporate all member files but just a definable subset (basically the main project source code files that are written in a supported language). So to search and browse all member files you may visit the Fossies etmtk-3.2.31.tar.gz contents page and use the Fossies standard member browsing features (also with source code highlighting and additionally with optional code folding).
etm Tk

manage events and tasks using simple text files
etm is an acronym for event and task manager.

In contrast to most calendar/todo applications, creating items (events,
tasks, and so forth) in etm does not require filling out fields in a
form. Instead, items are created as free-form text entries using a
simple, intuitive format and stored in plain text files.

This project is hosted on GitHub.

Sample entries

Items in etm begin with a type character such as an asterisk (event) and
continue on one or more lines either until the end of the file is
reached or another line is found that begins with a type character. The
beginning type character for each item is followed by the item summary
and then, perhaps, by one or more @key value pairs. The order in which
such pairs are entered does not matter.

-   A sales meeting (an event) [s]tarting seven days from today at
    9:00am and [e]xtending for one hour with a default [a]lert 5 minutes
    before the start:

        * sales meeting @s +7 9a @e 1h @a 5

-   The sales meeting with another [a]lert 2 days before the meeting to
    (e)mail a reminder to a list of recipients:

        * sales meeting @s +7 9a @e 1h @a 5
          @a 2d: e;,

-   Prepare a report (a task) for the sales meeting [b]eginning 3 days

        - prepare report @s +7 @b 3

-   A period [e]xtending 35 minutes (an action) spent working on the
    report yesterday:

        ~ report preparation @s -1 @e 35

-   Get a haircut (a task) on the 24th of the current month and then
    [r]epeatedly at (d)aily [i]ntervals of (14) days and, [o]n
    completion, (r)estart from the completion date:

        - get haircut @s 24 @r d &i 14 @o r

-   Payday (an occasion) on the last week day of each month. The &s -1
    part of the entry extracts the last date which is both a weekday and
    falls within the last three days of the month):

        ^ payday @s 1/1 @r m &w MO, TU, WE, TH, FR &m -1, -2, -3 &s -1

-   Take a prescribed medication daily (a reminder) [s]tarting today and
    [r]epeating (d)aily at [h]ours 10am, 2pm, 6pm and 10pm [u]ntil (12am
    on) the fourth day from today. Trigger the default [a]lert zero
    minutes before each reminder:

        * take Rx @s +0 @r d &h 10, 14, 18, 22 &u +4 @a 0

-   Move the water sprinkler (a reminder) every thirty mi[n]utes on
    Sunday afternoons using the default alert zero minutes before each

        * Move sprinkler @s 1 @r w &w SU &h 14, 15, 16, 17 &n 0, 30 @a 0

    To limit the sprinkler movement reminders to the [M]onths of April
    through September each year change the @r entry to this:

        @r w &w SU &h 14, 15, 16, 17 &n 0, 30 &M 4, 5, 6, 7, 8, 9

    or this:

        @r n &i 30 &w SU &h 14, 15, 16, 17 &M 4, 5, 6, 7, 8, 9

-   Presidential election day (an occasion) every four years on the
    first Tuesday after a Monday in November:

        ^ Presidential Election Day @s 2012-11-06
          @r y &i 4 &M 11 &m 2, 3, 4, 5, 6, 7, 8 &w TU

-   Join the etm discussion group (a task) [s]tarting on the first day
    of the next month. Because of the @g (goto) link, pressing Ctrl-G
    when the details of this item are displayed in the gui would open
    the link using the system default application which, in this case,
    would be your default browser:

        - join the etm discussion group @s +1/1


Source installation under OS X, Linux or Windows

Python 2.7.x or python >= 3.3.0 is required.

The following python packages are required for etm but are not included
in the python standard library:

-   dateutil (1.5 is OK but >= 2.1 is strongly recommended)
-   PyYaml (>= 3.10)
-   icalendar (>=3.5 for python 2, >= 3.6 for python 3)

Tk and the python module tkinter are also required but are typically
already installed on most modern operating systems. If needed,
installation instructions are given at

Installing etm

Download 'etmtk-x.x.x.tar.gz' from this site, unpack the tarball, cd to
the resulting directory and do the normal

    sudo python install

for a system installation. You can then run from any directory either

    $ etm ?

for information about command line usage or

    $ etm

to open the etm gui.

Alternatively, you can avoid doing a system installation and simply run

    $ python etm ?


    $ python etm


    $ ./etm

from this directory.

Installing Git or Mercurial

Having one of these version control systems is optional but strongly

With either progam installed, etm will automatically commit any change
made to any data file. You can see the history of your changes either to
a specific file or to any file from the GUI and, of course, you have the
entire range of possibilities for showing changes, restoring previous
versions and so forth from the command line.


Download Git from

Install git and then in a terminal enter your personal information

    $ git config --global "John Doe"
    $ git config --global

the editor you would like to use

    $ git config --global core.editor vim

and the diff program

    $ git config --global merge.tool vimdiff

Usage information can be obtained in several ways from the terminal

    $ git help <verb>
    $ git <verb> --help
    $ man git-<verb>

Finally, Pro Git by Scott Chacon is available to read or download at:

If you have been using Mercurial and would like to give Git a try, you
can import your etm Mercurial records into Git as follows:

    $ cd
    $ git clone git://
    $ git init new_temp_repo
    $ cd new_temp_repo
    $ ~/fast-export/ -r /path/to/etm/datadir
    $ git checkout HEAD

If an "unnamed head" error is reported, try adding --force to the end of
the fast-export line.

At this point, you should have a copy of your etm datadir in
new_temp_repo along with a directory, .git, that you can copy to the
root of your etm datadir where it will join its Mercurial counterpart,
.hg. You can then delete new_temp_repo.

You can now open etmtk.cfg for editing and change the setting for
vcs_system to

    vcs_system: git


Download Mercurial from

install it and then create the file ~/.hgrc, if it doesn't already
exist, with at least the following two lines:

    username = Your Name <your email address>

New etm users

By default, etm will use the directory


The first time you run etm it will create, if necessary, the following:


If the data directory needs to be created, then a file
~/.etm/data/sample.txt will be added with illustrative entries.
Similarly, the *.cfg files will be populated with useful entries.

Previous etm users

The first time you run etm, it will copy your current configuration
settings from ~/.etm/etm.cfg to ~/.etm/etmtk.cfg. You can make any
changes you like to the latter file without affecting the former.

You can switch back and forth between etm_qt and etm. Any changes made
to your data files by either one will be compatible with the other one.


Please share your ideas in the discussion group at GoogleGroups.


Copyright (c) 2009-2014 Daniel Graham. All rights reserved.

This program is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 3 of the License, or (at your
option) any later version.