我被要求自定义GNOME 3桌面的布局.显然,这样做的方法是写一个"扩展".
我已经成功完成了一些我想做的事情,但我完全缺乏信息.我无法找到任何有用的文档的任何地方.我浪费了生命中的一整天疯狂地搜索每一个可以想象的搜索词,以寻求有用的信息.
GNOME网站有数百个下载扩展.这些不是简单的3线; 它们是复杂的代码片段.它无法相信任何人都可以在没有文件解释如何做的情况下编写这些内容.
请问,有人能告诉我实际文件在哪里吗?到目前为止,我设法做的最好的事情是拆开现有的扩展程序,试图找到执行我感兴趣的特定位的魔术命令.(这不是一件容易的事!)
命令名称,对象路径,示例程序,任何东西都会有所帮助!
我想开发GNOME Shell扩展,发现它很容易进入开发过程,但我仍然无法弄清楚如何有效地调试/测试我的扩展.
有没有为此目的的工具?在现代浏览器或javascript服务器环境中是否有任何类型的实时控制台?
如何添加事件或其他方法来监听gnome shell扩展上的按键?例如,显示一个对话框,每个按键显示按下的键?
我找不到任何例子.该文件提到了一个keyboard模块,而是与通用名称搜索是困难的.
Class explanation
...
- General utils
- Keyboard: Manage and define the keyboard events, etc. for gnome shell.
Run Code Online (Sandbox Code Playgroud)
(在上面作为上面链接的文档的引用阅读.它被设计为代码,因为由于某种原因引用样式不保留此站点中的换行符)
我找到了一些使用波纹管代码的扩展,其结果类似于我的要求,但我再次找不到特定类和方法的文档:
workViewInjections['_init'] = injectToFunction(WorkspacesView.WorkspacesView.prototype, '_init', function(width, height, x, y, workspaces) {
this._pickWorkspace = false;
this._pickWindow = false;
this._keyPressEventId = global.stage.connect('key-press-event', Lang.bind(this, this._onKeyPress));
this._keyReleaseEventId = global.stage.connect('key-release-event', Lang.bind(this, this._onKeyRelease));
connectedSignals.push({ obj: global.stage, id: this._keyPressEventId });
connectedSignals.push({ obj: global.stage, id: this._keyReleaseEventId });
});
Run Code Online (Sandbox Code Playgroud)
此外,没有任何名字keyboard在那里命名...
-
edit1:更多搜索...我想我可能不得不使用Clutterapi.但同样,没有太多的例子或文件.我去的最远的是这个
edit2:更多搜索.在主ui树上查看gnome shell源代码,我认为答案是使用global扩展代码可用的提到的对象.例如
global.connect('key-press-event', function(if, i, …
我想进入Gnome Shell的扩展开发,但我似乎无法理解我是如何在Looking Glass中执行一些lg实际调试我的东西的任务.
global.log("hi");LG时,它会把我扔回去r(...) = undefined.为什么?Main.ExtensionSystem.loadExtension()但undefined无论是否给它扩展名的字符串或扩展名的对象,它都会返回.如果我拥有这些资源,我至少可以开始为更新的Gnome版本更新一些扩展.我不会问这些简单的问题,如果他们会在某处得到很好的解释,但获取所有信息看起来真的很难(我用谷歌搜索了几个小时).
我正在构建一个Gnome shell扩展,我希望能够使用升级的权限做一些事情.所以,我想我需要使用"政策工具包",但我不知道如何去做这件事.
所以,说我想做点什么ifconfig eth0 down或者做什么ifconfig eth0 up
我可以从终端运行:pkexec ifconfig eth0 down它会提示输入密码然后再进行操作.
但是,我应该如何从扩展内部做到这一点?
我很确定它与在/ usr/share/polkit-1/actions中创建文件有关,但我在互联网上找不到任何东西.
我希望能够设置它,以便不需要输入密码,扩展只需运行某个命令.
我知道允许任何命令运行是一个非常糟糕的主意.这不是我要求的,我希望能够只运行一个程序/命令.
编辑:我不确定,但我认为没有必要输入密码可能是不可能的.我只是知道sudo第一次没有问一段时间的密码,所以我想要类似的功能.不确定有什么可能.
我的Gnome Shell扩展程序有一个文件夹'icons',里面有一个名为'MyIcon.png'的图标文件.我想把它作为St.Icon对象的参数.
let icon = new St.Icon({ /* I need what to code here*/ });
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
塞尔丘克.
我正在尝试开发自己的GNOME扩展.我看过几篇文章:
和官方的.
使用支持JavaScript的IDE开发非常有用.它将帮助我们进行代码折叠,自动完成,轮廓等.
GNOME有自己的IDE用于开发,称为Anjuta.问题是IDE有一些缺点,比如自动完成,代码折叠等等.所以对我来说最好使用Eclipse进行开发,直到Anjuta获得这种功能.
因此,我们开始设置Eclipse以获得JavaScript支持.设置Eclipse
从您的发行版的应用商店安装Eclipse.打开Eclipse并选择您的工作区.转到"帮助"."安装新软件".选择使用"所有可用站点".搜索JavaScript.安装.而已!
我设法使用Eclipse编写我的第一个扩展,但我想启用代码完成功能.我发现这个功能对加快代码编写有很大帮助.
我假设我必须在我的JavaScript项目中设置正确的"包含路径".但我无法找到我必须添加的路径.
注意:我在Fedora 19上使用Eclipse Kepler和JavaScript开发工具.
我编写了一个简单的shell脚本来完成一项常见任务,我希望能够在单击按钮时运行它.我已经使用gnome-shell-extension-tool创建了Hello World示例,但现在我需要知道如何在单击时让它运行任意命令.没有输入或输出需要关注; 它只需要运行.
我在 Ubuntu 20.04 中安装了 Chrome 的 gnome 扩展时遵循了这些步骤。
根据他们的文档,运行了一个命令来安装 chrome-gnome-shell
sudo apt-get install chrome-gnome-shell
仍然在加载 gnome-extensions 页面时,显示错误“尽管 GNOME Shell 集成扩展正在运行,但未检测到本机主机连接器。有关安装连接器的说明,请参阅文档。”
谁能告诉我如何分步骤解决这个问题?
gnome-shell ×7
gnome ×4
gnome-3 ×4
javascript ×2
chromium ×1
debugging ×1
eclipse ×1
gjs ×1
linux ×1
ubuntu-20.04 ×1