问题标签 [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 投票
8 回答
37938 浏览

javascript - 如何测试/调试 GNOME Shell 扩展?有什么工具吗?

我想开发 GNOME Shell 扩展,发现进入开发过程真的很容易,但我仍然不知道如何有效地调试/测试我的扩展。

有没有为此目的的工具?有没有像现代浏览器或 JavaScript 服务器环境那样的实时控制台?

0 投票
1 回答
1000 浏览

copy - Gnome shell 扩展,将文本复制到剪贴板

我正在研究 Gnome Shell Extensions,但找不到任何有关如何将某些字符串复制到用户剪贴板的文档。

我搜索了 Gnome 扩展 git 但没有任何成功。

感谢您的帮助!:)

0 投票
1 回答
407 浏览

javascript - 设置为 gnome shell 扩展的模式

我正在使用 Gnome Shell 扩展,这需要一些设置(文件夹路径、url 和复选框(打开/关闭))。

我想知道是否可以只使用 javascript 来实现 Gnome 3,或者需要 Python 之类的东西。

我发现的唯一例子是这个扩展https://extensions.gnome.org/extension/135/web-application-menu/,它使用 Python。

如果可以使用 javascript,您是否有任何指向文档的链接,说明如何操作?

非常感谢你 !

0 投票
2 回答
1106 浏览

linux - Gnome shell 权限提升

我正在构建一个 Gnome shell 扩展,我希望能够以升级的权限做一些事情。所以,我想我需要使用“策略工具包”,但我不知道该怎么做。

所以,假设我想做类似ifconfig eth0 downifconfig eth0 up

我可以从终端运行:pkexec ifconfig eth0 down它会提示输入密码,然后执行。

但是,我应该如何从扩展内部做到这一点?

我很确定这与在 /usr/share/polkit-1/actions 中创建文件有关,但我在互联网或其他地方找不到任何东西。

我希望能够对其进行设置,以便无需输入密码,并且扩展程序可以随时运行特定命令。

我知道允许运行任何命令是一个非常糟糕的主意。这不是我想要的,我希望能够只运行一个程序/命令。

编辑:我不确定,但我认为可能不需要输入密码。我只知道 sudo 在第一次之后一段时间内不会要求输入密码,所以我有点想要类似的功能。不确定有什么可能。

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 投票
1 回答
227 浏览

javascript - Gnome-shell 扩展。使用窗户

如何以编程方式切换窗口?我的意思是像 Alt+Tab 一样,但没有任何标签或其他东西。

我试图查看文档,但它对我来说太复杂了(你可以说不要这样做,但我在一个好的文档的帮助下学习了动作脚本,虽然一开始并不知道)。而且我不明白到底该往哪里看,因为有很多库和一些叫做 GObject-Introspection 的东西。当我试图在那里寻找东西时,我会迷失在那里,因为我真的不知道我在寻找什么。这是一个圆圈))。

我也试过看其他扩展的源代码,但比文档还要复杂。听起来我很笨,但我可以赶上它。

那么,有谁知道如何处理切换窗口,我可以在哪里找到我需要的文档或其他方法?

0 投票
1 回答
945 浏览

gnome-shell - st_widget_get_theme_node 拖动错误

我正在尝试在我正在开发的扩展中实现拖放系统,但我遇到了问题。据我所知,dnd 是通过制作这样的draggable对象来实现的

this.actor我要拖放的 Clutter 演员在哪里,然后实现必要的回调。但是,当我这样做时,当我开始拖动时,Gnome Shell 会立即崩溃,并像这样在 stderr 上留下输出

但是,使用窥镜调用该get_theme_node特定小部件上的方法确实可以正常工作!

我必须明确将演员添加到舞台吗?又怎么会get_theme_node在 Gnome Shell 的腹部深处发生故障,而不是从窥镜中失败呢?

0 投票
3 回答
2121 浏览

linux - Gnome Shell 扩展键绑定

(全局)将键组合(例如<Super>+A)绑定到 gnome shell 扩展中的函数的最简单方法是什么?

检查几个扩展,我遇到了以下代码:

我知道组合键是由 schema 参数指定的,并且可以创建一个描述组合的 XML 文件。有没有更简单的方法来做到这一点?

0 投票
2 回答
16356 浏览

gnome-shell-extensions - 编写 GNOME Shell 扩展的文档

我被要求自定义 GNOME 3 桌面的布局。显然,这样做的方法是编写一个“扩展”。

我已经设法完成了一些我想做的事情,但我感到完全缺乏信息。我在任何地方都找不到任何有用的文档。我浪费了一整天的时间在谷歌上疯狂地搜索每一个可以想象的搜索词,拼命地试图找到有用的信息。

GNOME 网站有数百个扩展可供下载。这些不是微不足道的 3 线;它们是复杂的代码片段。它不相信任何人都可以在没有解释如何做的文档的情况下编写这些。

拜托,有人能告诉我实际文件在哪里吗?到目前为止,我能做的最好的事情就是拆开现有的扩展,试图追踪执行我感兴趣的特定部分的魔法命令。(这不是一件容易的事!)

命令名称、对象路径、示例程序,任何东西都会有帮助!

0 投票
1 回答
1273 浏览

c++ - 创建 gnome-shell 小程序/小部件?

我正在寻找一个简单的工具,它将集成到 gnome-shell 中。我希望该工具集成在“右上角的控制栏”中:

在此处输入图像描述

我想在右上角的面板中有一个条目,我需要自定义“弹出窗口”(在图片中,搜索栏所在的位置)。我的问题是:

  1. 那些叫什么?小程序?小部件?
  2. 这个酒吧叫什么?短跑?码头?
  3. 我如何自己创建一个,完全在 C/C++ 中?

我阅读了有关“GnomeShellExtensions”的资源(包括一些第三方文章),也发现了这个“迁移到DBus”指南。看看后一个,您似乎需要使用 JavaScript 创建停靠条目,而您可以使用本地语言来完成其余的工作,这对我来说似乎很奇怪。

所以,我正在寻找一种完全用 C/C++ 来实现它的方法。

我认为这应该是可能的,因为 NetworkManager(在 Dock/Bar 的右侧)也没有 gnome-shell 扩展名(至少我找不到任何扩展名)。