问题标签 [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.
javascript - 无法使用 GSettings 更改 dconf-entry
我目前正在Gjs上构建一个简单的应用程序,它应该会更改我的 gnome-shell 的背景图像。可以在此处找到有关如何使用gsettings
-tool完成此操作的解决方案。
因为我想围绕它构建一个桌面应用程序,所以我想org.gnome.desktop.background.picture-uri
通过使用 Gio 的GSettings
-class来更改 -key 。但是使用set_X()
- 方法不会改变键的值。
这是我更改 gsettings 值的代码:
读取值确实按预期工作,is_writable()
- 方法返回true
,set_string()
- 方法也返回true
。
我已经检查过我没有处于“延迟应用”模式并且密钥有一个GVariantType
字符串,所以set_string()
- 方法应该可以工作。
使用普通的gsettings
命令行工具(如链接帖子中所述)工作得很好。
我无法弄清楚问题是什么,有什么地方可以查找日志或其他东西吗?
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:
gjs --include-path=my-modules my-script.js
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.)
javascript - 使用 Gnome-Shell JS 接口获取联系人列表
我刚刚开始摆弄编写 gnome-shell 扩展,并且想知道如何获取用户拥有的联系人列表。
我已经找到了一些可能的文件:gnome-shell/js/ui/contactDisplay.js
和gnome-shell/src/shell_contact_system.c
.
现在我注意到shell_contact_system.c
以下函数:
这表明在 javascript 界面中我可以使用函数(我的信念被文件也有 a并演示了使用get_all
的事实加强了),所以我尝试:.c
shell_contact_system_get_individual
contactDisplay.js
Shell.ContactSystem.get_default().get_individual
有用!(我正在 Gnome-shell 的“镜子”javascript 解释器中尝试它)。
它似乎是一个“Gobject”,所以我不知道如何处理这个对象来获取我的联系人姓名。我注意到(从 C 代码)这个对象是 a GeeMap *
,所以查看Gee.Map 的文档,我发现我可以执行以下操作:
然后我尝试查看contacts.values
and 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_all
说Returns: (transfer none): ...
while shell_contact_system_get_individual
says Returns: (transfer full): ...
,并且后一个功能有效(前提是我知道我要查找的个人的 ID,这是我的问题),而前者没有。这可能与它有关吗?
此外,作为一种解决方法,我目前可以使用contactSearchProvider
该类来实现这一点(当您安装gnome-contacts
可以键入联系人姓名的位置时,概览将使用该类,它们将出现在概览中)。我基本上搜索''
哪个应该返回我每个联系人的列表。不过,这似乎是迂回的-我觉得我应该能够使用该get_all()
方法来获取所有联系人,而无需搜索空字符串...
任何帮助将不胜感激(顺便说一句,是否有任何关于此的文档?当我盯着源代码并尝试从中推断出所有文档时,我感到非常不合适!)
javascript - 如何在原型上定义 setter/getter
编辑 2016 年 10 月:请注意这个问题是在 2012 年提出的。每个月左右都会有人添加一个新的答案或评论来反驳一个答案,但这样做并没有任何意义,因为这个问题可能已经过时了(记住,是让Gnome Javascript编写 gnome-shell 扩展,而不是浏览器的东西,这是非常具体的)。
在我之前关于如何在 Javascript 中进行子类化的问题之后,我正在制作一个超类的子类,如下所示:
我的问题是,如何使用这种语法在原型上定义 setter/getter?
我曾经做:
但显然以下方法不起作用:
我正在使用 GJS(GNOME Javascript),该引擎与 Mozilla Spidermonkey 引擎大致相同。我的代码不适用于浏览器,只要 GJS 支持它(我猜这意味着 Spidermonkey?),我不介意它是否不交叉兼容。
unicode - 使用 Javascript 和 gjs 的 Unicode 文件 I/O?
任何人都可以给出如何使用Javascript和Gjs读/写Unicode文本文件的任何工作示例,可能使用 Gio 和/或 Glib?我在 Javascript 方面经验丰富,但这些 API 对我来说仍然是陌生的,而且是相当新的技术,谷歌搜索并没有多大帮助。
我看过这个:https ://live.gnome.org/Seed/Tutorial/Simple_file_io ,但它是基于种子的(不是 Gjs),而且看起来很旧。我收到错误(例如第 9 行 Gio.read 上的参数太少),因此无法使用 Unicode 文本进行测试。
一个工作片段会很有帮助。谢谢!
更新:我正在 Ubuntu 12.04 64 位上进行测试。
dbus - 在 Gjs / Gnome Shell 中调用 DBus 方法
如果我有总线名称、对象路径和接口,我如何从 Gjs(在 gnome-shell 扩展中)调用 DBus 方法?
我正在寻找以下 python 代码的等价物:
(请注意,由于某些 python-dbus 魔术,我没有显式使用该接口,但我可以使用iface = dbus.interface(obj, "org.gnome.SessionManager.EndSessionDialog")
。由于我有接口名称,我可以使用查询它的解决方案。另请注意,此示例将是在 Gjs 中很傻,因为它回调到 gnome-shell)
javascript - 在 gnome-shell 中获取扩展对象
我正在开发一个 gnome-shell 扩展。我想知道我是否可以获得其他扩展的对象。
我只找到获取当前扩展对象的方法
ExtensionUtils.getCurrentExtension()
是否有可能访问其他已安装的扩展程序?
gjs - 我应该使用 JavaScript 来开发 Linux(GNOME 和 Gtk)应用程序吗?
我已经使用 Gtk+ 和 GNOME API 完成了 Python 和 C 应用程序,现在我看到由于 GJS(我还听说过种子)在 GNOME 3 中支持 JavaScript。
所以,我不得不问:值得吗?我只是想知道 GJS 是否已经引起了人们的关注并且将来不会被弃用。
javascript - 在 javascript 中解压 GVariant
我在 GSettings 中有一个存储为 GVariant 类型a(ss)
的数组,我想在 Cinnamon Applet 中使用它。我可以使用以下代码成功检索该值:
但我无法打开它。据我所知,我可能需要使用GVariantIter
结构对其进行解包,但文档有限,而且我在 gjs API 中找不到正确的接口(如果确实存在的话)。有谁知道该怎么做?
谢谢!
编辑: 我的架构如下所示:
目前我正在使用外部JSON
文件来存储设置,但这并不是 100% 令人满意的解决方案。我想我可以维护两个as
-type 变量,并保持它们对齐,但是必须有一种方法可以正确地做到这一点,对吧?
gnome-shell - 为 gnome-shell 3.4 和 3.6 编写扩展
我正在为 gnome-shell 编写扩展。但是在 gnome-shell 3.4 中添加了一个菜单,panel._menus
并且在 gnome-shell3.6 中使用 with panel.menuManager
。如何添加适用于每个版本的菜单?