2026年7月2日木曜日

Thunar からパスワード付きアーカイブを文字化け回避しつつ展開したい

使うのは unar とzenity。
パスワードの文字列を渡すには、外部の力を借りるしかないため、zenity を使う。
……if ときたら fi と書いて動かないんだなぁ。
下記のシェルスクリプトを、カスタムアクションに追加。

/home/fuga/script/unar_crypto.sh %f

unar_crypto.sh

#!/usr/bin/env fish # 引数(ファイルパス)を取得 set FILE_PATH $argv # 1. 渡されたファイルパスが空エラー処理 if test -z "$FILE_PATH" zenity --error --title="エラー" --text="展開するファイルが見つからん。" exit 1 end while true # 2. パスワード入力ダイアログを表示 set PASSWORD (zenity --entry --title="パスワード付きアーカイブの展開" --text="パスワードを入力してください:\n(ファイル: "(basename "$FILE_PATH")")") # キャンセルボタンが押された場合は終了 if test $status -ne 0 exit 0 end # 3. 進捗バー zenity --progress --title="展開中" --text="ファイルを展開しています、しばらくお待ちください..." --pulsate --auto-close --no-cancel & set ZENITY_PID $last_pid # 4. unarを実行 set OUTPUT (unar -p "$PASSWORD" "$FILE_PATH" 2>&1) set UNAR_STATUS $status # 5. 進捗バーがまだ残っていれば強制終了 if ps -p $ZENITY_PID > /dev/null kill $ZENITY_PID end # 6. 実行結果の成否チェック if test $UNAR_STATUS -eq 0 zenity --info --title="成功しました" --text="展開完了。" --timeout=2 exit 0 else zenity --error --title="エラー" --text="パスワードが正しくないか、展開に失敗しました。" end end

0 件のコメント:

コメントを投稿

Thunar からパスワード付きアーカイブを文字化け回避しつつ展開したい

使うのは unar とzenity。 パスワードの文字列を渡すには、外部の力を借りるしかないため、zenity を使う。 ……if ときたら fi と書いて動かないんだなぁ。 下記のシェルスクリプトを、カスタムアクションに追加。 /home/fuga/script/unar_cr...