gnome-autoar

Nautilus 3.22 は 7z 形式の圧縮と展開をサポートした。
でも p7zip パッケージは入っていない、あれ?

もしかして自前対応なのだろうか。
というかあのダイアログは file-roller ではないし、あれは何?
これはソースコードを見てみるしかないな。

https://github.com/GNOME/nautilus/blob/master/src/nautilus-file-operations.c

凄く長いけど今現在で 8782 行目
autoar_compressor_new という関数をやっと見つける。

正体はコイツか!

gnome-autoar Reference Manual: gnome-autoar Reference Manual

マニュアルも普通に見つかった。
よし早速使ってみよう。

#!/usr/bin/gjs

const GnomeAutoar = imports.gi.GnomeAutoar;
const Gio = imports.gi.Gio;

let infiles = [Gio.File.new_for_path("blog.php")];
let outfile = Gio.File.new_for_path("test.7z");

let ar = new GnomeAutoar.Compressor({
    source_files: infiles,
    output_file: outfile,
    format: 4,
    filter:1,
    create_top_level_directory: false
});
ar.start(null);

//=> JS ERROR: Error: Cannot convert non-null JS value to G_POINTER

あれ?

GnomeAutoar.Compressor – Classes – GnomeAutoar 0.1

source-files の定義が int ってなんだよ…
Gjs や PyGObject からは現行では使えないのかな?
もう少し調べる。