Larry Kollar edited this page Oct 16, 2017 · 17 revisions


Tines is an outliner, a planner, an organizer, and a notebook. The user interface is very flexible and easy to customize. It is based on the old hnb (hierarchical notebook) software, originally written and maintained by Øyvind Koläs. Larry Kollar ( currently maintains Tines. The current version is 1.11.1.

You can use Tines for:

  • Outlining: Brainstorm stories, documents, and blog posts. Create outlines from scratch or import OPML files from other outliners or mind-mapping software, export OPML, HTML, Markdown, and a variety of other formats to continue your work. Use the alternate OPML-specific mode to default to OPML. Mark entries as text or notes to distinguish them from headings.
  • Planning: Keep your calendar and to-do lists together, and jump to today’s agenda at the drop of a menu selection.
  • Organizing: Your calendar, outlines, project notes, all in one place.
  • Note keeping: Whether it's research notes for your next paper or book, ideas for your patio, or payment info you access constantly, Tines can help you keep it together. Open URLs and email addresses with a keystroke. Search, sort, and even randomize items.

If you want Tines to do things a different way, you're in control. A single text file defines all the keystrokes and menus. Customize Tines to make it work just how you like.

A more powerful way to use Tines is to keep all your working outlines, project notes, and calendar entries in a single file. If you do not specify a file name when starting Tines, it uses .tines in your home directory.

How Do I…

…open a file besides the default .tines file?
At the shell prompt, type tines [file] to open a file in the default hnb format.

To open an OPML file, type tines --opml [file]. Alternatively, use the topml shell script to open an OPML file and use a special set of menus.

…export only part of an outline?
Move to the entry you want to export, press Esc to bring up the menu, then select Export Branch from the File menu. Then follow the directions.

…move stuff around?
To promote or demote an entry (and any on the same level that follow it), press < or >.

To move an entry (and its sub-entries, if any) up or down within the same level, press Shift-up or Shift-down (this doesn't work on all keyboards). To move an entry anywhere in the outline, press Ctrl+G (Grab). Use the arrow keys to move the entry, and press Return to finish (or Esc to cancel).

…hide or see parts of an outline?
To expose the next level of sub-entries, move to the entry and press +. This may not expose "grandchildren" entries.

To hide sub-entries, press -.

To expand or hide all sub-entries, press Esc to open the menu, move to the Entry menu, and select Expand Subtree or Collapse Subtree.

To expand the entire outline, press Esc to open the menu, move to the Entry menu, and select Expand All.

…differentiate between heading and text entries?
To toggle an entry between text and normal modes, press F3. Text entries have a "t" next to the bullet.

…set up a to-do list?
To make an entry a to-do item, press Ctrl+T. To-do items have a checkbox in place of a bullet. Press Ctrl+T again to remove the checkbox.

To mark a to-do entry as done, press Ctrl+D.

The Planner menu has pre-defined checklists.

…set up a tickler file?
Move to the place you want to put the tickler, usually under the Planner entry at the top, and select Add Year from the Planner menu. Tines prompts you for the year, then you should see a "year Calendar" entry with months and days as sub-entries.

Add reminders, events, and similar info under the day you want. To check your day's entry, select Today's Agenda from the Planner menu. You can also do this as a shell command:

tines -e 'today' 'go right' 'ls'

You could set this up as a daily cron job to send your agenda to your email.

…set up a time tracker?
Move to the place you want to put the tracker (you might want to create an entry under the Planner entry). Press F5 to open the command line, and type:

insert_cal month year -t

Where month is 1-12, and year is the four-digit year. This creates a single monthly entry; the -t option adds hourly entries under each day.

…get my outline into Scrivener?
First, export your outline (or the branch you want) as OPML. Open or create a Scrivener project, then select Import -> Files from the File menu. Navigate to your exported OPML file and open it. Scrivener adds the outline to your project, one file per entry, preserving the hierarchy of your entries. If you have added _note attributes, that data appears in the synopsis (and optionally, as text).

If you want details, I wrote a couple of blog posts. See Tech Tuesday: Getting Your Outline into Scrivener (part 2) for a longer description.

Alternatively, you can open the File menu and use "Export->XSLT" to export as Markdown and import that into Tines. You may prefer this method if you have a lot of text entries, or plan to use Scrivener's MultiMarkdown facilities.

…get my outline into a word processor?
Again, export your outline (or the branch you want) as OPML or Markdown. Use the free Pandoc tool to convert to RTF, a format understood by most word processors.

…support Tines?
Instead of just tossing money my way, you could buy my books instead. The eBooks are cheap, free to $3, and you get something to read for your money! Write a nice review, if you like.

My blog (links to all stores):


When I started listing all the updates I wanted from hnb after fixing the 64-bit issue, I realized I'd need a more organized approach. Maybe I'll get a little help.

These items are in no particular order or priority. If you want to pick one up and do it, no matter where it is in the roadmap, that would be great. (I would particularly like to have UTF-8 support as soon as possible, but I'm not sure my coding skills are up to the job right now.)

There may be a segfault or two still lurking in lesser-used corners of the program. Reports are welcome, patches are cherished.

See the Changelog for things have have already been changed or fixed.

1.9.19 - 2.0:

  • finish renaming (.hnb to .tines, for example) (complete)
  • rewrite/expand the documentation ("complete" in that all current features have at least some documentation)
  • Planner menu (complete)
  • new "text" type to mark paragraphs (complete)
  • new command: export_branch (complete in 1.10 for XML-based formats. New commands are: export_hnb_branch, export_opml_branch, and export_xml_branch. The original export commands export everything on the current level, thus requiring new commands.)
  • new command: stop (put the process in the background) (complete in 1.10)
  • move, etc. into /usr/local/share/tines (complete in 1.10)
  • new command: insert_above (insert new node above current) (we have a working substitute for now, using key bindings - use Ctrl-B to insert above)
  • improved OPML support (preserving <head> elements) (complete in 1.11.0)
  • alternate rc file for OPML (for anyone who doesn't want to wait for 2.0) (complete)
  • Test cases (In progress)
  • automated test suite
  • UTF-8 friendly
  • new commands: add_int and add_str for user-defined variables
  • modify att_list to add an option for showing only attributes (not text)
  • new command: menu_toggle to toggle boolean variables
  • implement mouse support in curses
  • packages (OSX, deb, rpm)
  • new commands: alert (dialog box with OK button), choice (dialog box with two buttons), querybox (similar to query but using a text entry dialog)
  • new command: menu_toggle (toggle a variable and change the menu text to reflect current state)
  • --sharedir=dir option to override compiled default
  • fix ASCII export to actually support ascii_margin variable

2.0 - 3.0:

  • autoconf
  • code cleanup
  • replace XML code with xmllib
  • use OPML as the default file format, maintaining hnb as a legacy format
  • use XSLT as basis for all export activity

3.0 and beyond: (this is pie in the sky stuff)

  • Add Qt for optional GUI, maintaining console mode
  • (???) Complete rewrite, maybe as an interpreted language (for example, Perl/TK or Python/Qt)
You can’t perform that action at this time.
You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session.
Press h to open a hovercard with more details.