GSettings(五)——没有图形界面的环境,调用gsettings

        “没有图形界面的环境”是指没有运行桌面环境或窗口管理器的情况下运行程序。也就是说,可能是在一个纯命令行界面或服务器环境中工作,没有访问显示服务器(如X11或Wayland)的情况。

情景解释

没有图形界面的环境

这种情况下,你的系统没有启动桌面环境(如GNOME、KDE等),只有命令行界面。

常见于服务器、远程终端、嵌入式系统等。

没有$DISPLAY变量,因为没有图形显示。

在root下运行

以root用户身份运行程序,但root用户未配置或访问到普通用户的图形会话。

例如,普通用户在桌面环境中启动了会话总线,但root用户在纯命令行环境中运行命令。

在这两种情况下,你可能会遇到Cannot autolaunch D-Bus without X11 $DISPLAY错误,因为D-Bus会话总线需要在图形会话中启动并获取到会话总线地址。

解决方案

        1. 使用dbus-launch启动D-Bus会话

        你可以使用dbus-launch在没有图形界面的环境中启动D-Bus会话。

eval `dbus-launch --sh-syntax` export DBUS_SESSION_BUS_ADDRESS export DBUS_SESSION_BUS_PID

# 运行你的程序 ./your_program

        2. 确保在普通用户的图形会话中获取会话总线地址

        如果你在root环境下运行,并需要连接普通用户的D-Bus会话总线,可以通过以下步骤:

# 切换到普通用户并获取会话总线地址
su - <normal_user> -c 'echo $DBUS_SESSION_BUS_ADDRESS' > /tmp/dbus_address# 切换回root用户并设置会话总线地址
su -
export DBUS_SESSION_BUS_ADDRESS=$(cat /tmp/dbus_address)# 运行你的程序
./your_program

        3. 确保在SSH中转发X11

        如果你通过SSH连接远程服务器,可以使用X11转发确保D-Bus会话总线正常工作。

ssh -X user@remote-host

# 然后运行你的程序 ./your_program

代码示例

        确保程序正确连接到D-Bus并设置GSettings:

#include <QGSettings>
#include <QDebug>void setGsetting()
{const QString schemaId = "com.test.datetime";QGSettings *m_gsettings = nullptr; // 确保指针初始化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, nullptr); // 实例化 QGSettings} else {qDebug() << "Schema not installed: " << schemaId;return;}if (m_gsettings->isWritable("timeformat")) {m_gsettings->set("timeformat", "12 小时");} else {qDebug() << "Key 'timeformat' is not writable";}delete m_gsettings; // 释放资源
}

总结

        在没有图形界面的环境或以root用户运行时,确保D-Bus会话正确初始化是关键。使用dbus-launch启动会话,或者确保正确设置DBUS_SESSION_BUS_ADDRESS环境变量,可以解决大部分相关问题。

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

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

相关文章

Odoo专题资料

odoo开发规范 | 同欣数字化落地 (txodoo.cn) odoo性能优化思路 | 同欣数字化落地 (txodoo.cn) 生产环境安装odoo | 同欣数字化落地 (txodoo.cn) odoo开发环境搭建windows版详细教程 | 同欣数字化落地 (txodoo.cn) mac安装odoo17 | 同欣数字化落地 (txodoo.cn) 控制表单默认…

贪心算法练习题(2024/6/21)

1 买卖股票的最佳时机 II 给你一个整数数组 prices &#xff0c;其中 prices[i] 表示某支股票第 i 天的价格。 在每一天&#xff0c;你可以决定是否购买和/或出售股票。你在任何时候 最多 只能持有 一股 股票。你也可以先购买&#xff0c;然后在 同一天 出售。 返回 你能获得…

论文学习_Fuzz4All: Universal Fuzzing with Large Language Models

论文名称发表时间发表期刊期刊等级研究单位Fuzz4All: Universal Fuzzing with Large Language Models2024年arXiv-伊利诺伊大学0.摘要 研究背景模糊测试再发现各种软件系统中的错误和漏洞方面取得了巨大的成功。以编程或形式语言作为输入的被测系统(SUT),例如编译器、运行时…

树莓派4B_OpenCv学习笔记12:OpenCv颜色追踪_画出轨迹

今日继续学习树莓派4B 4G&#xff1a;&#xff08;Raspberry Pi&#xff0c;简称RPi或RasPi&#xff09; 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1&#xff1a; 今日尝试使用倒叙的方式来学习OpenCV颜色追踪&#xff0…

Claude 3.5 强势出击:解析最新AI模型的突破与应用

近年来&#xff0c;人工智能领域的发展迅猛&#xff0c;各大科技公司纷纷推出了自家的高级语言模型。在这场技术竞赛中&#xff0c;Anthropic的Claude系列模型凭借其强大的性能和创新的功能脱颖而出。最近&#xff0c;Anthropic发布了Claude 3.5 Sonnet模型&#xff0c;引起了广…

如何设置Excel单元格下拉列表

如何设置Excel单元格下拉列表 在Excel中设置单元格下拉列表可以提高数据输入的准确性和效率。以下是创建下拉列表的步骤&#xff1a; 使用数据验证设置下拉列表&#xff1a; 1. 选择单元格&#xff1a; 选择你想要设置下拉列表的单元格或单元格区域。 2. 打开数据验证&…

[Django学习]Q对象实现多字段模糊搜索

一、应用场景 假设我们现在有一个客房系统,前端界面上展示出来了所有客房的所有信息。用户通过客房的价格、面积、人数等对客房进行模糊搜索&#xff0c;如检索出价格在50到100元之间的客房&#xff0c;同时检索面积在20平方米到30平方米之间的客房&#xff0c;此时后端可以借助…

【C++】在boost中查找有向图的所有循环

在boost中查找有向图的所有循环 #include <boost/graph/adjacency_list.hpp> #include <boost/graph/tiernan_all_cycles.hpp> #include <iostream>using Graph = boost::adjacency_list<boost::vecS, boost::vecS, boost::/*un*/directedS>;// see h…

高斯算法的原理及其与常规求和方法的区别

高斯算法的原理 高斯算法的原理源于数学家卡尔弗里德里希高斯在他少年时期发现的一种求和方法。当时老师让学生们计算1到100的和&#xff0c;高斯发现了一种快速计算的方法。 高斯注意到&#xff0c;如果将序列的首尾两数相加&#xff0c;结果总是相同的。例如&#xff1a; …

layui导入excel

前端&#xff1a; 按钮&#xff1a;<a class"layui-btn layui-btn-sm layuiadmin-button-btn train-btn-css"id"uploadGuideExcel">Excel导入计划</a> // //导入计划upload.render({elem: #uploadGuideExcel, //修改为你的urlurl: domainName…

DVWA 靶场 JavaScript 通关解析

前言 DVWA代表Damn Vulnerable Web Application&#xff0c;是一个用于学习和练习Web应用程序漏洞的开源漏洞应用程序。它被设计成一个易于安装和配置的漏洞应用程序&#xff0c;旨在帮助安全专业人员和爱好者了解和熟悉不同类型的Web应用程序漏洞。 DVWA提供了一系列的漏洞场…

【Python】从基础到进阶(一):了解Python语言基础以及变量的相关知识

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 引言一、Python简介1.1 历史背景1.2 设计哲学1.3 语言特性1.4 应用场景1.5 为什么选择Python 二、Python语言基础2.1 注释规则2.1.1 单行注释2.1.2 多行注释2.1.3 文件编码声明注释 2.2 代码缩进2.3 编码规范2.3.1 命名规范…

vim选中内容进入visual模式

描述 有的版本的vim&#xff0c;检测到xterm终端时&#xff0c;会启动鼠标全功能模式&#xff0c;鼠标选中一段文本后&#xff0c;自动进入visual模式&#xff0c;滚动滚轮可以修改选中的位置。可以使用常见的Vim命令来操作它们&#xff0c;例如&#xff1a; y 复制&#xff…

AlphaMissense:预测错义变异的致病性

错义变异或错义变体&#xff08;missense variation或missense variants&#xff09;是改变蛋白质氨基酸序列的遗传变异。致病性错义变异会严重破坏蛋白质功能&#xff0c;在目前观察到的400多万个错义变异中&#xff0c;只有2%在临床上被确定为致病或良性。对剩下的类型不明的…

力扣随机一题 模拟+字符串

博客主页&#xff1a;誓则盟约系列专栏&#xff1a;IT竞赛 专栏关注博主&#xff0c;后期持续更新系列文章如果有错误感谢请大家批评指出&#xff0c;及时修改感谢大家点赞&#x1f44d;收藏⭐评论✍ 1910.删除一个字符串中所有出现的给定子字符串【中等】 题目&#xff1a; …

【数据结构与算法】树的遍历,森林遍历 详解

树的先根遍历、后根遍历对应其二叉树的哪种遍历 树的先根遍历对应其二叉树的先序遍历&#xff08;根-左-右&#xff09;。树的后根遍历对应其二叉树的中序遍历&#xff08;左-根-右&#xff09;。 森林的先根遍历、中根遍历对应其二叉树的哪种遍历? 森林的先根遍历对应其二…

Elasticsearch 数据提取 - 最适合这项工作的工具是什么?

作者&#xff1a;来自 Elastic Josh Asres 了解在 Elasticsearch 中为你的搜索用例提取数据的所有不同方式。 对于搜索用例&#xff0c;高效采集和处理来自各种来源的数据的能力至关重要。无论你处理的是 SQL 数据库、CRM 还是任何自定义数据源&#xff0c;选择正确的数据采集…

STM32三种调试工具CMSIS-DAP、J-Link和ST-Link

一.概述 CMSIS-DAP、J-Link和ST-Link均是嵌入式处理器的开发调试工具。 CMSIS-DAP是一种轻量级调试接口&#xff0c;旨在实现开源的开发调试。它的优点是使用方便、通用性好、成本低&#xff0c;还支持固件的在线升级。 J-Link是一款由德国公司SEGGER Microcontroller开发的…

《Deep learning practice》learning notes

学习笔记&#xff1a; 【公开课】旷视x北大《深度学习实践》&#xff08;28课时全&#xff09; R Talk | 旷视科技目标检测概述&#xff1a;Beyond RetinaNet and Mask R-CNN 文章目录 Lecture 1: Introduction to Computer Vision and Deep Learning&#xff08;孙剑&#x…

Semaphore(应对并发问题的工具类)

Semaphore Semaphore字面意思是信号量的意思&#xff0c;它的作用是控制访问特定资源的线程数目。 举例&#xff1a;现在有一个十字路口&#xff0c;有多辆汽车需要进经过这个十字路口&#xff0c;但是我们规定同时只能有两辆汽车经过。其他汽车处于等待状态&#xff0c;只要…