问题标签 [gjs]

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 回答
110 浏览

glib - 如何在 GJS 中使用“out caller-allocates”?

我正在尝试通过具有此签名的 GData.ContactsContact.get_photo() 检索联系人照片:

但是,如果我只是为此(例如)将变量声明为“调用者分配”let length;或实例化一个新的 G_TYPE长度,结果总是:

我只能找到一些类似问题的示例,它们都涉及注释错误:

似乎该方法的注释不正确。它应该是(out caller-allocates)(数组长度=长度)。

这是一个自省错误,我可以解决和/或提交错误,还是我误解了 Javascript 中的“out caller-allocates”用法?

0 投票
0 回答
229 浏览

gtk - 为什么我的 GtkEntry 图标工具提示不起作用?

我在 GJS 中定义了一个 GtkEntry,如下所示:

但是,工具提示永远不会显示。没有错误被打印到日志中,我已经梳理了文档的属性和功能,我错过了什么吗?

更新

get_icon_at_pos()这是处理程序使用的一个已知错误, Daniel Boles 在 2017-07-31::query-tooltip已将修复推送到上游

0 投票
1 回答
918 浏览

javascript - GJS 中为 Array 定义 GObject 属性的正确方法是什么?

我在GJS GObject overrides中看到,大多数类型都有对应于 Javascript 类型的定义,但是我应该如何为标准的字符串数组定义一个属性?我想到的一些选择:

  • 使用 TYPE_OBJECT 和 GList,但是当我检索它时,GJS 会将它映射到一个数组吗?
  • 使用 TYPE_OBJECT 和带有“as”类型的 GVariant 并自己解压
  • 使用 TYPE_BOXED 和 TYPE_ARRAY,但是 TYPE_ARRAY 是否可以与 Javascript 的 Array 类型相媲美?
0 投票
1 回答
235 浏览

key-bindings - 是否可以在 GJS 中调用 Gdk.Seat.grab() ?

似乎当我在 GJS 中调用 Gdk.Seat.grab() 时出现错误:

这个函数和类在 GJS Docs 中列出,但也许我说错了?如果我打电话typeofGdk.Seat.grab它就会回来undefined。这是不可能的,还是有另一种方法可以让我以这种方式抓住焦点?

我的用例是从用户那里收集一个键绑定,我可以使用它Gtk.CellRendererAccel,但我不想使用Gtk.TreeView. 文档对 CellRenderers 说:

这些对象主要由 GtkTreeView 小部件使用,尽管它们没有以任何特定方式与它们绑定。

和...

GtkCellRenderer 的主要用途是在 cairo_t 上绘制某些图形元素。

这意味着我可以在 TreeView 之外使用它,但没有关于如何使用的提示。

0 投票
1 回答
478 浏览

gtk - 从 GJS 中的资源加载 Gtk.Image

我正在尝试从资源加载 Gtk.Image 但我无法弄清楚我做错了什么。

我的 gresource.xml 中有 png

我正在尝试像这样加载该png:

但我总是得到一个破碎的形象。

0 投票
1 回答
118 浏览

gnome - 从 GJS 中的 org.gnome.shell 模式获取启用的扩展

我正在尝试使用启用的扩展获取存储在 org.gnome.shell 架构中的值。

但是这句话说没有安装org.gnome.shell schema

我在我自己的 GJS 应用程序中调用了这一行。并使用 dconf 编辑器导航,我看到了这个模式和那里的值。

我错过了什么?

谢谢

0 投票
1 回答
94 浏览

sockets - 为什么 Gio.Socket.create_source() 返回 null?

我是套接字的新手,并试图通过 GJS/Gio 中的一些套接字编程工作并碰壁创建 GLib.Source 来处理从套接字接收。相关代码(我认为)是:

一切顺利,直到this.sock_source.set_callback()我收到错误时打电话:

Gio.Socket.create_source()在代码的另一部分调用了另一个套接字(尽管是 UDP),它工作正常。调用create_source()本身不会引发任何错误(即使我使用 运行我的脚本)并且文档G_MESSAGES_DEBUG=all中没有提到该函数曾经返回,所以我对自己做错了什么感到困惑。null

编辑:

这里有 3 年的评论说:

这不起作用,因为1) Socket.create_source 在 typelib 中不存在,因为它在 Glib/gio/gsocket.c 中标记为 (skip)

但我认为这不再正确,因为我在我的 UDP 套接字上创建了一个源,尽管该套接字是“手工制作”的,而不是使用Gio.SocketClient().

0 投票
1 回答
74 浏览

sockets - 如何从 UDP 侦听器套接字上的传入消息中获取远程地址?

Gio.Socket虽然可以通过将它的文件描述符包装在中来读取 a ,但在 GJSGio.DataInputStream中使用接收是不可能的,因为正如这里评论的那样:Gio.Socket.receive_from()

GJS 将在将数组参数传递给 C 代码之前克隆它们,这将使对 Socket.receive_from 的调用起作用并返回接收到的字节数以及数据包的来源。缓冲区内容将保持不变,因为实际读入的缓冲区是一个已释放的克隆

因此,输入参数被克隆,数据将被写入克隆的缓冲区,而不是buffer实际传入的实例。

尽管从数据流中读取不是问题,但这是Gio.Socket.receive_from()我能找到的从 UDP 侦听器获取远程地址的唯一方法,因为Gio.Socket.remote_address它是未定义的。不幸的是,正如文档所说Gio.Socket.receive()

对于G_SOCKET_TYPE_DATAGRAM[...] 如果接收到的消息太大而无法放入buffer,则超出size字节的数据将被丢弃,而没有任何明确指示已发生这种情况。

因此,如果我尝试Gio.Socket.receive_from(new Uint8Array(0), null);获取地址之类的方法,则数据包被吞下,但如果我通过文件描述符读取,我无法判断消息来自何处。是否有另一种非破坏性方法来获取数据包的传入地址?

0 投票
1 回答
51 浏览

x509 - 如何在 GJS 中获取 TlsCertificate 的 SHA1 指纹?

我正在尝试获取Gio.TlsCertificate连接的指纹,据我所知,这只是 DER 形式的证书的 SHA1 校验和。所以我想我可以在对象GLib.compute_checksum_for_data()certificate属性上使用Gio.TlsCertificate,但是任何访问该属性的尝试都会导致:

JS 错误:错误:无法自省 GValue 中容器的元素类型

有没有一种方法可以访问证书属性,或者有一种更简单的方法可以在 GLib 中对证书进行指纹识别?

0 投票
1 回答
513 浏览

gnome-shell-extensions - gnome-shell-extensions 拖放

在尝试将 D&D 支持添加到我正在编写的 gnome-shell-extension 时,我遇到了一些麻烦。我可以为任何打开的窗口创建放置目标,但这就是我设法完成的全部。

我无法区分窗户。我尝试使用global.get_stage().get_actor_at_pos(Clutter.PickMode.ALL, x, y).get_parent().get_parent().get_meta_window().get_wm_class(),但有一半时间它给了我错误的窗口,并且时不时地它只是返回null。另外我不确定如何将信息放入目标中。

我要做的就是将文件 URI 放入浏览器窗口或将文件放入文件管理器。

在 gnome-shell-extensions 中是否有可能,我将如何实现它?任何的建议都受欢迎!