For 7 years I've used cbb (formerly on SourceForge) for tracking expenses. It was written by Curt Olson starting in 1994, and since then Curt has been heavily involved with FlightGear; there's even an old version on the FlightGear web server.
The last released version was 0.9.5, in 2004, which not many people seem to have adopted, and which seems to have been abandoned after the first upload. The last commonly used version was 0.8.1, released around 2000, (including Y2K fixes) which was once packaged in Debian but eventually removed around 2005. Since then I've been using a package that I rebuilt on Debian and Ubuntu from the old source. (As have others.)
Since I've moved to Mac OS X (10.6) for my desktop environment I also wanted to move CBB over to use in my new desktop. It is written in Tcl/Tk, with some addons written in Perl. MacPorts includes TCL 8.5.7 and Tk 8.5.7 (and appears to use TCL for portfiles), and Perl is both in the base OS X and in Macports so the basic dependencies are covered. (I had previously had problems with TCL 8.4, but it appears that whatever caused those issues it isn't a problem with TCL 8.5 on OS X.) However CBB wasn't packaged.
To get up and going quickly I took the CBB 0.8.1 original source
from the Debian package I've been using, and applied the Debian
diff I'd been using -- removing the bits that were Debian specific
from it. After fixing cbb.in
to allow substituting
in the path for wish
(the Tcl/Tk front end) and a bit
of testing which highlighted a font problem and an error with
tkEntrySetCursor
(debian bug #249610
which suggests another fix), I arrived at the following build process
for a local, unpackaged, install (links to cached copies of source
and diff):
tar -xzf cbb_0.8.1.orig.tar.gz
patch -p0 <cbb-base-os-x.diff
cd cbb-0.8.1
./configure --prefix=/usr/local/package/cbb
make
make install
It can then be run as /usr/local/package/cbb/bin/cbb
. (A
long path, but I've run CBB through a shell script wrapper for years so
the exact path to the binary isn't a problem.)
The diff makes "European" dates the default (rather than the
mid-endian USA dates), and changes the default fixed-width font to
be "Terminal 10" (using the new Tcl/Tk font
matcing; font
tutorial, and reference
documentation).
(Without a fixed width font the main account display is very poorly
laid out, and for some reason the CBB default of "8x13" was no
longer matching anything and hence defaulting to a large font. I
found "Terminal 10" by using the example in the reference manual,
a Tcl/Tk font chooser example
program, and a bit of experimentation -- "Terminal" itself was
rather too large, but "Terminal 10" is approximately 10 point and
works fairly well for the account information.) Both the date
format and fonts can be overridden in ~/.cbbrc.tcl
,
and the date format can be changed in the preferences menu. It
also adds a definition of tkEntrySetCursor created by Marcus A P
Capral so that tab
completion works without errors. (It appears tkEntrySetCursor was
an internal Tk function made
private
several years ago.)
Other than that issue, all the functionality that I've been using previously appears to still work, including various reports. My plan is to change my wrapper scripts to use git as a simple means of keeping backups of the files, just in case there are any software issues. But it looks promising at this point.
ETA: git setup:
cd $CBBDATADIR
git init-db
git add *.cbb alltxns.log categories
(echo "#Ignore all CBB backup files"; echo "*.cbb") >.gitignore
git commit -m 'CBB data for ACCOUNTS copied from SOURCE'
and wrapper script
#! /bin/sh
# Run cbb (cheque book balancer)
#
# Changes are committed to the git database in the same directory if
# something other than the generic transaction log is modified (ie,
# if there was an actual transaction change)
#
PATH="/usr/local/package/cbb/bin/:$PATH"
cd $CBBDATADIR && (
cbb cash.cbb
if git status 2>&1 | grep modified | grep -qv alltxns.log; then
git commit -a -q \
-m "Updated with transactions entered `date '+%Y-%m-%d %H:%M:%S'`"
fi
)
The wrapper script will auto-commit to the GIT backup if there are any substantial changes, but not if the only changes is the log saying that we opened CBB.
ETA 2: Unfortunately with the newer Tk and/or running on OS X 10.6, remotely displaying on OS X 10.5 (through ssh X11 tunnelling) didn't work with the config used above, because none of the fonts were found. After some experimentation, I used the Tk Standard Fonts which are (now) guaranteed to exist on all platforms, changing the fonts to be:
# Based on Tk standardised fonts, described here:
# http://www.tkdocs.com/tutorial/fonts.html
set cbb(msg_text_font) "TkIconFont"
set cbb(button_font) "TkCaptionFont"
set cbb(fixed_header_font) "TkFixedFont"
set cbb(fixed_font) "TkFixedFont"
set cbb(status_line_font) "TkMenuFont"
set cbb(menu_font) "TkMenuFont"
set cbb(dialog_font) "TkTextFont"
set cbb(default_font) "TkDefaultFont"
This displays quite well both on the local display (10.6) and on
the remote display (10.5). For now I've just manually put these
in ~/.cbbrc.tcl
but it would be fairly easy to change
the build to make these the application defaults. Given a recent
enough Tk (8.4 or 8.5 I think) it should then work on any platform.