id = "khard" name = "khard" homepage = "https://khard.readthedocs.io/" description = "A console carddav client for address book management." executables = ["khard"] [dotfiles] # https://khard.readthedocs.io/en/stable/man/khard.conf.html — the upstream # manual says khard looks up this INI-like file at # $XDG_CONFIG_HOME/khard/khard.conf, falling back to ~/.config/khard/khard.conf. paths = ["[configHome]/khard/khard.conf"] exclude = [] secret = [] side_effect = false [commands] format = 1 label = "List contacts" description = "List contacts from your address books, optionally filtered by search terms and sorted. Showing, creating, editing and the other subcommands are left out." quality = "ai-draft" parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false } [[commands.source]] id = "src" kind = "help" url = "https://github.com/lucc/khard/blob/master/khard/cli.py" revision = "master 2026-10" evidence = """ "-a", "--addressbook" Specify one or several comma separated address book names to narrow the list of contacts "-d", "--display", choices=("first_name", "last_name", "formatted_name") "-g", "--group-by-addressbook" Group contact table by address book "-r", "--reverse" Reverse order of contact table "-s", "--sort", choices=("first_name", "last_name", "formatted_name") "search_terms", nargs="*", metavar="search terms" "-p", "--parsable" Machine readable format: uid\tcontact_name\taddress_book_name list_parser = subparsers.add_parser("list", description="list all (selected) contacts") Long options: --addressbook --display --group-by-addressbook --reverse --sort --parsable """ [[commands.subcommand]] path = ["list"] label = "List contacts" [[commands.subcommand.source]] id = "src" kind = "help" url = "https://github.com/lucc/khard/blob/master/khard/cli.py" revision = "master 2026-10" evidence = """ "-a", "--addressbook" Specify one or several comma separated address book names to narrow the list of contacts "-d", "--display", choices=("first_name", "last_name", "formatted_name") "-g", "--group-by-addressbook" Group contact table by address book "-r", "--reverse" Reverse order of contact table "-s", "--sort", choices=("first_name", "last_name", "formatted_name") "search_terms", nargs="*", metavar="search terms" "-p", "--parsable" Machine readable format: uid\tcontact_name\taddress_book_name list_parser = subparsers.add_parser("list", description="list all (selected) contacts") Long options: --addressbook --display --group-by-addressbook --reverse --sort --parsable """ [[commands.subcommand.field]] id = "search_terms" label = "Search terms" description = "Leave empty to list everything." type = "string" position = 0 multiple = true sources = ["src"] [[commands.subcommand.field]] id = "addressbook" label = "Address books" description = "Comma separated names." type = "string" option = ["--addressbook", "-a"] sources = ["src"] [[commands.subcommand.field]] id = "sort" label = "Sort by" type = "enum" option = ["--sort", "-s"] choices = [{ value = "first_name", label = "First name" }, { value = "last_name", label = "Last name" }, { value = "formatted_name", label = "Formatted name" }] sources = ["src"] [[commands.subcommand.field]] id = "display" label = "Display names by" type = "enum" option = ["--display", "-d"] choices = [{ value = "first_name", label = "First name" }, { value = "last_name", label = "Last name" }, { value = "formatted_name", label = "Formatted name" }] sources = ["src"] [[commands.subcommand.field]] id = "group" label = "Group by address book" type = "boolean" option = ["--group-by-addressbook", "-g"] sources = ["src"] [[commands.subcommand.field]] id = "reverse" label = "Reverse order" type = "boolean" option = ["--reverse", "-r"] sources = ["src"] [[commands.subcommand.field]] id = "parsable" label = "Machine readable output" type = "boolean" option = ["--parsable", "-p"] sources = ["src"] [[commands.subcommand.task]] id = "search" label = "Find contacts" fields = ["search_terms", "addressbook"] required = ["search_terms"] [[commands.subcommand.group]] id = "basic" label = "Basic" fields = ["search_terms", "addressbook", "sort"] [[commands.subcommand.group]] id = "advanced" label = "Advanced" fields = ["display", "group", "reverse", "parsable"]