Я пытаюсь написать приложение GNOME GTK3, используя Gjs, который handles files passed as command line arguments. Для того, чтобы сделать это я подключить open
сигнал Gtk.Application
и установите Gio.ApplicationFlags.HANDLES_OPEN
флаг:.Обрабатывать файлы, переданные в качестве аргументов в командной строке в Gjs Gtk.Application
#!/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]