我正在尝试使用Gjs编写一个 GNOME GTK3 应用程序,它处理作为命令行参数传递的文件。为此,我连接了 的open
信号Gtk.Application
并设置了Gio.ApplicationFlags.HANDLES_OPEN
标志:
#!/usr/bin/gjs
const Gio = imports.gi.Gio
const Gtk = imports.gi.Gtk
const Lang = imports.lang
const MyApplication = new Lang.Class({
Name: 'MyApplication',
_init: function() {
this.application = new Gtk.Application({
application_id: 'com.example.my-application',
flags: Gio.ApplicationFlags.HANDLES_OPEN
})
this.application.connect('startup', this._onStartup.bind(this))
this.application.connect('open', this._onOpen.bind(this))
this.application.connect('activate', this._onActivate.bind(this))
},
_onStartup: function() {
log('starting application')
},
_onOpen: function(application, files) {
log('opening ' + files.length + ' files')
this._onStartup()
},
_onActivate: function() {
log('activating application')
}
})
let app = new MyApplication()
app.application.run(ARGV)
当我使用文件参数运行程序时,我希望_onOpen
使用传入的参数来调用它GFile
。而是_onActivate
被调用,就像我在没有任何文件参数的情况下运行它一样:
$ ./open-files.js open-files.js
Gjs-Message: JS LOG: starting application
Gjs-Message: JS LOG: activating application
我正在运行 gjs@1.44。