diff --git a/apt-cyg b/apt-cyg
index 84a2d5f..f6de89e 100755
--- a/apt-cyg
+++ b/apt-cyg
@@ -75,6 +75,9 @@ OPERATIONS
     This will search each package in the master package list (setup.ini) for
     names that match regexp.
 
+  listcategories
+    List all package categories.
+
   category
     Display all packages that are members of a named category.
 
@@ -239,6 +242,11 @@ function apt-listall {
   done
 }
 
+function apt-listcategories {
+  find-workspace
+  grep '^category: ' setup.ini | cut -c 11- | sort -u
+}
+
 function apt-listfiles {
   check-packages
   find-workspace
@@ -643,7 +651,7 @@ do
       shift
     ;;
 
-    list | cache  | remove | depends | listall  | download | listfiles |\
+    list | cache  | remove | depends | listall  | download | listfiles | listcategories |\
     show | mirror | search | install | category | rdepends | searchall )
       if [[ $command ]]
       then
diff --git a/readme.md b/readme.md
index 5b44a03..f8dbc30 100644
--- a/readme.md
+++ b/readme.md
@@ -43,6 +43,9 @@ listall
   This will search each package in the master package list (setup.ini) for
   names that match regexp.
 
+listcategories
+  List all package categories.
+
 category
   Display all packages that are members of a named category.