I personally have difficulty with GUIs and with how every one of them seems to approach the same problem differenlty. Mastered point-and-click is not as useful as the CLI because it's generally less direct. (e.g. you slide your mouse up there on the menu, click to open it, slide down, click to choose the option, click on a field in the newly opened window, type in the new value, slide down and click on the OK button. whereas with CLI you type in your command and pass in your arguments for the new values, and you're done)
I love Tomboy for how simple it is and how you can sync notes with ssh and other methods. However, I personally don't like how note management is achieved. It is very easy for newcommers, but lets no room for power users to get faster / better.
So, I've built a CLI interface to Tomboy. I called it Scout (after being advised to change name from Tomtom -- which was a slang synonym for Tomboy. Scout comes from the character from "To kill a mockingbird". She's that tomboy girl that likes to pick up a fight with other students when they make fun of her father).
Everything is done through the D-Bus API exposed by Tomboy. Luckily, Gnote (a port of Tomboy to C++ that became an entirely separate project) exposes the same API functions; this means Scout supports Gnote, too!
State of the project
It still doesn't have enough features for me to ditch the GUI entirely (that's what I would call the 1.0 point), but most of it is there. My todo list includes note editing and note creation from the CLI, both with a CLI editor and with text piped in from other commands.
I must admit that I let that project unattended for way too long now, and I'm a bit ashamed of that.. But I intend in finishing the version 1.0 someday not too far in the future. Finding free time from work has been too rough in the last 2 years, though
Here's the current list of available features:
- list note titles with last modification date and a list of affected tags, possibly filtered by a couple of criterion like tags or book affected to notes, or by name
- display one or more notes
- search for a string in all or a subset of your notes.
- manage tags affected to notes. Tomboy has the ability to attach different tags to notes. This feature is not exposed in the GUI, but it's how books and templates are designated.
- delete one or more notes
Very small howto
Here are some examples of how to use Scout:
Listing notes
All notes:
$ scout list
2012-04-03 | bup (system:notebook:projects)
2012-03-20 | addressbook (system:notebook:pim)
2012-02-10 | TODO-list (system:notebook:reminders)
2012-02-06 | This Company - project-1 (system:notebook:thiscompany)
2012-01-30 | IPs Client 2
2012-01-24 | Client 2-TODO (system:notebook:client2, work)
2012-01-09 | home infra stuff
2011-09-22 | This Company-network ports (system:notebook:thiscompany, work)
2011-09-17 | This Company-Rack-checklist (system:notebook:thiscompany, work)
2011-09-17 | This Company (system:notebook:thiscompany, work)
2011-08-31 | Some client (system:notebook:someclient, work)
2011-08-06 | scout (system:notebook:projects)
2010-12-12 | Bash (system:notebook:reminders)
2010-12-12 | nutrition site (system:notebook:projects)
Only notes from one book:
$ scout list -b thiscompany
2012-02-06 | This Company - project-1 (system:notebook:thiscompany)
2011-09-22 | This Company-network ports (system:notebook:thiscompany, work)
2011-09-17 | This Company-Rack-checklist (system:notebook:thiscompany, work)
2011-09-17 | This Company (system:notebook:thiscompany, work)
Searching for content
Let's search for someone's phone number in the "pim" book:
$ scout search -b pim "Joe Bloe"
addressbook : 14 : Joe Bloe - 555-1234
addressbook : 15 : Joe Bloe (cell) - 555-9991
Tag management
There's a note up there in the full list that has "Client 2" in it's name but that isn't in the right book. Let's add the note to the book "client2":
$ scout tag --on-book client2 "IPs Client 2"
$ scout list -b client2
2012-01-30 | IPs Client 2 (system:notebook:client2)
2012-01-24 | Client 2-TODO (system:notebook:client2, work)
oh, wait. it is work, so we'll add the tag "work", too:
$ scout tag work "IPs Client 2"
$ scout list -t work
2012-01-30 | IPs Client 2 (system:notebook:client2, work)
2012-01-24 | Client 2-TODO (system:notebook:client2, work)
2011-09-22 | This Company-network ports (system:notebook:thiscompany, work)
2011-09-17 | This Company-Rack-checklist (system:notebook:thiscompany, work)
2011-09-17 | This Company (system:notebook:thiscompany, work)
2011-08-31 | Some client (system:notebook:someclient, work)
Contributing
Scout is licensed under the MIT license, so if you'd like to help me out with this project, I'd gladly accept any help (testing, bug reports, feature ideas, patches, critics). You can contact me on github via the project's issue tracker or via Tomboy's or Gnote's mailing lists.
hep, making tools interact makes them all more powerful. and harnessing the features of one app with output from another empowers users
there are already a couple of modules to synchronize notes to other locations. you can do so via a local directory (maybe to an external drive, or an NFS/CIFS share?), SSH, WebDav and via the online service named "Snowy" (which is what is used on Ubuntu Live for Tomboy notes sync)
But it could enable you to build new ways to sync really easily. Only thing with scout is that it doesn't really work well with Tomboy's formatting.