dmenu
dmenu 是一个快速且轻量级的 X 动态菜单。它从 stdin 读取任意文本,并为每一行创建一个菜单项。用户随后可以通过方向键或键入名称的一部分来选择一个项目,选中的行将被打印到 stdout。dmenu_run 是 dmenu 发行版附带的包装器,允许将其用作应用程序启动器。
安装
安装 dmenu 软件包,或者安装 dmenu-gitAUR 以获取开发版本。
存在各种修补过的变体,它们扩展了 dmenu 的默认功能。
你可以使用以下命令运行 dmenu
$ dmenu_run
配置
现在,你需要将 dmenu_run
命令绑定到一个按键组合。这可以通过你的窗口管理器或桌面环境配置来完成,或者使用像 xbindkeys 这样的程序。请参阅 Hotkeys 文章以获取更多信息。
显示自定义项目
自定义项目将通过使用换行符 (\n) 分隔并将它们通过管道传递给 dmenu 来显示。例如
$ echo -e "first\nsecond\nthird" | dmenu
手动添加项目
dmenu 将在你的 $PATH
中定义的目录中查找可执行文件。有关修改 $PATH
的信息,请参阅 环境变量。
字体
dmenu 可以使用 XFT 显示字体。以下示例将使用 ttf-droid 运行 dmenu
$ dmenu_run -fn 'Droid Sans Mono-9'
支持 shell 别名
dmenu 不支持 shell 别名。要让 dmenu 识别你的别名,请安装 dmenu-recent-aliases-gitAUR 软件包并运行 dmenu-recent-aliases
。你的别名必须在 ~/.bash_aliases
中才能被 dmenu-recent-aliases 识别。
支持历史记录
要按最近使用情况对命令进行排序,请将 dmenu_run_history 下载到你的 $PATH
并使用 dmenu_run_history
代替 dmenu_run
。
技巧与诀窍
在脚本中(例如从快捷方式启动),有时需要获取用户输入。我们可以为此使用 dmenu,方法是向其传递 EOF:选择字段将为空,dmenu 可以接收用户输入。
由于读取 /dev/null
将返回 EOF,因此可以通过以下命令简单地完成此操作
$ dmenu < /dev/null
嵌入到当前终端
dmenu 可以使用 -w id
选项嵌入到任何窗口中。
要将其嵌入到当前活动窗口中(例如,运行它的终端),请使用 xdo 获取其 ID
$ echo hello | dmenu -w $(xdo id)
故障排除
缺少本地化支持
运行 dmenu_run 会导致以下错误消息
$ dmenu_run
no locale support
确保环境变量 LANG
已正确设置。有关更多信息,请参阅:Locale#Troubleshooting
如果 dmenu 中缺少某些条目,则可能是缓存已损坏。删除它并重启 dmenu。
$ rm ~/.dmenu_cache $ rm ~/.cache/dmenu_run
请注意,很可能只有一个缓存文件,具体取决于是否设置了 $XDG_CACHE_HOME
。有关更多信息,请参阅 /usr/bin/dmenu_run
的内容。
环境变量
应用程序需要的环境变量应改为添加到 /etc/environment
中。
参见
- dmenu – dmenu 官方网站
- Dmenu 破解主题 – Arch Linux 论坛中的 dmenu 破解主题。dmenu_scripts 合集中提供了脚本概述。