CB7

先日 gnome-autoar というのを見つけた。
けれどソースコードには肝心の圧縮展開を行うコードは無かった。

GitHub – GNOME/gnome-autoar: Automatic archives creating and extracting library

中身をよく見ると archive.h を include している。
どうやら圧縮展開は libarchive 依存のミドルウエアってことみたい。

てゆーか libarchive って今は 7z 圧縮に対応しているってことかYO!

libarchive – C library and command-line tools for reading and writing tar, cpio, zip, ISO, and other archive formats @ GitHub

でも CB7 を作っても Nautilus 上でサムネイルされない。
おいおいマジで圧縮展開だけなのかよ。

いや、コミックブックアーカイブって五種類もあったのね。
ACE なんて見たことが無いし TAR はコレだけだと非圧縮だし無視でいいと思うが。

Comic book archive – Wikipedia

Evince でも CBR, CBZ, CB7 の三つをサポートしているみたい。
だけど Evince はどうやら p7zip 依存のようだ。
それに 7z だと file-roller で開くことができない、こいつも同様か。

ということで、現状では p7zip を入れておかないと色々不便だ。

sudo dnf install p7zip

United RPMS は unrar はあるけど rar は無いことに今頃気が付く。
コイツは削除して RARLAB のを自分で入れる。

よし3形式ともサムネイルとプレビューができるようになったぞ。
Evince, file-roller も対応、後は我がアプリ。
CBR と同じ方法でイケた、つーことで更新。

結局 gnome-autoar はどうでもよかった。
サムネイル表示されないのではビューアを作っても虚しいもんね。

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 からは現行では使えないのかな?
もう少し調べる。

file-roller command

忘れるところだった。
以前のように形式自由でアーカイブ可能な Nautilus Script を作らないと!

筆者は「新しくなったことを全否定する老人は死ね」な人間である。
でも今回は否定させて、だってデフォルトの機能では tar.gz が無いんだ。

7z なんて Kivy がソレで配布されていて mac でスゲー困ったし使いたくない。
GNOME はあの3形式以外は使ってほしく無いのかもだが流石に無理。
サルな人はすぐ昔のバージョンに戻そうとする、筆者は作る。

でも多数のアーカイブ形式に対応するって大変そう。
と思うけど実はもうソレをやっているものがあるんです。
file-roller はコマンドとして使えます。

file_roller

–add-to オプションで拡張子を指定すれば自動判別でアーカイブしてくれる。
ということでこんなシェルスクリプトを、拡張子のとうりな形式になります。

#!/bin/sh

path=`pwd`
name=${path##*/}
file-roller --add-to="${name}.tar.gz" "$@"

で。
Nautilus Script にコピーして送ってみる。

targz

これだけでで半角スペース及び日本語に対応。
以前と同じく親ディレクトリ名でアーカイブされる。

コレを Gjs なんかを使って GUI を以前みたく作って実行させればいい。
と思ったけどなんかコレで充分な気がしてきた。
Comipoli もやんなきゃいけないし、後は気が向いたら。

追記

下記だけで以前のダイアログが出せる、何を今頃だけど。

#!/bin/sh
file-roller --add "$@"

Fedora 25 Install (SSD) p4

困った。
Fedora 25 では管理者権限で GUI が使えなくなっているようだ。
ぶっちゃけ httpd.conf を弄る時くらいしかその必要は無いんだけど。

sudo_gedit

beesu を試しにいれてみたけど当然のように同じ結果に、vi 等で弄ろう。
nano を勧めとくけどデフォルトでは入っていない。
macOS 版と違ってキッチリローカライズされているのよね。

PHP が 7.0.13 になっているけど httpd から使う方法は変わっていないな。
httpd で public_html を使う – L’Isola di Niente
はそのまんま使えるようだ、一応 nano にスクショは変更。

codec と Flash – L’Isola di Niente
は UnitedRPMs を追記、RPM Fusion は多分以前と同じだろう。

そういえば ffmpeg も iPhone 動画の編集に必要だった。
いや盗撮じゃないですよ、作業手順の仕事で使ってみたら便利だったんで。
コレも UnitedRPMs にあるね、よかった。

他のページは特に追記や変更する必要は無いっぽい。
トップページでお知らせするほどの変更ではないのでココで。

プログラミングに関してはなんか Rust がどうのとか。
rustc コンパイラはデフォルトでは入っていないんですけど…

てかだからライブラリが無いと言語だけじゃ何もできないってば。
と思ったけど GObject Introspection は既にされているようだ。
GObject Introspection bindings for Rust ? GitHub
でもマニュアルやサンプルコードは見当たらない。
valadoc レベルのドキュメントがないと誰も使わないだろうなぁ。

Python3, Perl5, Gjs, jjs, Lua5 は今までどおり最初から入っている。
gcc と標準ヘッダもある、もうお腹いっぱいだよ。
どうでもいいけど Swift パッケージも dnf で導入できるようになった。
boost と Qt5 が一緒に入るみたいだが誰が使うんだろう?

あれ? Ctrl+Shift+E で html_escape GeditPlugin が動くぞ。
昨日は動かなかったのに、他で色々弄っていたせいだったのだろうか。
ということはコイツは更新する必要無しってことか、やったぜ!

とりあえず再構築完了。

ところで、地味に困ったこと。
gnome-terminal のアプリケーションメニューから[新しいウインドウ]が消えた。
Ctrl+Shift+N を使えばいいだけなんだが何故消したんだろう?

Fedora 25 Install (SSD) p3

筆者が現在進行形で公開しているものは Fedora 25 に対応しているのだろうか?

Nautilus をスクリプトで拡張

そのまま使える。
大半がシェルスクリプトを使っているだけだしそりゃね。

Gedit 及び Eye of Gnome プラグイン

eog は最新版で問題無し。
gedit は作った本人は気になる所があるけど普通に動く。
と思ったけど Ctrl+Shift+E で html_escape が動いてくれない。
どうやら他の機能に割り当てされてしまったみたいだがソレが何か解らない。
うーんどうしよう?

Linux アプリケーション

Y901x は何も問題なく動く、私的には意外。
つまり Gjs の ARGV は文字コードが Unicode になっていないのは以前のまま。
Python 等も昔はこんな感じだったし macOS の JXA 同様に今後どうなるかだ。

Comipoli は…
cbz をまったく表示できない!
何故なんだろうと調べたら。

comicbook

ContentType が以前は application/x-cbz だった。
application/vnd.comicbook+zip という定義ができちゃったのね!
ちなみに cbr は application/x-cbr のまま、本家ということか。
cbr ってコミックブックアーカイブの頭文字だったのね、何を今更だが。

ContentType 判別では環境ごとに違うってことになるな。
拡張子判別に書き換えしたら普通に動いたのでそう書き換えるしかなさそう。
そこらをもう少し調べて更新する。

何だろう、あんまり面白くないぞ。
何故こうなるかが把握できてしまうと急につまらなくなる。
ジムカーナをヤメた時もバイクをスクーターに変えた時もそんな感じだった。
理解できてしまうと楽しさではなく作業になるんだよね。