You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux下如何将两个获取GNOME窗口信息的gdbus命令合并为一个

合并单命令实现方案

你可以直接把所有逻辑收拢到单次gdbus调用的JS执行逻辑中,无需多次重复请求GNOME Shell接口,最终命令如下:

gdbus call -e -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval 'let focusWin = global.get_window_actors().find(act => act.meta_window.has_focus()).get_meta_window(); focusWin.get_title() + "||" + focusWin.get_wm_class()' | cut -d '"' -f 2

实现说明

  • 原命令存在冗余:共执行4次gdbus请求(2次查询聚焦窗口索引、2次分别查询窗口属性),新方案仅执行1次gdbus请求,执行效率更高。
  • 核心逻辑:在传入org.gnome.Shell.Eval的JS代码中直接完成「查找聚焦窗口→同时取两个属性→自定义分隔符拼接返回」全流程,外层仅需一次字符串切割即可拿到结果。
  • 默认输出格式为窗口标题||程序名称,选择||作为分隔符是因为窗口标题与程序名称字段几乎不会出现该组合,不会产生拆分冲突,你也可以自行替换为其他罕见分隔符。

可选:直接输出格式化后的两个结果

如果需要直接分开输出两个字段,可以追加awk处理逻辑:

gdbus call -e -d org.gnome.Shell -o /org/gnome/Shell -m org.gnome.Shell.Eval 'let focusWin = global.get_window_actors().find(act => act.meta_window.has_focus()).get_meta_window(); focusWin.get_title() + "||" + focusWin.get_wm_class()' | cut -d '"' -f 2 | awk -F '\\|\\|' '{print "窗口标题:"$1"\n程序名称:"$2}'

内容的提问来源于stack exchange,提问作者Silve2611

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:54:05