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

如何通过DBus命令获取Nemo文件管理器打开窗口及执行GetMachineID

Nemo窗口DBus操作解决方案

1. 统计已打开的Nemo窗口数量

通过DBus的Introspect接口获取/org/Nemo下的窗口节点并统计数量,以下是两种可行命令:

方法一(使用gdbus)

gdbus introspect --session --dest org.Nemo --object-path /org/Nemo | grep -E 'node "window/[0-9]+"' | wc -l

方法二(使用dbus-send)

dbus-send --session --type=method_call --print-reply=literal --dest=org.Nemo /org/Nemo org.freedesktop.DBus.Introspectable.Introspect | grep -o 'window/[0-9]*' | sort -u | wc -l

原理:调用org.freedesktop.DBus.Introspectable.Introspect方法获取节点结构,过滤出所有window/数字格式的子节点,最终统计数量。

2. 为每个Nemo窗口执行GetMachineID命令

遍历所有窗口的DBus路径,逐个调用GetMachineID方法,以下是两种实现方式:

方法一(使用dbus-send)

for window_path in $(gdbus introspect --session --dest org.Nemo --object-path /org/Nemo | grep -E 'node "window/[0-9]+"' | sed 's/node "\(window\/[0-9]\+\)"/\/org\/Nemo\/\1/'); do
    dbus-send --session --type=method_call --print-reply --dest=org.Nemo "$window_path" org.Nemo.Window.GetMachineID
done

方法二(使用gdbus)

for window_path in $(gdbus introspect --session --dest org.Nemo --object-path /org/Nemo | grep -E 'node "window/[0-9]+"' | sed 's/node "\(window\/[0-9]\+\)"/\/org\/Nemo\/\1/'); do
    gdbus call --session --dest org.Nemo --object-path "$window_path" --method org.Nemo.Window.GetMachineID
done

原理:先提取所有窗口的完整DBus路径,再通过循环对每个路径调用org.Nemo.Window.GetMachineID方法,返回对应窗口的MachineID。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 16:22:48