如何在 Yad 中获得 Zenity 功能?

如何在 Yad 中获得 Zenity 功能?

我的文件夹中有以下二十六个文件:

$ 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

并首先获取此接口:

Zenity 列表

如果我想选择列表下方的文件,比如说,r.txt我按下r,然后r.txt就被选中了。

Zenity 显示选择

但是,如果我使用 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

搜索栏.gif

相关内容