我想rofi
自动调整菜单的高度以适应可用选项的数量。有一个选项-lines
,但有了它我只能传递常数。因此,对于每个调用,我被迫执行命令两次 - 计算行数并显示菜单:
#!/usr/bin/sh
lines=$(my_command | wc -l)
my_command | rofi -dmenu -lines "$lines"
是否可以告诉rofi
将其菜单缩小到可用选项的数量?
答案1
您可以使用-no-fixed-num-lines
with-lines <as-many-as-would-fit-on-your-screen>
作为最大行数,以rofi
使大小适应要从中选择的项目数:
my_command | rofi -location 2 -lines 45 -yoffset 30 -dmenu -no-fixed-num-lines
或者您可以将命令的输出保存在临时文件中:
#! /bin/zsh -
function {
rofi -dmenu -lines $(( $(wc -l < $1) )) -input $1
} =(my_command)
这里使用 的zsh
命令=(...)
替换形式传递给匿名函数。