命令行创建ColorManager设备对象成功后消失的问题咨询
问题分析与解决
你遇到的问题核心是命令行创建设备时缺少关键属性,以及部分命令存在格式错误,导致ColorManager创建的临时设备被自动清理,或者参数不合法。
1. 核心原因:缺少Persistent属性
ColorManager创建的设备如果未设置Persistent属性为"true",默认属于临时设备,会在守护进程重启或自动清理时被移除。而d-feet可能默认添加了该属性,所以创建的设备能持久保留。
2. 各命令的修正方案
dbus-send命令修正
原命令缺少Persistent属性,添加后即可让设备持久化:
dbus-send --system --print-reply --type=method_call --dest=org.freedesktop.ColorManager /org/freedesktop/ColorManager org.freedesktop.ColorManager.CreateDevice string:"MyMonitor" string:"temp" dict:string:string:"Colorspace","RGB","Kind","display","Persistent","true"
busctl命令修正
- 修正拼写错误
mymoniotr为mymonitor - 添加
Persistent属性,并更新键值对计数为3
busctl call --system org.freedesktop.ColorManager /org/freedesktop/ColorManager org.freedesktop.ColorManager.CreateDevice ssa{ss} "mymonitor" "temp" 3 "Colorspace" "RGB" "Kind" "display" "Persistent" "true"
注:命令中的数字3对应后续的3组键值对,必须和实际键值数量匹配。
gdbus命令修正
- 参数不能用逗号分隔,需改为空格分隔
- 确保字典格式正确,添加
Persistent属性
gdbus call --system --dest org.freedesktop.ColorManager --object-path /org/freedesktop/ColorManager --method org.freedesktop.ColorManager.CreateDevice "mymonitor" "temp" '{"Colorspace": "RGB", "Kind": "display", "Persistent": "true"}'
3. 验证方法
执行修正后的命令后,可通过以下命令查看设备是否存在:
busctl tree org.freedesktop.ColorManager
也可以直接用d-feet查看/org/freedesktop/ColorManager下的子对象。
内容的提问来源于stack exchange,提问作者franky99
相关产品推荐
相关产品推荐

