多亏了ghq,我做了一个简单的自定义脚本来在vscode上快速打开一个项目:
selection=$(ghq list | rofi -dmenu -p "Project" -no-custom)
[[ ! -z "${selection}" ]] && code ${HOME}/p/${selection}
exit 0我在i3配置上绑定了它:
bindsym $mod+d exec --no-startup-id rofi -show combi
bindsym $mod+p exec --no-startup-id ~/.config/rofi/project.sh它就像一种护身符。然而,我想让它成为组合模式的一部分,以便只有一个快捷方式。
我如何才能做到这一点?
如果使用rofi不能做到这一点,那么类似的工具允许这样做吗?
发布于 2020-02-03 03:05:20
可以通过将脚本添加到~/.config/ rofi /config.rasi中的rofi配置中来实现:
configuration {
combi-modi: "window,drun,ssh,Project:~/.config/rofi/project.sh";
modi: "combi";
}然后,您需要修改您的脚本,以便在未提供参数时返回项目列表,并在脚本启动时以项目名称作为参数打开一个项目:
#!/usr/bin/env sh
# List projects if no arguments given
if [ -z "$1" ]; then
ghq list
else
code "$HOME/p/$1"
fi现在,rofi -show combi应该会打开一个默认的组合mode+project启动器。
顺便说一下,我不确定是否需要脚本末尾的exit 0。它使脚本始终返回成功状态,无论所用命令的退出状态如何。请参阅答案here。
发布于 2020-12-25 01:13:23
在我的例子中,我尝试了一个简单的rofi文件查找器脚本。
起初,我的尝试是:
fd -H . ~ | rofi -dmenu | xargs xdg-open > /dev/null 2>&1 &从命令行调用脚本效果很好,但当我在rofi内部尝试时,却不起作用。我当然不能打电话给rofi indide rofi
根据Cezary给出的想法,我得到了这样的结论:
#!/bin/bash
if [[ -z "$1" ]]; then
fd -H . ~
else
xdg-open "$1" > /dev/null 2>&1 &
fi事实证明,de > /dev/null 2>&1 &很重要,所以它不会冻结整个事情。也许只有最后的"&“才是重要的,所以这个过程会转到后台去?其余的,据我所知,只是丢弃任何输出或错误。
在我来自rofi的"config.rasi“中,我有这样一句话
modi: "drun,Finder:/path/to/script";因为我想把它作为第二种模式,而不是组合模式。当然,我使用chmod +x使其可执行。
https://stackoverflow.com/questions/57609950
复制相似问题