问题标签 [gio]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
235 浏览

gstreamer - 如何在 Gstreamer 中为特定于源的多播指定源地址

我正在尝试设置一个 gstreamer1.0 客户端来接收特定于源的多播。很清楚如何为多播设置组 ip,但我没有看到任何设置源地址的属性。 http://gstreamer.freedesktop.org/data/doc/gstreamer/head/gst-plugins-good-plugins/html/gst-plugins-good-plugins-udpsrc.html

0 投票
3 回答
962 浏览

gtk - 如何在 Gio.Settings 中获取可重定位模式的路径?

在 Gio.Settings 我可以使用列出可重定位模式

我可以使用

获取Gio.Settings实例。但是我怎样才能获得path当前用于给定的所有值schema_id

0 投票
1 回答
10053 浏览

python - 在 virtualenv 中通过 pip 安装 PyGObject

我实际上正在将旧的 django 应用程序从 python2.7 升级到 python3.4。通过 pip 安装 pygobject 时,出现此错误:

我正在尝试将其安装在 virtualenv 中。系统范围的安装也不起作用......我正在使用 python3.4 开发 arch linux

我已经安装了名为 pygobject-devel 3.16.2-1 的 arch 包,但我仍然无法导入 gobject python 模块

这个该死的失踪 gio 是什么?

欢迎任何帮助......提前谢谢!

0 投票
1 回答
275 浏览

linux - 可以动态创建gsettings吗?

我很好奇 gsettings 是否可以用来存储对象,还是必须静态设置所有内容?诸如用户对象之类的对象可以存储在 gsettings 中吗?是否可以使用每个用户的固定属性添加和删除用户?

0 投票
1 回答
164 浏览

javascript - 如何在使用 GJS 的一系列异步任务之后安排一些事情发生?

我正在使用 GJS 和 GNOME 平台用 JavaScript 编写一个简单的桌面应用程序:GTK+、GLib、Gio、GObject。下面的代码说明了我面临的情况,并且更容易复制,因为它不需要访问应用程序使用的文件。简而言之,我想在完成一系列异步任务(加载一系列文件的内容)后运行指示的代码行。我如何在 GJS 中做到这一点,最好使用 Gio 或 JavaScript 本身的东西?

PS:在提供的代码中,在完成所有异步任务之前运行指定的代码行不会阻止应用程序正常运行。但是,我想在应用程序启动时对列表进行一次排序,而不是在每次读取文件时对列表进行排序。而且,当然,知道如何做到这一点在其他情况下也很有帮助。

0 投票
1 回答
489 浏览

c - 由 gio 库实现的简单线程服务器

我正在尝试学习 gio 库,尤其是 giostream 和 gthreadsocketservice。我想写一个简单的服务器:

  1. 每个传入的连接将由一个单独的新线程处理
  2. 在客户端,用户输入一个字符串,它将被发送到服务器;在服务器端收到字符串后,立即将其显示到标准输出。
  3. 除非服务器或客户端终止,否则连接不会关闭。即可以从客户端向服务器发送多条消息,而无需多次连接。

我试过的代码是:客户端:

服务器端:

问题是当我测试它时,在客户端我输入了三行:

但是服务器端没有显示任何内容。只有当我退出客户端时,它才会在服务器屏幕上显示:

但我想要的是当我输入“aaa”并输入时,它会立即显示在服务器屏幕上。

知道哪里出错了吗?

0 投票
0 回答
88 浏览

x11 - 使用打开对话框启动文件路径/url

我正在尝试提供一个路径,并使用 linux 的“本机打开方式”对话框打开它。

这是在 ubuntu 上看到的原生打开对话框:

我调查GioLaunch并能够将事物启动到他们的默认应用程序处理程序中,但我无法设法将其启动到这个“打开方式”对话框中。

这是我启动默认应用程序的代码:

0 投票
1 回答
1038 浏览

smtp - 如何实现服务器端 SMTP STARTTLS?

我正在尝试使用 Vala 和 GLib + GIO 实现一个简单的 SMTP 服务器。

到目前为止,纯文本通信没有问题,但是当涉及到使用 STARTTLS 的 TLS 时,事情变得更加困难。

这是我到目前为止的代码:

给定一个有效的 SSL 证书(我用 生成)我启动程序并运行这个 OpenSSL 命令来测试 STARTTLS vsmtpd.keyvsmtpd.crtopenssl req -x509 -newkey rsa:2048 -keyout vsmtpd.key -out vsmtpd.pem -days 365 -nodes

我的程序的输出是:

OpenSSL 的输出是:

我从输出中了解到,我的程序在 TLS 握手完成之前关闭了连接。(我也尝试过使用 Thunderbird 和 Claws Mail)

我在这里做错了什么?

PS:我找不到任何关于如何GTLsServerConnection在 STARTTLS 情况下使用的示例。

更新:

我尝试了 OpenSSL 的 -ssl2、-ssl3、-tls1、-tls1_1、-tls1_2 选项,它们也不起作用。

产量:

所以客户端发送“client hello A”,但服务器没有发送正确的“server hello A”。

作为替代方案,您也可以尝试gnutls-cli --crlf --starttls-proto=smtp --port 10025 localhost.

的输出GNUTLS_DEBUG_LEVEL=11 ./vsmtpd是:

0 投票
2 回答
1036 浏览

python - 使用 libsecret 我无法获得解锁项目的标签

我正在开发一个使用 libsecret 的小程序。这个程序应该能够创建一个 Secret.Service...

...从该服务中获取特定的集合...

...然后列出该集合中的所有项目,只需打印它们的标签即可。

一个重要的细节是 Collection 最初可能被锁定,因此我需要包含检查这种可能性的代码,并尝试解锁 Collection。

这很重要,因为我目前拥有的代码可以在 Collection 最初解锁时完成我所需要的一切。但是,如果集合最初被锁定,即使在我解锁它之后,我也无法从里面的项目中获取标签。我能做的是断开()服务,再次重新创建服务,获取现在解锁的集合,这样我就可以读取每个项目上的标签。另一个有趣的细节是,标签被读取一次后,我不再需要服务重新连接来访问它们。这似乎很不雅,所以我开始寻找不同的解决方案。

我意识到 Collection 继承自 Gio.DBusProxy 并且这个类缓存了它访问的对象的数据。所以我假设这对我来说是个问题,我没有更新缓存。这很奇怪,因为文档指出 Gio.DBusProxy 应该能够检测到原始对象的更改,但这并没有发生。

现在我不知道如何更新该类的缓存。我看过一些 seahorse(另一个使用 libsecret 的应用程序)vala 代码,我无法完全破译,我无法对 vala 进行编码,但是提到了 Object.emit() 方法,我是仍然不确定如何使用该方法来实现我的目标。从文档(https://lazka.github.io/pgi-docs/Secret-1/#)中,我发现了另一种有前途的方法,Object.notify(),它似乎能够发送启用缓存的更改通知更新,但我还不能正确使用它。

我还在 gnome-keyring 邮件列表上发布了关于这个...

https://mail.gnome.org/archives/gnome-keyring-list/2015-November/msg00000.html

...到目前为止没有答案,并在 gnome.org 上找到了一个 bugzilla 报告,其中提到了这个问题...

https://bugzilla.gnome.org/show_bug.cgi?id=747359

...到目前为止(7个月)也没有解决方案。

因此,如果有人可以对这个问题有所了解,那就太好了。否则不幸的是,一些不雅的代码会进入我的小程序。


编辑-0:

这是一些在 Python3 中复制问题的代码。此代码段创建一个集合“test_col”,其中包含一个项目“test_item”,并锁定该集合。注意 libsecret 将提示您输入此新集合所需的密码:

然后我们需要重新启动 gnome-keyring-daemon,您可以退出并重新登录或使用命令行:

这将设置您的密钥环,以便我们可以尝试打开最初锁定的集合。我们可以用这个代码片段来做到这一点。请注意,系统将再次提示您输入之前设置的密码:

此代码尝试读取项目标签两次。一种失败的正常方式,您应该看到一个空字符串,然后使用解决方法,断开服务并重新连接。

0 投票
2 回答
715 浏览

c - C Glib GIO - 如何异步列出文件

我正在使用 GTK 创建一个简单的文件查看器,并且我想异步加载新目录,以防止在加载时挂起整个程序。

在 GIO API 中有一个g_file_enumerator_next_files_async功能,允许异步加载块中的文件。但是我怎么知道目录列表何时完成?这是我想出的代码示例: