我的文件夹中有以下二十六个文件:
$ ls
a.txt c.txt e.txt g.txt i.txt k.txt m.txt o.txt q.txt s.txt u.txt w.txt y.txt
b.txt d.txt f.txt h.txt j.txt l.txt n.txt p.txt r.txt t.txt v.txt x.txt z.txt
$
我可以像这样使用 Zenity:
zenity --list --title=Test --width=275 --height=400 --column="File names" *.txt
并首先获取此接口:
如果我想选择列表下方的文件,比如说,r.txt
我按下r,然后r.txt
就被选中了。
但是,如果我使用 Yad 而不是 Zenity,如下所示:
yad --list --title=Test --width=275 --height=400 --column="File names" *.txt
按r没有任何反应。我必须使用箭头键滚动列表,直到找到r.txt
。
我的理解是 Yad 比 Zenity 具有更多功能。那么有没有办法让 Yad 实现 Zenity 的功能呢?
(使用 18.04 和 19.10 中的 Yad 和 Zenity 存储库版本进行测试。)
答案1
为了学习,yad
我发现了这个很好的参考资料:YAD - Smokey01.com
正如评论中提到的,您想使用该选项--search-column=N
以下面的代码片段为例:
while true ; do
local Selected INSTRUCTIONS
INSTRUCTIONS="Click Icon to move and press Enter"
Selected=$(yad --list --radiolist \
--image="$ICON" --window-icon="$ICON" \
--margins=10 --no-click --search-column=4 \
--title="$TITLE" "${GEOMETRY[@]}" \
--text="<big><b>$TEXT</b></big> - $INSTRUCTIONS" \
--column "Select" \
--column "Order" \
--column "Icon Type:HD" \
--column "Icon name" \
--column "Linkless name:HD" \
--column "Modified date" \
--column "Col Pos:NUM" \
--column "Row Pos:NUM" \
--button="_Alpha Sort:$ButnAlpha" \
--button="_Linkless Sort:$ButnLinkless" \
--button="_Oldest Date:$ButnOldest" \
--button="_Newest Date:$ButnNewest" \
--button="_Test:$ButnTest" \
--button="_Apply:$ButnApply" \
--button="_Cancel:$ButnCancel" \
"${IconsArr[@]}")
Retn="$?"
列 #3 和 #5 被隐藏,但仍被计算在内。我们想搜索图标名称,因此它是列 #4,如下所记录:
--margins=10 --no-click --search-column=4 \
下面的短片.gif
展示了我们打字时发生的情况:
- aBackspace,,,,,,,(然后gifb循环)BackspacecBackspacee