CLI addressbook application for CardDAV servers written in Go

Matthias Debus via public-inbox

a month ago

Bradley M. Kuhn via public-inbox

a month ago


qcard is a CLI addressbook application for CardDAV servers written in Go. In contrast to other tools it does not cache anything. It can fetch multiple servers / addressbooks in parallel what makes it quite fast.

Its main purpose is displaying addressbook data. Nevertheless it supports basic creation and editing of entries.


  • Easy search for contacts
  • Parallel fetching of multiple addressbooks
  • Easy to use filters
  • Create, modify and delete contacts
  • Import VCF files
  • Display VCF files
  • Easy setup

#Installation / Configuration

  • Have Go installed
  • make && sudo make install (for MacOS: make darwin)
  • copy config-sample.json to ~/.config/qcard/config.json and modify accordingly

#Arch AUR package

  • Here: AUR
  • Copy config-sample.json from /usr/share/qcard/ to ~/.config/qcard/config.json and modify accordingly


  • For additional addressbooks just add a comma and new addressbook credentials in curly brackets.


Common options:

qcard -h

#Displaying addressbooks

This simply displays all contacts from all addressbooks:


This only shows contacts from addressbook 0:

qcard -a 0

This displays all avaliable addressbooks with their numbers and colors:

qcaŕd -l

This searches for contacts containing "doe" in all addressbooks:

qcard -s doe

The DetailThreshold parameter in the configuration file determines when all contact details are shown for a given numer of search results. For instance, on DetailThreshold = 3 you get all details if 3 or less contacts are found for the searchword "doe".

Here's a list of all attributes:

  • M: phoneCell
  • P: phoneHome
  • p: phoneWork
  • E: emailHome
  • e: emailWork
  • A: addressHome
  • a: addressWork
  • O: Organisation
  • B: Birthday
  • T: Title
  • R: Role
  • I: Nickname
  • n: Note

#Add new contact

This creates a contact for John Doe with a private mobile phone number and an email address in address book 1:

qcard -a 1 -n "John Doe M:+49 172 123123 E:jdoe@data.haus"

Just combine the parameters from above like you wish.

#Edit a contact

This shows searches for "doe" in addressbook 2 and prints the corresponding filenames ("fobarxyz.vcf"):

qcard -a 2 -s doe -f

This edits the selected vCard object in your $EDITOR (i.e. vim). When you save-quit the modified object is automatically uploaded:

qcard -c 2 -edit foobarxyz.vcf


#neomutt / other cli mail tools

To use qcard as your addressbook in neomutt, put the following in your neomuttrc:

set query_command= "qcard -s '%s' -emailonly"
bind editor <Tab> complete-query
bind editor ^T complete

#External password command

Instead of putting your password in the config file you can specify an external command to resolve your password. Put a line like this in your addressbook config and leave the "Password" field empty:

"PasswordCmd":"rbw get calendar-provider"


Questions? Ideas? File bugs and TODOs through the issue tracker or send an email to ~psic4t/qcard@todo.sr.ht