diff --git a/completions/xrandr b/completions/xrandr
index 2b6da2ceb08..9e4d3d5e585 100644
--- a/completions/xrandr
+++ b/completions/xrandr
@@ -149,9 +149,9 @@ _comp_cmd_xrandr()
     if ((cword >= 3)); then
         case "${words[cword - 3]}" in
             --setmonitor)
-                _comp_cmd_xrandr__compgen_outputs "$1"
-                _comp_compgen -a -- -W "none"
-                # TODO: the third argument is actually a comma-separated list
+                _comp_compgen -c "${cur##*,}" -i xrandr outputs "$1"
+                _comp_compgen -ac "${cur##*,}" -- -W "none"
+                _comp_delimited , -W '"${COMPREPLY[@]}"'
                 return
                 ;;
         esac