English | 日本語
XeFM はアーカイブファイルを主要な機能として扱います。選択したファイルからアーカイブを作成し、展開し、その中身をその場でブラウズできます。先にディスクへ展開しなくても、普通のディレクトリと同じようにアーカイブの中へ移動できます。
ブラウズと展開:
| 形式 | |
|---|---|
| 常に対応 | ZIP(.zip)、TAR(.tar)、圧縮 TAR(.tar.gz、.tgz、.tar.bz2、.tar.xz) |
| Python 3.14 以上 | Zstandard TAR(.tar.zst、.tzst) |
| libarchive がある場合 | 7-Zip(.7z)、RAR(.rar)、ISO 9660 ディスクイメージ(.iso)、Cabinet(.cab)、cpio(.cpio)、RPM パッケージ(.rpm) |
作成: 上の形式のうち .rar、.cab、.rpm 以外すべてに対応します。この 3 つは XeFM で読めても書けません。RAR を書けるのは WinRAR だけで、残りの 2 つには libarchive の書き込み機能がないためです。作成時のプロンプトでこれらの名前を入力すると、黙って .tar.gz を作るのではなく、その旨が表示されます。XeFM が作成する .7z は、7-Zip 自身が既定で書き込むのと同じ LZMA2 圧縮を使います。どの形式でもパスワードは設定できません(対応している暗号化を参照)。
表の最後の行にはシステムライブラリが必要です(下のこれらの形式が表示されない場合を参照)。それ以外は何も必要ありません。Zstandard も同様で、これは libarchive ではなく Python 自体が提供しています。
キーバインドの一覧は XeFM ユーザーガイドを参照するか、XeFM で F1 を押してください。
.zip や .tar.gz)。アーカイブは反対側のペインに作成されます。ディレクトリは再帰的に追加されます。既定では、作成前に XeFM が確認を求めます。
CONFIRM_ARCHIVE_CREATE = False # default: True
各アーカイブは、反対側のペインに作られる専用のサブディレクトリ(アーカイブ名にちなんだ名前)へ展開されます。選択項目のうちアーカイブでないもの(普通のファイルやディレクトリ)はスキップされ、いくつ飛ばしたかがログに表示されます。展開先のディレクトリがすでに存在する場合は、何かを書き込む前に確認画面でその旨が示されます。中のファイルは上書きされることがあります。
複数のアーカイブは 1 つの操作として展開されます。進捗ダイアログはまとめて 1 つで、Esc を押すとその時点で止まります(すでに展開されたものは残ります)。読めないアーカイブがあった場合は、その名前が報告され、残りのアーカイブの展開は続きます。
既定では、展開前に XeFM が確認を求めます。
CONFIRM_EXTRACT_ARCHIVE = False # default: True
展開する代わりに、アーカイブを開いて中を直接見ることもできます。
アーカイブの中身は仮想ディレクトリとして表示されます。普通のディレクトリと同じように、ファイルやフォルダーが名前、サイズ、更新日時とともに並びます。パス表示には archive:// URL が示され、アーカイブのパスとその中での現在位置が # で区切られます。例:archive:///home/user/documents/backup.zip#projects/
アーカイブはどのディレクトリとも同じようにブラウズできます。カーソル、ページ送り、open_item はすべてファイルシステム上と同じように動き、アーカイブのルートで go_parent を実行するとアーカイブから出ます。
例:/home/user/documents/ で backup.zip の上で ENTER を押すと archive:///home/user/documents/backup.zip# が表示され、projects/ の上で ENTER を押すとさらに奥へ進み、Backspace を 2 回押すとファイルシステムに戻ります。
ファイルにカーソルを合わせて view_file を実行します。XeFM はそのファイルを一時的な場所に展開して内蔵ビューアーで表示し(タイトルにはアーカイブの完全なパスが表示されます)、ビューアーを閉じると一時ファイルを自動で削除します。
ブラウズ中のアーカイブから個別のファイルやフォルダーを取り出すには、コピーを使います。
選択したファイルはコピー先に展開されます。選択したディレクトリは、構造をそのまま保って再帰的に展開されます。コピー先はローカルのディレクトリでも S3 でもよく、XeFM は展開してそのままアップロードします。(アーカイブからアーカイブへのコピーには対応していません。アーカイブは読み取り専用だからです。)
ローカルへのコピーではファイルごとにバイト単位の進捗バーが表示され、大きなファイルの途中でも Esc で中断できます。書きかけのファイルは削除されます。S3 へ直接コピーする場合は、まだファイル内の進捗が表示されません。途中で止められるようにしたい場合は、まずローカルのディレクトリに展開してください。
項目の上で I を押すと詳細が表示されます。名前、展開後と圧縮後のサイズ、圧縮率、更新日時、パーミッション、アーカイブの種類、アーカイブ内のパスです。
アーカイブの一覧は、XeFM のどこでも使えるクイックソートのアクション(quick_sort_name、quick_sort_ext、quick_sort_size、quick_sort_date)や sort ダイアログでソートできます。
ソートモードにかかわらず、ディレクトリは常に先頭に並びます。
アーカイブをブラウズ中に find_files を実行すると、ファイル名検索のダイアログが開きます。パターン(*.txt のようなワイルドカードも使えます)を入力すると、一致したファイルがアーカイブ内の完全なパスとともに一覧されます。結果の上で ENTER を押すとその場所へ移動します。検索の対象は現在のアーカイブだけで、現在位置から再帰的にたどります。大きなアーカイブでは、検索中に進捗が表示されます。
アーカイブのブラウズは XeFM の 2 つのペインと組み合わせて使えます。一方のペインでアーカイブをブラウズしながら、もう一方に普通のディレクトリ(または別のアーカイブ)を表示し、その間でファイルをコピーできます。ペイン同期のアクションはペイン間で動作し、アーカイブでも使えます。
XeFM はパスワード付きのアーカイブも展開・ブラウズできます。ZIP は常に、7z はシステムライブラリが対応している場合に限ります(対応している暗号化を参照)。パスワードが必要になると、XeFM は伏せ字の入力欄でパスワードを尋ねます。入力した文字は • と表示され、入力欄から値をコピーしたり切り取ったりすることはできません。
extract_archive を実行します。パスワードが間違っていると、XeFM はその旨を伝えて再度尋ねます。パスワードが正しいと確認できるまではディスクに何も書き込まないので、間違ったパスワードのせいで展開しかけのフォルダーが残ることはありません。Esc を押すとキャンセルします。
パスワードはセッションの終わりまで記憶されるので、尋ねられるのはアーカイブごとに 1 回だけです。アーカイブを展開したあとで同じアーカイブをブラウズする場合も、記憶されたパスワードが共有されます。
zip -e、多くの OS の「パスワード付きで圧縮」機能、多くのアーカイバーが作る「traditional PKWARE」暗号化)には完全に対応しています。.7z はファイル名の一覧までは出ても、中身は読めません。XeFM はこれを検出してその旨を伝え、どう答えても通らないパスワードを尋ねることはしません。XeFM が復号できないアーカイブでは、入力したパスワードをすべて拒否するのではなく、「its encryption is not supported」と表示してプロンプトを出しません。TAR アーカイブ(.tar、.tar.gz、.tar.bz2、.tar.xz)が暗号化されていることはありません。
パスワードは実行中のセッションの間だけメモリに保持され、ディスクに書き込まれたりログに記録されたりすることはありません。アーカイブには UTF-8 のバイト列として渡されます(ASCII だけのパスワードは常に使えます)。
アーカイブをその場でブラウズしているとき、その中身は読み取り専用です。ファイルのコピーによる取り出し、表示、ブラウズ、検索はできますが、ブラウズ中のアーカイブへファイルを削除・移動・コピーすることはできません。試みると XeFM が理由を説明するメッセージを表示します。アーカイブの中身を変更するには、展開し(U)、ファイルを編集して、新しいアーカイブを作成してください(P)。
そのほかの注意点:
7z、RAR、ISO、CAB、cpio、RPM は Python だけでは扱えません。XeFM はシステムライブラリの libarchive を使います。これらのファイルの上で Enter を押したときに、中へブラウズする代わりにビューアーで開いてしまう場合や、作成時のプロンプトで .7z の名前を入力したのに .tar.gz ができてしまう場合は、XeFM が使えるライブラリを見つけられていません。(ZIP、TAR、.tar.zst は影響を受けません。これらはライブラリを一切使いません。)
F1 を押して「Archive Formats」までスクロールしてください。 この表は XeFM の起動時に作られるので、いま使っている XeFM が開ける形式と作成できる形式が正確に示され、その下の行には使用中の libarchive が表示されます。
Using libarchive 3.7.4 zlib/1.2.12 liblzma/5.4.3 bz2lib/1.0.8 — /usr/lib/libarchive.dylib
表にない形式は、ライブラリがそのために必要な部品なしでビルドされているものです。XeFM は、提示しておいてあとで失敗するのではなく、その形式を最初から外します。ライブラリが見つからなかった場合はその旨が理由とともにこの行に表示され、ログペイン(L)にも同じメッセージが出ます。対処方法:
/usr/lib/libarchive.dylib で十分新しく、デスクトップアプリも同じシステムのライブラリを使います。libarchive13、libarchive など)をインストールしてください。Windows — Windows にはシステムの libarchive がありません。デスクトップアプリは libarchive を同梱しているので、設定は不要です。ターミナル版では、xefm-bin-deps から archive.dll(XeFM のデスクトップアプリ自身が使っているビルド)をダウンロードし、XeFM にその場所を指定します。
setx LIBARCHIVE "C:\path\to\libarchive-3.8.9-windows-x64\bin\archive.dll"
この変数は XeFM の起動時に読み込まれるので、設定後は新しいターミナルを開いてください。
システムのライブラリではなく特定のライブラリを使うには、XeFM を起動する前に LIBARCHIVE にその完全なパスを設定します。
export LIBARCHIVE=/opt/libarchive/lib/libarchive.so
libarchive がなくても、ほかには何も変わりません。ZIP と TAR はこれまでどおりに動き、該当するファイルは普通のファイルとして扱われるだけです。何もインストールしたくない場合は、FILE_ASSOCIATIONS のエントリでこれらのファイルを外部の展開ツールに渡すこともできます(ファイルの関連付けを参照)。
find_files でファイルをすばやく見つけましょう。