dmenu
dmenu 是一个快速轻量级的 X 动态菜单。它从标准输入读取任意文本,并为每一行创建一个菜单项。用户可以通过箭头键或输入部分名称来选择一个项目,该行将被打印到标准输出。dmenu_run 是 dmenu 分发版附带的一个包装器,允许将其用作应用程序启动器。
安装
存在各种打补丁的变体,它们扩展了 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 获取输入
在脚本中(例如从快捷方式启动),有时需要获取用户输入。我们可以通过向 dmenu 传递 EOF 来实现此目的:选择字段将为空,dmenu 可以获取用户输入。
由于读取 /dev/null 会返回 EOF,这可以通过以下命令简单地完成:
$ dmenu < /dev/null
嵌入到当前终端
dmenu 可以使用 -w id 选项嵌入到任何窗口中。
要将其嵌入到当前活动窗口中(例如,它正在运行的终端),请使用 xdo 获取其 id。
$ echo hello | dmenu -w $(xdo id)
故障排除
无 locale 支持
运行 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 Hacking thread – Arch Linux 论坛中的 dmenu 黑客讨论串。可以在 dmenu_scripts collection 中找到脚本概述。