首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合模式下的Rofi自定义脚本

组合模式下的Rofi自定义脚本
EN

Stack Overflow用户
提问于 2019-08-22 21:00:34
回答 2查看 1.9K关注 0票数 4

多亏了ghq,我做了一个简单的自定义脚本来在vscode上快速打开一个项目:

代码语言:javascript
复制
selection=$(ghq list | rofi -dmenu -p "Project" -no-custom)

[[ ! -z "${selection}" ]] && code ${HOME}/p/${selection}

exit 0

我在i3配置上绑定了它:

代码语言:javascript
复制
bindsym $mod+d exec --no-startup-id rofi -show combi
bindsym $mod+p exec --no-startup-id ~/.config/rofi/project.sh

它就像一种护身符。然而,我想让它成为组合模式的一部分,以便只有一个快捷方式。

我如何才能做到这一点?

如果使用rofi不能做到这一点,那么类似的工具允许这样做吗?

EN

回答 2

Stack Overflow用户

发布于 2020-02-03 03:05:20

可以通过将脚本添加到~/.config/ rofi /config.rasi中的rofi配置中来实现:

代码语言:javascript
复制
configuration {
    combi-modi: "window,drun,ssh,Project:~/.config/rofi/project.sh";
    modi: "combi";
}

然后,您需要修改您的脚本,以便在未提供参数时返回项目列表,并在脚本启动时以项目名称作为参数打开一个项目:

代码语言:javascript
复制
#!/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

票数 3
EN

Stack Overflow用户

发布于 2020-12-25 01:13:23

在我的例子中,我尝试了一个简单的rofi文件查找器脚本。

起初,我的尝试是:

代码语言:javascript
复制
fd -H . ~ | rofi -dmenu | xargs xdg-open > /dev/null 2>&1 &

从命令行调用脚本效果很好,但当我在rofi内部尝试时,却不起作用。我当然不能打电话给rofi indide rofi

根据Cezary给出的想法,我得到了这样的结论:

代码语言:javascript
复制
#!/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“中,我有这样一句话

代码语言:javascript
复制
modi: "drun,Finder:/path/to/script";

因为我想把它作为第二种模式,而不是组合模式。当然,我使用chmod +x使其可执行。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57609950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档