首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按标签标题识别gnome-终端窗口

按标签标题识别gnome-终端窗口
EN

Stack Overflow用户
提问于 2018-10-28 10:44:01
回答 1查看 465关注 0票数 2

假设如下:

  • 我有多个gnome终端窗口打开
  • 每个窗口都打开多个选项卡。

我知道我在vim的某个地方打开了".bashrc“文件。因此,在gnome终端窗口中有一个标题为".bashrc (~) - VIM“的选项卡。此选项卡可能是窗口中的活动选项卡,也可能不是活动选项卡。

是否有任何方法来识别gnome终端窗口,该窗口持有该选项卡并切换到它(最好激活选项卡)?

更一般的:

有什么方法可以通过其中一个标签的标题来识别和激活gnome终端窗口吗?

或者:

是否有任何方法来识别和激活gnome终端窗口,通过当前在其选项卡上执行的程序?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-13 08:55:42

重新审视这个问题,我找到了一个解决方案(或黑客)来得到我想要的东西。Gnome终端实现了org.gnome.Shell.SearchProvider2总线接口。此接口可用于搜索与给定项匹配的终端选项卡。通过使用空字符串作为搜索项,将匹配所有终端选项卡并返回ids。有了这个it,就可以获得标签的名称(又名)。

我黑了下面的脚本来收集信息,并使用fzf来选择我要寻找的选项卡。而不是激活这个选项卡。

代码语言:javascript
运行
复制
#!/bin/bash

# get UUIDs of all gnome-terminal tabs
get_term_ids()
{
    # Call search with empty string ... will match all
    dbus-send --session --dest=org.gnome.Terminal --print-reply=literal \
        /org/gnome/Terminal/SearchProvider \
        org.gnome.Shell.SearchProvider2.GetInitialResultSet \
        array:string:"" \
        | tail -n 1 | sed 's/^  *//;s/ *]$//;s/  */,/g'
}

# get "uuid term-title" list
get_term_titles()
{
    ids="$(get_term_ids)"
    dbus-send --session --dest=org.gnome.Terminal  --print-reply=literal \
        /org/gnome/Terminal/SearchProvider \
        org.gnome.Shell.SearchProvider2.GetResultMetas \
        array:string:${ids%,} \
        | grep '^ *\(id\|name\) ' \
        | sed -e '/^  *id /{N;s/^ *id  *variant *\([^ ]*\) *)\n/\1/}' \
        -e 's/  *name  *variant  */ /;s/  *)$//'
}

# activate a term identified via uuid
activate_term()
{
    dbus-send --session  --dest=org.gnome.Terminal  --print-reply \
        /org/gnome/Terminal/SearchProvider \
        org.gnome.Shell.SearchProvider2.ActivateResult \
        string:$1 array:string:'' uint32:0 >/dev/null
}

result="$(get_term_titles | fzf --with-nth 2..)"
if [ -z "$result" ]; then
    exit 1
fi

activate_term "${result%% *}"
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53030612

复制
相关文章

相似问题

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