GSettings(一)——Root 权限的服务调用Gsetting失效

错误描述

          当在 root 权限下拉起的服务中,调用 Gsetting 设置 key,无法实现持久化,并且命令行查看 key 并没有设置成功,命令行运行会输出如下警告:

(process:183768): dconf-WARNING **: 10:55:36.400: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY

错误分析

  Root 服务设置 Gsetting key Demo:

#include <QCoreApplication>
#include <QDBusConnection>
#include <QDBusInterface>
#include <QDBusError>
#include <QDebug>
#include <QProcessEnvironment>
#include <QGSettings/QGSettings>class TestObject : public QObject
{Q_OBJECT
public:TestObject() {registerSystemDBus();setGsetting();}void registerSystemDBus(){QDBusConnection systemBus = QDBusConnection::systemBus();if (!systemBus.isConnected()) {qDebug() << "Failed to connect to system bus:" << systemBus.lastError().message();return;}if (!systemBus.registerService("com.example.TestSystemdService")) {qDebug() << "Failed to register service:" << systemBus.lastError().message();return;}if (!systemBus.registerObject("/com/example/TestObject",this,QDBusConnection::ExportAllSlots)) {qDebug() << "Failed to register object:" << systemBus.lastError().message();return;}}void setGsetting(){QGSettings *m_gsettings = nullptr;const QString schemaId = "com.redflag.datetime";if (m_gsettings) {qDebug() << "QGSettings already initialized.";return;}if (QGSettings::isSchemaInstalled(schemaId.toUtf8().constData())) {qDebug() << "QGSettings initialized for schema: " << schemaId;m_gsettings = new QGSettings(schemaId.toUtf8().constData(), nullptr);} else {qDebug() << "Schema not installed: " << schemaId;}m_gsettings->set("timeformat", "12 小时");delete m_gsettings;}public slots:void testMethod() {qDebug() << "testMethod called";}
};int main(int argc, char *argv[])
{QCoreApplication a(argc, argv);TestObject testObject;return a.exec();
}#include "main.moc"

        运行以上程序(需注意 System DBus 需要在 root 用户下执行),会发现当在 root 拉起的服务中,调用 Gsetting 设置 key 会发现设置失败,key 并没有变化;此时命令行输出为

        (process:183768): dconf-WARNING **: 10:55:36.400: failed to commit changes to dconf: Cannot autolaunch D-Bus without X11 $DISPLAY,这个错误通常出现在尝试在没有图形界面的环境中使用 D-Bus 或 GSettings 时。这是因为这些配置工具依赖于会话总线,而会话总线通常需要在图形界面下运行。

此处没有图形界面的环境的意思:

  • 以 root 用户身份运行程序,但 root 用户未配置或访问到普通用户的图形会话,例如,普通用户在桌面环境中启动了会话总线,但 root 用户在纯命令行环境中运行命令;(demo运行场景)
  • 没有启动桌面环境,只有命令行界面;
  • 或者服务器、远程终端、嵌入式系统等。
  • 没有 DISPLAY 变量,因为没有图形显示。

总结

        GSettings 通过 GObject 库与 D-Bus 进行通信,将配置请求发送到 DConf 后端,由 DConf 后端实际存储和管理配置数据。而无法正确连接到 D-Bus 会话总线,就会无法设置 GSettings 的 key。因为 D-Bus 会话总线是 GSettings 操作的基础,如果无法连接,就无法进行设置。

Note that gsettings needs a D-Bus session bus connection to write changes to the dconf database.

gsettings(1) — Arch manual pages

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/31950.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

代码随想录——分发饼干(Leetcode455)

题目链接 贪心 class Solution {public int findContentChildren(int[] g, int[] s) {Arrays.sort(g);Arrays.sort(s);int count 0;for(int i 0, j 0; i < g.length && j < s.length; i, j){if(s[j] > g[i]){count;}else{i--;}}return count;} }

springboot中获取某个注解下面的某个方法参数值

要获取方法的参数值&#xff0c;你首先需要有一个类的实例&#xff0c;并且需要能够实际调用该方法。在Java中&#xff0c;方法的参数值是在方法被调用时由调用者传入的&#xff0c;因此&#xff0c;你不能直接从外部“获取”一个未调用方法的参数值。 下面是一个简单的示例&a…

IDS使用规则

ids入侵检测系统 Snort(基于特征的入侵检测系统) 软硬件配套 snort官网链接&#xff1a;Snort - Network Intrusion Detection & Prevention System(https://www.snort.org) 环境&#xff1a;centos7,拖动需要开共享粘贴板和开双向 一、daq 1、预装dap所需程序 yum inst…

为什么五笔没人用了?

五笔输入法现在较少人使用的原因主要有以下几点&#xff1a; 学习门槛高&#xff1a;五笔输入法的学习难度相对较大&#xff0c;需要掌握所有的字根&#xff0c;全面了解编码的规律&#xff0c;并学习每个字的拆字原则&#xff0c;这要求用户有相当高的耐心和时间去学习和练习…

外星人Alienware m15R7 原厂Windows11系统

装后恢复到您开箱的体验界面&#xff0c;包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http://w…

【MySQL进阶之路 | 高级篇】InnoDB存储结构

1. 数据库的存储结构 : 页 索引结构给我们提供了高效的索引方式&#xff0c;不过索引信息以及数据记录都是保存在文件上的.确切说是存储在页结构中.另一方面&#xff0c;索引是在存储引擎中实现的&#xff0c;MySQL服务器上的存储引擎负责对表中数据的读取和写入操作.不同的存…

Java | Leetcode Java题解之第165题比较版本号

题目&#xff1a; 题解&#xff1a; class Solution {public int compareVersion(String version1, String version2) {int n version1.length(), m version2.length();int i 0, j 0;while (i < n || j < m) {int x 0;for (; i < n && version1.charAt(…

速卖通测评成本低见效快,自养号测评的实操指南,快速积累销量和好评

对于初入速卖通的新卖家而言&#xff0c;销量和评价的积累显得尤为关键。由于新店铺往往难以获得平台活动的青睐&#xff0c;因此流量的获取成为了一大挑战。在这样的背景下&#xff0c;进行产品测评以积累正面的用户反馈和销售记录&#xff0c;成为了提升店铺信誉和吸引潜在顾…

QGraphicsItem 的函数 itemChange 缩放和旋转无信号发出

如果在使用 QGraphicsItem 的 itemChange 函数时&#xff0c;发现缩放和旋转没有信号发出&#xff0c;可能是因为以下几个原因&#xff1a; 未设置正确的标志&#xff1a;确保你已经设置了 QGraphicsItem::ItemSendsGeometryChanges 标志。这个标志告诉 QGraphicsItem 在几何形…

Redis 的安装与部署

本文为Redis的Linux版单机部署。 上传 redis-3.2.8 源码到 /opt/software/ 解压到 /opt/module/ [huweihadoop101 software]$ tar -zxvf redis-3.2.8.tar.gz -C /opt/module/安装依赖 [huweihadoop101 software]$ sudo yum -y install gcc-c tclRedis是C语言编写的 编译安装…

【Linux】CentOS 7 安装配置 postfix 邮件服务器随笔

本文并不是完整配置教程&#xff0c;只是配置过程中零散代码随笔&#xff0c;不成系统 记录配置 PostFix 邮件服务器过程&#xff0c;由于经常用到&#xff0c;会不定时更新完善 yum install -y postfix dovecot cyrus-sasl-plain cyrus-sasl mailx# 设置hostname hostnamect…

Hive建表乱码解决--设置编码格式UTF8

1.创建Hive元数据库 Hive元数据存储在MySQL中&#xff0c;因此需要进入MySQL中创建Hive元数据库&#xff1b;若已存在Hive元数据库&#xff0c;则修改元数据库字符格式 hive建库语句&#xff1a; create database amon DEFAULT CHARSET utf8 COLLATE utf8_general_ci;只有修改…

kafka第二篇——主题创建,主题分区副本分配策略

目录 主题创建 引入 回顾主题&#xff0c;分区&#xff0c;副本关系 代码 主题分区副本分配策略 底层逻辑分析 主题创建 引入 为啥才开始在idea上跑代码&#xff0c;topic都没创建出来&#xff0c;就直接跑出来了? 这是因为AutoTopicCreationManger参数可以自动创建主题…

数据结构经典面试之链表——C#和C++篇

文章目录 一、链表的基本概念二、链表的操作三、定义链表的节点结构体&#xff08;C#&#xff09;四、定义链表的基本操作类&#xff08;C#&#xff09;五、创建一个链表实例并进行基本操作演示&#xff08;C#&#xff09;六、编写一个自定义链表操作函数&#xff08;C&#xf…

复分析——第4章——Fourier变换(E.M. Stein R. Shakarchi)

第4章 Fouier变换 Raymond Edward Alan Christopher Paley, Fellow of Trinity College, Cambridge, and International Research Fellow at the Massachusetts Institute of Technology and at Harvard University, was killed by an avalanche on April 7, 1933, whi…

鞠婧祎多个商标被丝芭传媒申请注册!

近日鞠婧祎与丝芭传媒合约引发网络关注&#xff0c;普推商标老杨经检索发现&#xff0c;丝芭传媒早在2016起就申请注册了“鞠婧祎”24个商标&#xff0c;涉及多个商标分类&#xff0c;这些基本都下商标注册证。 不管对经纪公司还是网红公司&#xff0c;有实力的基本都会对旗下的…

数据可视化实验四:Pyecharts数据可视化

目录 一、使用PyEcharts绘制全国肺炎确诊人数分布图 1.1 柱状图 1.1.2 代码实现 1.1.2 绘制结果 1.2 饼状图 1.2.1 代码实现 1.2.2 绘制结果 1.3 使用over lap实现图形叠加 1.3.1 代码实现 1.3.2 绘制结果 1.4 地图绘制-Map 1.4.1 代码实现 1.4.2 绘制结果 1.5 地…

培训兼职导师可靠吗?

培训兼职导师有真有假。在现实中&#xff0c;确实存在正规的培训兼职导师的机会&#xff0c;这些通常是由正规的教育机构或企业提供的&#xff0c;旨在帮助有教育热情和专业知识的人成为合格的兼职导师。然而&#xff0c;也有许多骗局打着“培训兼职导师”的幌子&#xff0c;骗…

51学习记录(一)——51介绍及震动感应灯

文章目录 前言一、STC89C522.内部结构及引脚 二、继电器原理及震动传感器原理三、项目搭建及实现 前言 一个学习嵌入式的小白~ 有问题评论区或私信指出 提示&#xff1a;以下是本篇文章正文内容&#xff0c;下面案例可供参考 一、STC89C52 1.简介 所属系列&#xff1a;51单…

功率电源中器件的温升与极限工作温度

功率电源中器件的温升与极限工作温度 熟悉电子电路设计的朋友一定都知道,在电源整体设计中存在一些发热非常严重的器件,如整流桥、MOS管、快恢复二极管这些器件。而在功率电源中,电感和高频变压器则成为了发热现象的重灾区。那么在功率电源中,它们的合理温升应该是多少,在…