问题标签 [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 回答
1451 浏览

javascript - 无法使用 GSettings 更改 dconf-entry

我目前正在Gjs上构建一个简单的应用程序,它应该会更改我的 gnome-shell 的背景图像。可以在此处找到有关如何使用gsettings-tool完成此操作的解决方案。

因为我想围绕它构建一个桌面应用程序,所以我想org.gnome.desktop.background.picture-uri通过使用 Gio 的GSettings-class来更改 -key 。但是使用set_X()- 方法不会改变键的值。

这是我更改 gsettings 值的代码:

读取值确实按预期工作,is_writable()- 方法返回trueset_string()- 方法也返回true

我已经检查过我没有处于“延迟应用”模式并且密钥有一个GVariantType字符串,所以set_string()- 方法应该可以工作。

使用普通的gsettings命令行工具(如链接帖子中所述)工作得很好。

我无法弄清楚问题是什么,有什么地方可以查找日志或其他东西吗?

0 投票
2 回答
2923 浏览

javascript - How to set a including path in the Gjs code?

As i could see, the Gjs imports, loads only /usr/share/gjs-1.0 and /usr/lib/gjs-1.0 by default. I want to modularize an application, like we can do with node, but i must find modules relative to the script file.

I found this two ways to add include paths:

  1. gjs --include-path=my-modules my-script.js
  2. GJS_PATH=my-modules gjs my-script.js

...but both are related to the current directory, not to the file (obliviously), and they needed to be declared on the command line, making this unnecessarily complex.

How can i set a including path in the Gjs code? (So i can make this relative to the file)

Or... There is another way to import files from anywhere, like in python?

(Please, you don't need to propose to use a shellscript launcher to solve the --include-path and GJS_PATH problem. That is obvious, but less powerful. If we do not have a better solution, we survive with that.)

0 投票
1 回答
547 浏览

javascript - 使用 Gnome-Shell JS 接口获取联系人列表

我刚刚开始摆弄编写 gnome-shell 扩展,并且想知道如何获取用户拥有的联系人列表。

我已经找到了一些可能的文件:gnome-shell/js/ui/contactDisplay.jsgnome-shell/src/shell_contact_system.c.

现在我注意到shell_contact_system.c以下函数:

这表明在 javascript 界面中我可以使用函数(我的信念被文件也有 a并演示了使用get_all的事实加强了),所以我尝试:.cshell_contact_system_get_individualcontactDisplay.jsShell.ContactSystem.get_default().get_individual

有用!(我正在 Gnome-shell 的“镜子”javascript 解释器中尝试它)。

它似乎是一个“Gobject”,所以我不知道如何处理这个对象来获取我的联系人姓名。我注意到(从 C 代码)这个对象是 a GeeMap *,所以查看Gee.Map 的文档,我发现我可以执行以下操作:

然后我尝试查看contacts.valuesand contacts.key,并注意到这些to_array()方法具有:

但是,当我这样做时,我会得到一个空数组contacts.xxx.to_array().size是 0,但是contacts.size是 31 吗?!!

当我尝试使用 acontacts.map_iterator()遍历地图时也会发生同样的情况;it.get_value()并且it.get_key()似乎为空。

所以,我的问题是:如何访问 的各个元素contacts

我确实注意到评论shell_contact_system_get_allReturns: (transfer none): ...while shell_contact_system_get_individualsays Returns: (transfer full): ...,并且后一个功能有效(前提是我知道我要查找的个人的 ID,这是我的问题),而前者没有。这可能与它有关吗?

此外,作为一种解决方法,我目前可以使用contactSearchProvider该类来实现这一点(当您安装gnome-contacts可以键入联系人姓名的位置时,概览将使用该类,它们将出现在概览中)。我基本上搜索''哪个应该返回我每个联系人的列表。不过,这似乎是迂回的-我觉得我应该能够使用该get_all()方法来获取所有联系人,而无需搜索空字符串...

任何帮助将不胜感激(顺便说一句,是否有任何关于此的文档?当我盯着源代码并尝试从中推断出所有文档时,我感到非常不合适!)

0 投票
6 回答
62883 浏览

javascript - 如何在原型上定义 setter/getter

编辑 2016 年 10 月:请注意这个问题是在 2012 年提出的。每个月左右都会有人添加一个新的答案或评论来反驳一个答案,但这样做并没有任何意义,因为这个问题可能已经过时了(记住,是让Gnome Javascript编写 gnome-shell 扩展,而不是浏览器的东西,这是非常具体的)。

我之前关于如何在 Javascript 中进行子类化的问题之后,我正在制作一个超类的子类,如下所示:

我的问题是,如何使用这种语法在原型上定义 setter/getter?

我曾经做:

但显然以下方法不起作用:

我正在使用 GJS(GNOME Javascript),该引擎与 Mozilla Spidermonkey 引擎大致相同。我的代码不适用于浏览器,只要 GJS 支持它(我猜这意味着 Spidermonkey?),我不介意它是否不交叉兼容。

0 投票
2 回答
1997 浏览

unicode - 使用 Javascript 和 gjs 的 Unicode 文件 I/O?

任何人都可以给出如何使用JavascriptGjs读/写Unicode文本文件的任何工作示例,可能使用 Gio 和/或 Glib?我在 Javascript 方面经验丰富,但这些 API 对我来说仍然是陌生的,而且是相当新的技术,谷歌搜索并没有多大帮助。

我看过这个:https ://live.gnome.org/Seed/Tutorial/Simple_file_io ,但它是基于种子的(不是 Gjs),而且看起来很旧。我收到错误(例如第 9 行 Gio.read 上的参数太少),因此无法使用 Unicode 文本进行测试。

一个工作片段会很有帮助。谢谢!

更新:我正在 Ubuntu 12.04 64 位上进行测试。

0 投票
2 回答
3019 浏览

dbus - 在 Gjs / Gnome Shell 中调用 DBus 方法

如果我有总线名称、对象路径和接口,我如何从 Gjs(在 gnome-shell 扩展中)调用 DBus 方法?

我正在寻找以下 python 代码的等价物:

(请注意,由于某些 python-dbus 魔术,我没有显式使用该接口,但我可以使用iface = dbus.interface(obj, "org.gnome.SessionManager.EndSessionDialog")。由于我有接口名称,我可以使用查询它的解决方案。另请注意,此示例将是在 Gjs 中很傻,因为它回调到 gnome-shell)

0 投票
1 回答
341 浏览

javascript - 在 gnome-shell 中获取扩展对象

我正在开发一个 gnome-shell 扩展。我想知道我是否可以获得其他扩展的对象。

我只找到获取当前扩展对象的方法 ExtensionUtils.getCurrentExtension()

是否有可能访问其他已安装的扩展程序?

0 投票
1 回答
1046 浏览

gjs - 我应该使用 JavaScript 来开发 Linux(GNOME 和 Gtk)应用程序吗?

我已经使用 Gtk+ 和 GNOME API 完成了 Python 和 C 应用程序,现在我看到由于 GJS(我还听说过种子)在 GNOME 3 中支持 JavaScript。

所以,我不得不问:值得吗?我只是想知道 GJS 是否已经引起了人们的关注并且将来不会被弃用。

0 投票
2 回答
761 浏览

javascript - 在 javascript 中解压 GVariant

我在 GSettings 中有一个存储为 GVariant 类型a(ss)的数组,我想在 Cinnamon Applet 中使用它。我可以使用以下代码成功检索该值:

但我无法打开它。据我所知,我可能需要使用GVariantIter结构对其进行解包,但文档有限,而且我在 gjs API 中找不到正确的接口(如果确实存在的话)。有谁知道该怎么做?

谢谢!

编辑: 我的架构如下所示:

目前我正在使用外部JSON文件来存储设置,但这并不是 100% 令人满意的解决方案。我想我可以维护两个as-type 变量,并保持它们对齐,但是必须有一种方法可以正确地做到这一点,对吧?

0 投票
1 回答
271 浏览

gnome-shell - 为 gnome-shell 3.4 和 3.6 编写扩展

我正在为 gnome-shell 编写扩展。但是在 gnome-shell 3.4 中添加了一个菜单,panel._menus并且在 gnome-shell3.6 中使用 with panel.menuManager。如何添加适用于每个版本的菜单?