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

gtk - 如何从 Gtk 应用程序在 Gnome shell 中创建标题栏菜单

是否可以从 Gtk 应用程序内部创建标题栏菜单?是否可以使用 C 或 Python,或者是否需要启动 GJ 并创建类似于 gnome shell 扩展的菜单?

图片显示了我正在谈论的菜单(在本例中为 gnome shell 扩展)。我不是在谈论应用程序菜单(在屏幕截图中的“生成器”菜单),因为它仅在 Gtk 应用程序具有焦点时可见,但我想要一个始终可见的菜单。

在此处输入图像描述

0 投票
1 回答
174 浏览

gtk - 如何将菜单项添加到 WebKitContextMenu(javascript、gjs)?

当我尝试使用此代码将菜单项添加到 web 视图时:

应用程序退出并出现错误“分段错误(核心转储)”将菜单项添加到 WebView 的上下文菜单的正确方法是什么?

0 投票
1 回答
192 浏览

javascript - 在 JavaScript 中创建动态重新调度 GSource

GLib 的主循环支持为周期性间隔调度回调函数,使用g_timemout_source_new和相关函数。回调将在预定的时间间隔后重复调用,直到它返回false

我现在想用动态间隔修改这个过程。回调应该能够返回一个时间值,而不仅仅是trueor ,该时间值应该传递到下一次调用。false

在 C 中这样做非常简单:可以创建一个新的 GSource 类型,它与调度函数中的超时源不同,然后在设置下一个过期时考虑返回值。

不幸的是,我正在为 GNOME Shell 编写扩展程序,所以我坚持使用 JavaScript。将上述策略移植到 JavaScript 的主要关键点似乎等同g_source_new function, new GLib.Source. 首先,它需要初始化结构类型的长度,这将由sizeofC 中的运算符计算。我不知道如何在 JavaScript 中获取该值。此外,尝试创建GSourceFuncs Struct是错误的,它是此构造函数的第二个参数,它是保存调度函数所必需的。

如何在 JavaScript 中创建新的 GSource?

0 投票
1 回答
178 浏览

javascript - 在 GNOME Shell 扩展中包含二进制组件

为 GNOME Shell 开发扩展主要涉及通过 GObject Introspection 使用 C API。这意味着使用 C 语言可以完成的大多数事情也可以在 JavaScript 中完成。但是在某些情况下,C API 的功能(还)不能通过自省绑定来重现。能够使用本机 C 代码弥合这些差距会很有用。

GNOME Shell 扩展可以包含从 C 代码创建的二进制组件吗?如果是这样,它们是如何集成的?

0 投票
2 回答
596 浏览

gnome - 如何检查 Gjs 类是否已经定义?

我正在编写首选项视图 GNOME shell 扩展和使用该imports.lang函数以面向对象的方式编写应用程序时面临的问题。

第一次打开首选项窗口有效,但随后的窗口会引发以下错误:Error: Type name Gjs_MyWindow is already registered. 第一次关闭窗口时,我收到此错误:TypeError: prefsModule.init is not a function.

以下更具命令性的代码有效:

根据抛出的错误,我的猜测是该类正在被重新定义。如何避免重新定义并接收定义的类?(有没有我可以参考的文档?)

0 投票
1 回答
2068 浏览

javascript - GNOME Shell 扩展按钮

我正在尝试仅使用 JavaScript 编写扩展。我是通过 Hello World 用 Python 写的!代码。但是,在开始时,我的菜单项按钮不起作用。此外,我无法使用 Hello World 添加菜单项!代码。我想,我想念一些东西。

按钮代码在这里:

GJS 的教程不多。我已经在尝试通过阅读其他扩展来写作。

谢谢。

0 投票
2 回答
2481 浏览

javascript - Gnome 扩展 - 运行 shell 命令

我正在编写一个简单的扩展来通过单击扩展按钮打开浏览器。我想知道是否有一个函数可以执行传递的 shell 命令作为参数。此外,如果有人可以为扩展开发提出一个好的简单参考,那将非常有帮助。

0 投票
1 回答
250 浏览

httprequest - GJS 同步 GET http 请求

我已经尝试并搜索过,但我没有找到任何关于如何发出同步 GET 请求以获取 JSON 的示例或说明。我发现的唯一一件事是使用 SOUP 进行异步请求的一个简单代码,它确实有效,但它是异步的,所以对我没有用:/ 我认为 SOUP 可用于发出同步请求,但 gjs 文档的工作方式没有不要帮我找出方法。所以我想,肯定有人知道如何做到这一点,他/她只是没有在任何地方发布。所以我问。请问,我该怎么做?

0 投票
1 回答
222 浏览

gnome - 如何从 gjs 访问 gnome-contacts 或其数据

根据这个答案(和评论) gnome-contacts 是 Gnome 的联系人集中的地方,它通过心灵感应进行了很好的聚合,但访问该信息的唯一方法似乎是 Gnome Shell 搜索提供程序,它只提供一个头像和一个名字。我一直在努力在 gjs 中复制部分 gnome-contacts,但在绑定方面遇到了很多麻烦。

有没有更简单的方法来实现这一点,或者我是否可以为 gnome-contacts 本身生成 vapi/gir 绑定,以便我可以像库一样使用它?

可能的替代解决方案:

在 GJS 中使用 libfolks 目前被Bug #694115阻止,但对于那些只需要 Google 联系人的人来说,可以通过GData在 GJS 中使用,如果可用的话,您甚至可以使用Gnome 在线帐户作为身份验证源。

0 投票
1 回答
110 浏览

gjs - 如何在gjs中获取进程pid?

我真正想做的是 call getpid(),但在 gjs 中似乎没有任何理智的方法可以做到这一点。我能想到的最好的是:

// There's got to be a better way to get our pid in gjs? let credentials = new Gio.Credentials(); let pid = credentials.get_unix_pid();

这行得通,但太可怕了。有没有更好的办法?