跳转至内容

dmenu

来自 ArchWiki

dmenu 是一个快速轻量级的 X 动态菜单。它从标准输入读取任意文本,并为每一行创建一个菜单项。用户可以通过箭头键或输入部分名称来选择一个项目,该行将被打印到标准输出。dmenu_run 是 dmenu 分发版附带的一个包装器,允许将其用作应用程序启动器。

安装

安装 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

参见

© . This site is unofficial and not affiliated with Arch Linux.

Content is available under GNU Free Documentation License 1.3 or later unless otherwise noted.