Я пытаюсь написать приложение GNOME GTK3, используя Gjs, который обрабатывает файлы, передаваемые в качестве аргументов командной строки. Для этого я подключаю сигнал 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
Я использую [email protected].