コマンドライン引数として渡されたファイルを処理する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 を実行しています。