我正在尝试使用GJS(Gnome Javascript)开发Gnome Shell扩展,但是,我遇到了Lang库(我认为它是一个库,如果不正确的话).但我在网上找不到任何有关它的资源.
在代码中它看起来像这样:
const Lang = imports.lang;
const ObjectA = new Lang.Class({ ... });
Run Code Online (Sandbox Code Playgroud)
我在哪里可以找到有关它的文档?它是一个Gnome lib吗?一个Mozilla lib?
我正在尝试使用gjs为gnome-shell创建简单的gtk应用程序.
它的窗口只包含Gtk.TextView,我想在用户输入时处理事件.
这是我的代码:
#!/usr/bin/gjs
var Gtk = imports.gi.Gtk;
function MainWindow () {
this._init ();
}
MainWindow.prototype = {
_init: function () {
this.window = new Gtk.Window ({
title: "Just Calculator",
window_position: Gtk.WindowPosition.CENTER,
default_height: 400,
default_width: 440,
});
//this.window.show ();
this.window.connect ("hide", Gtk.main_quit);
this.window.connect ("delete-event", function () {
Gtk.main_quit();
return true;
});
this.textbox = new Gtk.TextView();
this.textbox.connect('key-press-event', this._keyPress);
var sw = new Gtk.ScrolledWindow ({shadow_type:Gtk.ShadowType.IN});
sw.add (this.textbox);
this.window.add(sw);
this.window.show_all();
},
_keyPress: function(textview, event) {
print(event, event.type, event.keyval);
textview.buffer.text = 'ok';
return true; …Run Code Online (Sandbox Code Playgroud) (全局)将键组合(例如<Super>+A)绑定到gnome shell扩展中的函数的最简单方法是什么?
检查了几个扩展,我遇到了以下代码:
global.display.add_keybinding('random-name',
new Gio.Settings({schema: 'org.gnome.shell.keybindings'}),
Meta.KeyBindingFlags.NONE,
function() { /* ... some code */ });
Run Code Online (Sandbox Code Playgroud)
我知道组合键是由schema参数指定的,并且可以创建描述组合的XML文件.有更简单的方法吗?
linux hotkeys key-bindings gnome-shell gnome-shell-extensions
Gnome Shell 有很好的快捷方式,但是,我没有找到以编程方式调用它们的方法 假设我想使用 GJS 脚本启动 Google Chrome,将其移至工作区 1,并最大化它,然后启动 Emacs,将其移至工作区 2,并将其最大化。这可以使用 wm.keybindings 来完成:move-to-workspace-1、move-to-workspace-2 和最大化。但是,如何以编程方式调用它们?
我注意到在 GJS 中,Meta.prefs_get_keybinding_action('move-to-workspace-1')将返回动作 move-to-workspace-1 的提示,但我没有找到任何调用该动作的函数。在https://github.com/GNOME/mutter/blob/master/src/core/keybindings.c 中,我找到了一个函数 meta_display_accelerator_activate,但是我找不到这个函数的 GJS 绑定。
那么,有没有办法以编程方式调用 gnome shell 快捷方式?
注意:在研究如何实际执行此操作后,我会问这个问题。其他与我的问题有些相似但实际上不同的问题涉及:
Solarized改进工具之类的工具Vim对python代码进行颜色编码。我要寻找的是: 我已经有一个简单的python脚本(例如test.py),并且正在Gnome终端上执行它。
python test.py
Run Code Online (Sandbox Code Playgroud)
test.py将在终端上输出一些错误。错误示例:
Traceback (most recent call last):
File "test.py", line 2, in <module>
with open('', 'rb') as csvfile:
IOError: [Errno 2] No such file or directory: ''
Run Code Online (Sandbox Code Playgroud)
我希望错误关键字以粗体红色表示,例如,行号具有特定的颜色,以便易于查找错误。
如您所见,Stackoverflow已经很好地对错误进行了颜色编码。在我的Gnome终端上,输出是单色的。如何在终端上获得如此出色的颜色编码输出?
谢谢!
python error-handling terminal colors gnome-shell-extensions
我写了这个辅助功能扩展:
这适用于Gnome Shell v3.14和v3.16中的假设,但不适用于v3.10.它显示了重新启动它之后唯一的初始键盘修饰符状态,并且在此之后永远不会更新它.
这里是完整的代码:
const St = imports.gi.St;
const Mainloop = imports.mainloop;
const Main = imports.ui.main;
const Gdk = imports.gi.Gdk
let button, label, keymap;
function _update() {
let symbols = "????????";
let state = keymap.get_modifier_state();
label.text = " ";
for (var i=0; i<=8; i++ ) {
if (state & 1<<i) {
label.text += symbols[i];
} else {
//label.text += "";
}
}
label.text += " ";
}
function init() {
button = new St.Bin({ style_class: 'panel-button',
reactive: …Run Code Online (Sandbox Code Playgroud) 所以我正在做一个Gnome Shell扩展。我希望能够使用管道运行某些命令。(该命令实际上是"xrandr --query | awk 'something'",但这不是主题)
所以,到目前为止我所做的是
GLib.spawn_async_with_pipes(null,
['/usr/bin/xrandr', '--query', '|', 'awk...'], null,
GLib.SpawnFlags.DO_NOT_REAP_CHILD, null);
Run Code Online (Sandbox Code Playgroud)
但这不起作用!我找不到在带有管道的gnome扩展中运行命令的任何示例。
我是否必须"|"像以前一样在命令中编写代码?
我目前正在尝试重构现有的gnome-shell扩展的代码库。部分原因是引入了单元测试,因为在2016年不使用测试似乎是微不足道的。
经过一番修补,我设法建立了一个有效的node-phantomjs-qunit管道,该管道实际上使我进入了某个地方。
然而,外壳扩展使用自定义imports-mechanic以及一些修订打造类别(例如:String.format通过GJS),使得它不可能在一个单独的环境来实际测试这些文件,那就是:没有内壳。
所以我的问题是:真的不可能为shell扩展编写单元测试吗?
我有两个gnome-shell扩展,升级到3.24后似乎没有加载.在gnome-tweak-tool中,他们有一个带有"Error loading extension"的警告标志图标,没有别的.我尝试使用look glass(lg),它只是说"Error",并且扩展名"没有报告任何错误".
如何调试扩展程序以找出未加载的原因?
我写了一个小的 GNOME Shell 扩展,我想分发给一些同事。
为此,我创建了一个 RPM。安装后需要重新启动 GNOME-Shell 才能使扩展可见,因此可以启用它。使用 X11 时使用<ALT-F2>后跟r或使用 Wayland 时注销并登录。
只有在重新启动后,扩展才在 GNOME-Tweaks 中可见,或者可以使用gnome-extensions enable ....
有人告诉我,可能有一种方法可以让 GNOME-Shell 知道该扩展程序而无需重新启动。我四处寻找,但没有找到任何东西。
那么:GNOME-Shell 扩展是否可以以无需重新启动即可激活的方式安装?
Fedora 31 和 32 上的环境是 GNOME-Shell 3.34 和 3.36。
gnome-shell ×6
gjs ×4
gnome ×3
gnome-3 ×3
javascript ×3
colors ×1
event-loop ×1
glib ×1
gtk ×1
hotkeys ×1
key-bindings ×1
linux ×1
python ×1
terminal ×1