[DTK] 询问有关在 root 权限主题变样,显示有问题 Resolved
Tofloor
poster avatar
寂静的羽夏
deepin
2022-06-12 04:54
Author

在 root 模式下,效果成了这样子(主要体现系统自带的图标显示不全):

截图_WingHexExplorer_20220611204622.png

image.png

image.png

正常应该是样子:

image.png

深度文本编辑器是如何做到不管是否root但主题样式保持不变的?我看了半天代码没看出来。

Reply Favorite View the author
All Replies
whoam1
deepin
2022-06-12 05:14
#1

账户不一样,主题配置不一样

Reply View the author
Comments
寂静的羽夏
2022-06-12 05:25
二楼正解
忘记、过去
deepin
2022-06-12 05:23
#2
if (qgetenv("XDG_CURRENT_DESKTOP").toLower() != "deepin") {
    qputenv("XDG_CURRENT_DESKTOP", "Deepin");
}

这个加在 main.cpp 最前面就可以了

Reply View the author
Comments
寂静的羽夏
2022-06-12 05:28
感谢!!!
柚子
deepin
2022-06-12 09:45
#3
忘记、过去
if (qgetenv("XDG_CURRENT_DESKTOP").toLower() != "deepin") {
    qputenv("XDG_CURRENT_DESKTOP", "Deepin");
}

这个加在 main.cpp 最前面就可以了

啊这,这是deepin的锅吧,大小写错了

Reply View the author
忘记、过去
deepin
2022-06-12 22:00
#4
柚子

啊这,这是deepin的锅吧,大小写错了

其实只是 root 下没有这个环境变量而已,这里运行 DTK 应用不管是啥桌面环境都被强制写成 Deepin 了,可能用于 dde 的 qt 插件用。

P.S. 如果只是环境变量的问题的话,这里可能都不用添加,运行的时候写 sudo -E xxxxxxxx 使用用户环境变量就好吧......

Reply View the author
mike
deepin
2022-06-13 20:10
#5

和大小写无关。是root的环境变量没有配置

  1. root 用户直接运行程序很多环境变量没有配置
  2. uos/deepin 系统默认会配置 XDG_CURRENT_DESKTOP=Deepin (echo $XDG_CURRENT_DESKTOP 查看)
  3. 没有正确加载dxcb插件,会导致图标异常, dxcb 中会加载 deepinthmeplugin 查找图标的一些操作在这里。

现状:

因此在 dde-qt5xcb-plugin >= 5.0.27 之后,如果应用需要在 root 下运行,或者运行前 XDG_CURRENT_DESKTOP 这个环境变量没有配置好,需要自行配置。

在main函数入口加入以下代码

int main(int argc, char *argv[])
{
   if (qEnvironmentVariableIsEmpty("XDG_CURRENT_DESKTOP")){
       qputenv("XDG_CURRENT_DESKTOP", "Deepin");
   }
   
   //
Reply View the author
Comments
寂静的羽夏
2022-06-13 21:58
感谢详细的解释!!!