Если у вас все еще есть проблема No such interface 'org.freedesktop.Secret.Collection' on object at path /org/freedesktop/secrets/collection/login, проверьте:
https://wiki.archlinux.org/index.php/GNOME/Keyring
Если вы используете консольный вход, убедитесь, что у вас есть обе команды PAM и .xinitrc. У меня обе команды работают на i3.
Если мы настаиваем на том, чтобы поступать неправильно™
#compdef vc
declare -a cheatsheets
cheatsheets=(${(f)"$(ls ~/.cheat/)"})
_arguments '1:cheatsheets:(${cheatsheets})' && return 0
Фу! Это, конечно, сломается, если имя файла содержит новую строку, так как (f)
разбивается на них. Синтаксический анализ ls
в любом случае плохая идея; ZSH может помещать файлы прямо в массив:
% mkdir ~/.lojban
% touch ~/.lojban/{go\'i,na\ go\'i}
% words=(~/.lojban/*)
% print -l ${words:t}
go'i
na go'i
% words=(~/.lojban/*(On))
% print -l ${words:t}
na go'i
go'i
%
Но нам, вероятно, не нужен локальный массив; _files
может завершаться на глобусе:
#compdef vc
_arguments '1:cheatsheets:_files -g "~/.cheat/*"' && return 0
Это возвращает полные пути к файлам; если требуется только голое имя файла из каталога поиска, мы можем вместо этого использовать:
#compdef vc
_arguments '1:cheatsheets:_files -W ~/.cheat' && return 0