1. Lorenzo Gil Sánchez
  2. gabi




gabi stands for Google Address Book Importer but it can also means Google Address Book Immediately or Google Address Book for paranoid Idiots


gabi's algorithm is quite simple:

  1. Download contacts from Google Contacts
  2. Save them into a file in json format
  3. Perform a query
  4. Output the query results

Step 1 is smart enough to only download those contacts that have changed since the last invocation.

For step 3 you should pass some query args to the command line. The query is performed as the OR of all query args. A query arg can be a simple string or a string with a ':' character. If a single string is used that text is matched in every attribute of a contact except for the id. If a ':' is found in the query arg, it is used to split the attribute name and the value to match. In this case only that attribute will be searched.

Right now only step 4 is flexible enough to allow the user to choose from different output formats. Supported formats include simple, json and mutt. In the future other steps are expected to be more configurable.

Mutt integration

Just edit your .muttrc file and add a line like this:

set query_command = "/usr/bin/gabi --user=your_google_email --password=your_password --store=/home/user/contacts.json --output-type=mutt '%s'"

Now you will be able to search your Google Contacts from Mutt.

Password for Google acccount

There are 3 different ways to input the password that is used to authenticate your Google account:

  1. Use the --password command line option
  2. Fetch the password from the GNOME keyring
  3. Enter the password interactively

These options are tried in that order. The second one, GNOME keyring, is only used if you have that software installed in your system and its daemon is running. If no password for gabi is found in the GNOME keyring, it will ask the user to enter one and it will save it on the GNOME keyring.

Future plans

  • remove deleted contacts from Google Contacts in the store file.
  • add a store backend for mongo db
  • if no query args are given output all contacts