パスワードの文字列を渡すには、外部の力を借りるしかないため、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 件のコメント:
コメントを投稿