放一个修改出来的 com.deepin.pkexec.dde-dock-graphics-plugin.policy 参考一下
"-//freedesktop//DTD PolicyKit Policy Configuration 1.0//EN"
"http://www.freedesktop.org/standards/PolicyKit/1/policyconfig.dtd">
主要是 action id 应该是不能重复的,这个注意一下就行了。
icon_name 的话,只要是图标在 /usr/share/icons/对应主题 文件夹中,直接写文件名即可。如果不在的话可能可以写绝对路径?可以试试看。
前情提要:记得刚开始魔改显卡切换插件的时候,因为外部脚本调用的时候要用到 sudo,但是 QProcess 执行脚本怎么输入密码是个大问题。一开始暴力地使用 deepin-terminal -e 执行脚本,用终端输入密码。结果被 shenmo 吐槽丑陋的一比......
后来老老实实用了 pkexec,总算是能有个对话框输入密码了......然而显示的文字提示总是又臭又长,把脚本路径全显示了......无奈改成了 pkexec sh xxxxx.sh,虽然显示精简了,但是完全看不出来执行了什么了......(就像 vscode 修改只读文件提权的界面一样,只显示了 /bin/bash)
再后来琢磨怎么绕开文管以管理员身份编辑文件避免死机的时候,偷懒用了 zenity 对话框输入密码。但是吧,gtk 的界面还是不美观。纠结于 pkexec dde-file-manager 是怎么做到显示“查看文件夹需要输入密码”这种自定义文字的时候,翻了翻 linuxdeepin/dde-file-manager 的仓库,终于看到怎么实现的了......
官方仓库代码地址:https://github.com/linuxdeepin/dde-file-manager/blob/uos/dde-file-manager-lib/pkexec/com.deepin.pkexec.dde-file-manager.policy
下面开始整活儿~
大概能猜出就是这个文件让 pkexec 对话框显示了自定义文字。文管里大概搜索一下,在 /usr/share/polkit-1/actions 文件夹里找到了这个文件。然后怎么实验就很简单了,拿显卡切换插件的脚本举例,把文件位置,action id,icon_name和提示文字换成自己的,文件名一改,然后丢进去。然后见证奇迹就完事儿了......
这波啊,这波直接起飞~