标签: gnome-shell-extensions

如何在 GNOME 3.0 shell 扩展中访问 OAuth 2.0、REST API?

如果我想通过 GNOME shell 扩展访问它下面的 REST API,我将如何从浏览器环境移植 OAuth 2.0 隐式授权流?如何通过登录屏幕将用户重定向到 OAuth 2.0 决策端点?

如果 OAuth 2.0 REST API 无法通过其他方式将 Web 服务与 shell 扩展集成?

javascript rest gnome-shell-extensions oauth2client

5
推荐指数
0
解决办法
232
查看次数

我的 GNOME Shell 扩展如何检测 GNOME 版本?

我想通过我的 shell 扩展支持多个 GNOME 版本。如何检测它运行的 GNOME 版本并适当地分支代码?

gnome-shell-extensions

5
推荐指数
1
解决办法
427
查看次数

如何通过命令行正确启动Gnome-Shell扩展?

myexentension@me.com文件夹复制到后,.../gnome-shell/extensions/我在终端上执行以下命令:

gnome-shell-extension-tool -e myexentension@me.com

然后,我用Alt+ 重新启动会话F2并执行r,一切正常。

但是我只能通过命令行启动扩展程序吗?没有Alt+ F2+ r吗?不重新启动我的gnome-shell会话?

bash shell gnome gnome-shell gnome-shell-extensions

4
推荐指数
2
解决办法
1643
查看次数

在 GTK/GJS 应用程序和 Gnome Shell 扩展之间共享代码

我正在 GJS 中开发 GTK 应用程序,并且喜欢在 Gnome Shell 扩展中重用部分 GTK 代码。但是,我没有找到将 Gtk.Widget图标添加到 Gnome Shell 面板菜单的方法。

我尝试使用GtkClutter.Actorfrom clutter-gtk,但该库似乎已经过时,并且在 Wayland 或 X11 Gnome Shell 中都不起作用,因为它需要 Clutter1.0但看到7已经加载。imports.gi.GtkClutter在扩展中导入时 ,Gnome Shell 会产生以下错误:

Requiring GtkClutter, version none: Requiring namespace 'Clutter' version '1.0', but '7' is already loaded

这里有一些代码来演示clutter-gtk如果直接通过 ; 运行它的话,它实际上是有效的gjs。可能是因为我可以在这里强制执行 GTK 3.0。

gtkclutter.js:

imports.gi.versions.Gtk = '3.0'  // fails if set to 4.0

const { Gtk, GLib, Clutter, GtkClutter } = imports.gi

// …
Run Code Online (Sandbox Code Playgroud)

gtk code-reuse gnome-shell gnome-shell-extensions gjs

4
推荐指数
1
解决办法
873
查看次数

Gnome Shell扩展,将文本复制到剪贴板

我正在开发Gnome Shell扩展程序,但找不到任何有关如何将字符串复制到剪贴板的文档。

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

谢谢您的帮助!:)

copy gnome-3 gnome-shell-extensions

3
推荐指数
1
解决办法
718
查看次数

如何使 Gnome Shell 扩展查询更改

我一直在与可怕的 Gnome API 文档作斗争,并提出了这个扩展:

const St = imports.gi.St;
const Main = imports.ui.main;
const Tweener = imports.ui.tweener;
const GLib = imports.gi.GLib;

let label;

function init() {
    label = new St.Bin({ style_class: 'panel-label' });

    let stuff = GLib.spawn_command_line_sync("cat /home/user/temp/hello")[1].toString();
    let text = new St.Label({ text: stuff });

    label.set_child(text);
}

function enable() {
    Main.panel._rightBox.insert_child_at_index(label, 0);
}

function disable() {
    Main.panel._rightBox.remove_child(label);
}
Run Code Online (Sandbox Code Playgroud)

这应该读取hello文件中的任何内容并将其显示在顶部面板中。但是,如果我更改了hello文件的内容,则必须重新启动 Gnome 才能显示新内容。现在,肯定有一种方法可以动态执行此操作,但我在文档中找不到任何内容。面板中的消息基本上应该始终反映文件中的任何内容。任何想法如何做到这一点?

javascript gnome-3 gnome-shell-extensions

3
推荐指数
1
解决办法
1516
查看次数

处理gnome shell扩展中的窗口焦点事件

我正在为Gnome 3.4开发一个gnome shell扩展.如果任何可编辑文本聚焦在/进出,我的扩展需要捕获窗口事件.

global.stage.connect('notify::focus-key', Lang.bind(this, this._myHandler));
Run Code Online (Sandbox Code Playgroud)

不适合我.

这是一个简单的用例:每当用户点击firefox搜索框时,我都希望运行我的处理程序.

谢谢你的帮助,

gnome event-handling clutter gnome-shell-extensions

3
推荐指数
1
解决办法
1028
查看次数

如何将字符串发送到gnome-shell扩展?

我认为应该使用D-Bus.基本上,我想要这样的东西 - https://wiki.gnome.org/Gjs/Examples/DBusClient - 但反过来说.

在扩展中,会有一个功能:

function f(s) { doSomethingWithS; }
Run Code Online (Sandbox Code Playgroud)

运行后会调用此函数:

$ <something> "abc"
Run Code Online (Sandbox Code Playgroud)

...在终端,有s == "abc".


之后从@Jasper和@owen在建议#gnome-shellirc.gnome.org,我改编自一些代码https://github.com/GNOME/gnome-shell/blob/master/js/ui/magnifierDBus.js:

const St = imports.gi.St;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
const Main = imports.ui.main;

let text;

function init() {
    text = new St.Label({ text: "0:0", style_class: 'panel-text' });
}

function enable() {
    Main.panel._rightBox.insert_child_at_index(text, 0);
}

function disable() {
    Main.panel._rightBox.remove_child(text);
}

const TextInTaskBarIface = '<node> \
<interface name="com.michalrus.TextInTaskBar"> \
<method name="setText"> \ …
Run Code Online (Sandbox Code Playgroud)

dbus gnome-shell-extensions gjs

3
推荐指数
1
解决办法
455
查看次数

GNOME Shell 扩展按钮

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

按钮代码在这里:

const Lang = imports.lang;
const Main = imports.ui.main;
const PanelMenu = imports.ui.panelMenu;
const PopupMenu = imports.ui.popupMenu;
const St = imports.gi.St;

const TimeButton = new Lang.Class({
    Name: "Salah Time",
    Extends: PanelMenu.Button,

    _init: function () {
        let box = new St.BoxLayout({
            style_class: "system-status-icon"
        });
        let label = new St.Label({text: "Salah Time"});
        box.add_child(label);
        this.actor.addActor(box);
    }
});

function init() {

}

function enable() {
    let but = new TimeButton();
    Main.panel._leftBox.insert_child_at_index(but, 1);
} …
Run Code Online (Sandbox Code Playgroud)

javascript gnome gnome-shell gnome-shell-extensions gjs

3
推荐指数
1
解决办法
1760
查看次数

Gnome扩展-运行shell命令

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

javascript linux shell gnome gnome-shell-extensions

3
推荐指数
1
解决办法
1123
查看次数