Tycho is a Personal Information Manager (PIM) partially inspired by the commercial Windows software Info Select. Its primary platform is Linux, but efforts will be made to ensure that it run on Mac OSX and Windows.
Tycho is open source, distributed under the same license as Ruby. The project page is on Rubyforge, and contributions to the design and code are welcome.
By "PIM" we do not mean just another electronic Rolodex or contact manager. Tycho is for the quick storage and retrieval of large amounts of loosely-structured data. There is a hierarchy of topics, and each topic consists of a group of notes. Currently the notes are simply text.
Typical notes might be:
Some of the design goals are as follows:
In its current early stages, Tycho falls short of these goals. This help file
should always reflect its current capabilities, but the release notes may be
slightly more up to date.
To create a new topic, use Topic|New from the menu. You will be
prompted for a name, and the new topic will go under the currently
selected one. Alternatively, make sure that your focus is in the tree list
on the left, and press Insert. The effect is the same.
To cancel creating a new topic, press Escape or close the prompt window.
Use the menu item Topic|Rename; you will be prompted for the new
name. You can also right-click on a topic name in the tree. Finally, you can
manually change the title by editing the topic metadata (but this is
overkill).
Select Topic|Metadata from the menu. Editing is very crude at
present. Be very careful, as it is currently possible to scramble the
metadata badly enough that Tycho will crash while reading it.
Not currently implemented.
Not currently implemented.
Not currently implemented.
Every topic or note has metadata associated with it. Internally this is stored
as a hash of strings to values.
Some of these are metadata assigned automatically, such as the creation and
modification dates. Some are assigned manually, but have special meaning. Finally,
there is the possibility for the user to define arbitrary custom metadata to be
used in a specialized way.
Any valid Ruby method name can be the name of a metadata item. You may
set these at will and retrieve their values as subfields of the
metadata field of a note (e.g., note.metadata.foobar).
There are plans to allow inheritance of metadata from one topic to
another or from a topic to its notes. This is not yet implemented, and
it is still uncertain how it should work.
To use it from an external script: require 'tycho-api'
Support is very incomplete at the moment. Here are some operations that
work at least partially:
Back to top
Working with topics
Back to top
Back to top
Back to top
Back to top
Back to top
Back to top
Working with notes
Select Note|New from the menu; or press Insert while the focus
is in the middle pane or right pane. You will be prompted for a title. Edit
the note by clicking on its text area. In its early versions, Tycho's right
pane is a little tricky; ensure that you are not being prompted for a new topic
title.
Back to top
To edit a note, do one of these three operations:
To end editing, press Escape or simply click on the right pane outside any
note. Currently notes are always saved; there is no revert or undo.
Back to top
Select Note|Rename or right-click on the note's title bar.
Back to top
Select Note|Metadata from the menu. Be very careful, as it is
currently possible to scramble the metadata badly enough that Tycho will crash
while reading it.
Back to top
Delete a note in one of four ways:
Deleting a note is currently irreversible.
Back to top
Not currently implemented.
Back to top
Not currently implemented.
Back to top
Notes can be sorted in a variety of ways via the Sort notes menu.
Refer to the sort description in the metadata discussion below.
(This menu will likely be moved under the Note menu later.)
Back to top
Refer to the autosort description in the metadata discussion below.
Back to top
A note can be run as a script by selecting Note|Run from the menu.
(This is as dangerous as it sounds.) A note has to have the metadata item
script set to true to enable this. Internally, a simple
eval is performed; this will change later. The script in the note has
access to the Tycho API, including such items as DataStore.current
to refer to the current topic, and including GUI convenience methods such as
get_string and notify.
Back to top
Back to top
Searching
To search the entire tree of data, select Search|Globally or press
the Search button. (The latter may go away later.) The displayed notes may
be navigated and edited normally. To end search mode, press the End Search
button.
Back to top
To search the current topic and its subtopics, select
Search|Within topic. The displayed notes may be navigated and edited
normally. To end search mode, press the End Search button.
Back to top
Not currently implemented.
Planned features include:
Back to top
Working with metadata
Back to top
Some pieces of metadata have standard meanings. The existing ones are shown
here.
title
The title of the topic or note created
Creation date/time of the topic/note. modified
Last modified date/time of the topic/note. accessed
Last selected/searched date/time of the topic/note. width
Note window width (may be phased out). height
Note window height (may be phased out). x
Note window x coordinate (may be phased out). y
Note window y coordinate (may be phased out). sort
For topics, not yet implemented; for notes, the valid
values are these:
title
Sort alpha by title. -title
Sort alpha reverse by title. firstline
Sort alpha by first line of note. -firstline
Sort alpha reverse by first line of note. oldest
Sort by creation date (oldest first) newest
Sort by creation date reverse (newest first) recent
Sort by modification date (most recent first) -recent
Sort by modification date (least recent first) often
Sort by frequency of access (most often first) -often
Sort by frequency of access (least often first) seldom
Same as -often -seldom
Same as often manual
Sort manually (not yet implemented) manual
Sort manually reverse (not yet implemented) actions
An array of two-element arrays. Each pair
corresponds to a button added onto the note. The first element will be
the button's label; the second will be a command line to be executed
via system().
script
If true, this script can be run with Note|Run
autosort
If true, do an alpha sort of the lines of the
note after each edit.
Back to top
Back to top
Back to top
The Tycho API
The Tycho API is intended to allow full manipulation of all topics and notes
in the Tycho datastore in a programmatic way. It may be used from an
external script (without the GUI) or from a note with a script embedded in
it.
| app = Tycho.new |
Start a Tycho instance and load the datastore | ||
| DataStore.current |
Return the current topic (as an object). | ||
| app.find_topic(key) |
Find and open the top-level topic named by "key" (which may be a string or regex). If there is more than one, an exception is raised. | ||
| app.find_topics(key) |
Find every top-level topic named by "key" (which may be a string or regex). An array is returned. | ||
| app.find_topic!(key) |
Find and open a topic named by "key" (which may be a string or regex). If there is more than one, the first will be used. The entire tree is searched. | ||
| app.find_topics!(key) |
Find every topic named by "key" (which may be a string or regex). An array is returned. The entire tree is searched. | ||
| app.new_topic(topic_name) |
Create a new top-level topic. A Topic object is returned, to which you may add subtopics and notes. | ||
| topic.new_topic(topic_name) |
Create a new subtopic under topic. A Topic object is returned, to which you may add other subtopics and notes. | ||
| topic.new_note(title,contents) |
Create a new note under topic, with the given title and contents. A Note object is returned. | ||
| note.metadata.title = str |
Change the title of a note. Any other piece of metadata may be accessed, changed, or added on the fly in the same way. | ||
| topic.notes |
A list of Note objects for the specified topic. |