- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 Ubuntu 11.04 中使用 dconf api 捕获后台更改事件。我已经创建了一个客户端并且可以读取背景值,但是当我更改 dconf 值(通过 dconf-editor)时,不会调用回调函数。
我应该如何使用回调技术?
谢谢。
这是代码:
#include <glib-2.0/glib.h>
#include <glib-2.0/glib-object.h>
#include <glib-2.0/gio/gio.h>
#include </usr/include/dconf/dconf.h>
#include <iostream>
void WatchBackground (DConfClient *client, const gchar* path, const gchar* const *items, gint n_items, const gchar* tag, gpointer user_data){
if (g_strcasecmp(path, (gchar*)"/org/gnome/desktop/background/picture_uri") == 0){
std::cout << "filename Ok" << std::endl;
}
std::cout << "Call callback" << std::endl;
}
int main(int argc, char** argv) {
g_type_init();
DConfClient *dcfc = dconf_client_new(NULL, WatchBackground, NULL, NULL);
if (dcfc != NULL){
std::cout << "DConfClient created." << std::endl;
GVariant *res = dconf_client_read(dcfc, (gchar*)"/org/gnome/desktop/background/picture-uri");
if (res != NULL){
gsize s = 0;
std::cout << "/org/gnome/desktop/background/picture-uri: " << g_variant_get_string(res, &s) << std::endl;
} else {
std::cout << "NULL read" << std::endl;
}
}
while(true){
sleep(1000);
}
return 0;
}
这是执行该程序的结果:
(process:6889): GLib-WARNING **: XDG_RUNTIME_DIR variable not set. Falling back to XDG cache dir.
DConfClient created.
/org/gnome/desktop/background/picture-uri: /usr/share/backgrounds/space-02.png
最佳答案
您必须使用GMainLoop
来等待。这是一个简单的代码来演示。
#include <dconf.h>
void watch(DConfClient *c,
const gchar *p,
const gchar * const *i,
gint n,
const gchar *t,
gpointer unused)
{
g_message("%s", p);
}
int main(int argc, char *argv[])
{
DConfClient *c;
GMainLoop *l;
g_type_init();
c = dconf_client_new(NULL, watch, NULL, NULL);
dconf_client_watch(c, "/", NULL, NULL);
l = g_main_loop_new(NULL, FALSE);
g_main_loop_run(l);
return 0;
}
关于c - 使用 dconf 监视回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7538366/
昨天我尝试从 MATE 1.4 更新到 MATE 1.6。我不喜欢它的一些事情,我决定切换回来,至少现在是这样。其中一项更改是从 mateconf 配置系统切换到 GNOME 3 的 GSetting
我正在尝试在 Ubuntu 11.04 中使用 dconf api 捕获后台更改事件。我已经创建了一个客户端并且可以读取背景值,但是当我更改 dconf 值(通过 dconf-editor)时,不会调
你好 我需要在ubuntu 12.10中设置一个热键,我使用 设置(dconf) ~$ gsettings set org.gnome.settings-daemon.plugins.media-ke
我目前正在 Gjs 上构建一个简单的应用程序,这应该会更改我的 gnome-shell 的背景图像。可以找到关于如何使用 gsettings 工具完成此操作的解决方案 here . 因为我想围绕它构建
目标:分配 Super_L或Super_R键作为覆盖菜单的触发器。 环境:Gnome 3.26.2、Fedora 27、Dell XPS 9550、Kinesis Advantage2 原因:在工作中
我正在尝试在我的 Ubuntu 虚拟机上更改 Gedit(3.18)中嵌入式终端插件的颜色。我在网上找到的所有解决方案都建议清除 dconf-editor 中的调色板设置,但我不允许我这样做。你能帮忙
有一个新的 USB(金士顿 32gb) 首次使用然后在 Ubuntu 14.04 上将其弹出后,它不再可检测到。 试过 lsusb - 没有出现在列表中(在我的鼠标 USB 接收器上测试并且工作正常)
在 Gnome 上,我一直在使用 dconf。我正在尝试编写一些 Python 脚本来自己操作一些条目。其中一些具有a(ss)类型。所以我的第一个问题是:这个类型是什么意思? 我正在这样处理 dcon
我是一名优秀的程序员,十分优秀!