问题标签 [gnome-shell-extensions]

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

javascript - 使用 Soup 使用具有基本身份验证的 Web 服务

作为 gnome-shell 扩展的一部分,我尝试使用 xmlrpc 使用 Web 服务。Web 服务需要一个基本的身份验证标头。使用 Soup,我得到了以下代码(基本上是来自伟大的 openweather 扩展的蓝图):

我正在使用 Soup 来建立连接。在执行队列回调之前执行验证信号。

尽管如此,在回调的开头,response_body 持有状态码 401 而不是预期的授权。给定的凭据不正确。更正后,呼叫通过。但是,您总是需要以这种方式对提供程序进行两次调用:第一次获取它使用 BasicAuth 的信息,第二次实际进行调用。

有没有办法在第一次调用时直接提供身份验证信息?

0 投票
1 回答
117 浏览

introspection - 使用 GObjectIntrospection 异步调用 GnomeKeyring

我正在编写一个 gnome-shell 扩展程序,显示电话(或电)等预付卡的当前余额。由于这需要给定服务的凭据,我不想将密码存储在 gsettings 中,而是作为 gnome 密钥环中的条目。

目前,我使用同步方式向密钥环询问登录名和密码

这个同步。方法的弱点是,密钥环需要已经打开或提示密码对话框。当使用自动登录启动 gnome-shell 时,这个同步调用会阻止实际启动 shell - 所以不可能输入密钥环密码。

Gnome Developer Wiki命名异步方法

  • GnomeKeyring.unlock
  • GnomeKeyring.find_items

但两者都没有在javascript 环境中找到。

我在哪里可以找到 fedora23 下的 GnomeKeyring-Gir 文件以确认缺少缺少的异步功能?如何实现异步密钥环打开和密码检索?有人看到完全不同的可能方法吗?每一点都有帮助...

0 投票
2 回答
736 浏览

glib - gjs/gnome-shell-extension:从 url 读取远程 jpg 图像并设置为图标

我正在尝试通过允许检索远程图像(jpg)并设置为某个小部件的图标来改进 gnome-shell 扩展。

这是我到目前为止得到的,但由于数据类型不匹配,它不起作用:

这是回调:

我的问题是,如何解析响应,这是一个 jpg 图像,以便我可以用它设置小部件图标?非常感谢!

0 投票
1 回答
337 浏览

javascript - addActor 不是函数

我正在开发 gnome shell 的扩展。我的扩展需要一个滑块到状态区域的指示器。我在设置它时遇到了一些问题,我在这个稍微过时的参考上编写了我的代码,主要问题是源代码中缺少“PopupSliderMenuItem”。所以我做了一些研究,发现它被删除了。此提交有更多信息。

所以我试图在提交时遵循这个(更新的)代码:

我将此代码重构到我的项目中,它看起来像这样:

第一个块在 gnome-shell 源代码上(它设置音量滑块)。我的代码(第二个块)在“addActor”行中抛出了这个异常:

任何人都知道为什么会发生此错误?最奇怪的是,PopupBaseMenuItem 类的源代码有我正在调用的函数。

如果您需要任何其他信息,我很乐意提供。

0 投票
1 回答
967 浏览

gnome-shell - 对 Gnome 扩展进行编程以禁用左边缘拖动手势以显示应用选择器

如果这是在错误的组中,我向所有人道歉。

我们想在 Kiosk 模式下使用 Fedora 23,但最近添加了一个左边缘滑动功能,该功能已添加到 Gnome Shell ( https://github.com/GNOME/gnome-shell ) ,不能轻易禁用。

https://github.com/GNOME/gnome-shell/commit/9c4ffc4bf353fe9c64368f3e194e38b0e8f61311

据我所知,我们的选择是:

1)写一个扩展来解决这个问题——我的最爱

我们与原作者交谈,他建议通过扩展删除手势。

我们已经尝试编写扩展,但无法找到一种方法来遍历 global.stage 中的手势列表以将其删除。

(这些手势是使用添加的global.stage.add_action(gesture),可以使用删除global.stage.remove_action(gesture)。)

此后作者不再回复我们的电子邮件:(

任何关于这方面的建议都会很棒!

2)检查我们正在使用的版本,注释掉代码,重新编译并安装到我们的机器上

这听起来很棒!这样我们也可以修复其他错误。查看 README 文件

https://github.com/GNOME/gnome-shell/blob/master/README

它说:

有关 GNOME Shell 的更多信息,包括有关如何操作的说明

从源代码构建 GNOME Shell 以及如何参与该项目,

见 https://wiki.gnome.org/Projects/GnomeShell

因此,我们将其跟踪到此页面:

https://wiki.gnome.org/Newcomers/BuildGnome

这告诉我们要检出 JHBuild,但当我们使用 JHBuild 时,我们似乎无法弄清楚机器上的 gnome shell 代码在哪里检出。

如果有更简单的制作/安装方法,那就太好了。我们可能只是点击了错误的推荐链接。

3) 回滚到早期版本的 gnome shell

但这让我们回到了检查 gnome shell 和 make/install 的问题,如 #2 所示。

4) 切换到 KDE

我们可以尝试 KDE 而不是 Gnome,但我们已经在 Gnome 中进行了大量测试,这可能是一个重大挫折。

5) 构建一个 Fedora 22 机器以返回 Gnome 3.16——我最不喜欢的

这是一项巨大的努力,我们无法确定哪些发生了变化,哪些会中断。我们的 Kiosk 软件甚至可能无法在 Fedora 22 上运行。但这是万岁的备用计划

0 投票
1 回答
502 浏览

gnome-shell - 如何在 Gnome Shell 中获取击键

我正在尝试编写我的第一个 Shell 扩展,并且 - 正如每篇博客文章一样 - 我因缺乏最新文档而苦苦挣扎......

也就是说,我试图从键盘上获取所有击键,并且 - 查看在线代码和旧邮件列表消息 - 似乎直到最近正确的做法是:

但是,这似乎不起作用。功能set_stage_input_mode和属性StageInputMode似乎都消失了,至少在我运行 GTK 3.20.6 的 Fedora 24 上。

让我的扩展程序抓取用户执行的所有击键的正确当前方法是什么?

0 投票
1 回答
255 浏览

gnome-shell - 有没有办法为 GNOME-Shell 扩展编写单元测试

我目前正在尝试重构现有的 gnome-shell 扩展的代码库。部分原因是引入单元测试,因为在 2016 年不使用测试似乎相当疏忽。

经过一番修补后,我设法设置了一个有效的 node-phantomjs-qunit 管道,它实际上可以让我到达某个地方。

但是,shell 扩展使用自定义imports-mechanic 以及一些修改来构建类(例如:String.format通过 GJS),这使得无法在隔离环境中实际测试这些文件,即:不在shell 内

所以我的问题是:真的不可能为 shell 扩展编写单元测试吗?

0 投票
0 回答
70 浏览

gnome-shell-extensions - 从 gnome 扩展将统一数组传递给 CSGL 着色器

我有一个声明这个制服的 CSGL 着色器......

我正在编写一个 gnome 扩展,它试图在 extension.js 中使用以下代码进行设置...

但是,对 set_uniform_value() 的调用失败。有没有办法从 extension.js 将数组值传递给 CSGL 着色器?

0 投票
1 回答
298 浏览

javascript - Soup - 带有身份验证的 POST 请求

我正在开发一个 Gnome-shell 扩展,但我一直在使用 Soup 联系服务器。基本上,我想发送一个可以在身份验证后执行的 POST 请求。如果已通过身份验证,则响应为 JSON 内容,如果未通过身份验证,则响应内容为 HTML,即站点的欢迎页面。到目前为止,这是我的代码:

根据响应,我可以看到身份验证请求运行良好,但第二个请求返回了 HTML 内容。我通过发送这两个请求签入了 SoapUI,当我设置选项“维护 HTTP 会话”时,它运行良好(我得到了一些 JSON 内容)。

因此,我认为我session在发送第二个请求时不存储身份验证。您知道我在这里缺少什么,以便将身份验证保存在我的会话中吗?

我也尝试使用以下链接中的一些提示,但没有成功:Consume a webservice with basic authentication using Soup

在此先感谢您的帮助。

0 投票
0 回答
97 浏览

javascript - Mutter/Window Groups 如何在 Gnome 中工作?

Gnome 3 的 Shelltile-Extension(https://extensions.gnome.org/extension/657/shelltile/您还可以在其中找到指向 github 的链接)可以对 Windows 进行分组,以便 Gnome 将它们视为一个。

我想了解这是如何完成的,因为它看起来可能对我有用......

查看源代码表明魔法隐藏在 javascript 库 imports.gi.Meta 中,这将我指向 Mutter 和 Gnome,但它们的文档(https://developer.gnome.org/meta/stable/core- reference.html)对于这个主题的新手来说不是很有帮助,或者至少对我来说......有更多信息吗?

(当然,可能是我查看了源代码的错误部分并且我可能看错了方向......无论如何,感谢任何帮助!)