Windows環境で作成された圧縮ファイルが添付されているもののうち、圧縮ファイル内のファイル名が日本語である場合、
Linux環境でこの圧縮ファイルを展開すると、ファイル名が文字化けしてしまう。
これは、Windows環境で使用されているファイル名の文字コードと、Linux環境で使用されるファイル名の文字コードが異なるためである。
Thunderbirdは適切に添付ファイル自体のファイル名文字コードの変換を行ってくれるため、
この問題が起きるのは、圧縮ファイル内のファイルだけである。
調べてみると、unarというソフトウェアを用いれば、展開時にそのような問題が生じないことがわかった。
unarが展開時に文字コードの変換を自動で行ってくれていると考えられる。
そこで、ThunderbirdでZIP添付ファイルを開く方法として、unarをデフォルトにしたい。
以下ではそのための手順を扱っている。
unarにはGUIがない。そのため、適切なスクリプトの作成と、ZIPファイルとの関連付けが必要である。
□ unar をインストールした。
# yum install unar
□ 次の2種類のスクリプトを作成した。
スクリプトを作成するディレクトリを作成し、移動した。
# mkdir -p /usr/local/share/scripts/decompress
# cd /usr/local/share/scripts/decompress
# pwd
/usr/local/share/scripts/decompress
2種類のスクリプトの説明
1つ目のスクリプトは、本体である。
ユーザーのデスクトップ上に、_TMPというフォルダを作成し、その中にファイルを展開する処理を行っている。
また自動的に、展開先フォルダ_TMPを開く処理も行っている。
ターミナルで開くので、パスワードの入力も可能である。
ターミナルはカウントダウンで自動的に閉じられる。
2つ目のスクリプトは、1つ目のスクリプトのラッパーの役割を果たしている。
ZIPファイルとの関連付け並びにThunderbirdから呼び出されるのはこちらのラッパーの方である。
スクリプトで使用されているコマンドのパスは環境に応じて変更する。
[root@ed04b3dfde72 decompress]# vi unar.sh #!/bin/bash TARGETFOLDER=~/デスクトップ/_TMP UNAR=/usr/bin/unar FILEMANAGER=/usr/bin/caja MKDIR=/usr/bin/mkdir $MKDIR -p $TARGETFOLDER $UNAR "$1" -o $TARGETFOLDER $FILEMANAGER $TARGETFOLDER countdown=7 while [[ ${countdown} -ge 0 ]] do echo -n ${countdown} echo -ne "\r" sleep 1 countdown=$(( ${countdown} - 1 )) done
[root@ed04b3dfde72 decompress]# vi decompress.sh #!/bin/bash TERMINAL=/usr/bin/mate-terminal DECOMP=/usr/local/share/scripts/decompress/unar.sh $TERMINAL -e "$DECOMP '$@'"
実行権限を与えた。
# chmod +x unar.sh
# chmod +x decompress.sh
[root@ed04b3dfde72 decompress]# ls -al
total 16
drwxr-xr-x 2 root root 4096 Jul 10 06:23 .drwxr-xr-x 3 root root 4096 Jul 10 05:20 ..-rwxr-xr-x 1 root root 126 Jul 10 05:29 decompress.sh-rwxr-xr-x 1 root root 366 Jul 10 06:23 unar.sh
□ 圧縮ファイルを開く方法として「decompress.sh」を関連付けた。
2つの方法がある。
1つは、以下に示すように、デスクトップ上の操作で行う方法である。
もう一つは、ターミナルで専用ファイルを編集することによって行う方法である。
こちらの手順は、後に「アプリケーションの定義をターミナルで行う方法」で示している。
専用ファイルを編集する方が柔軟である。
いずれかの方法を採用する。
◆「デスクトップ上の操作で行う」
◯ファイルと既定のアプリケーションの関連付け
デスクトップ上に何かzipファイルを置いて、右クリックメニューを表示させた。
メニューの「別のアプリで開く(A)」をクリックした。
すると、次の画面が開くので、「▼コマンドを直接指定する(U)」をクリックし、
テキストボックスに、先程作成した、decompress.sh のパスを入力した。
「これを"ZIP アーカイブ"のファイルを開くアプリケーションとして記憶する(R)」にチックを入れておく。
そして、「開く」ボタンを押すと、「ZIPファイルとの関連付け」が完了する。
以上で、ZIPファイルの展開方法として「decompress.sh」が関連付けられているので、
Thunderbirdから添付ZIPファイルを直接開くことが可能になった。
メールに添付されたファイル名を右クリックすると、次のようなメニューが表示された。
既に、「decompress.sh(既定)」が選択されていたので、「OK」をクリックした。
上記ど同様に展開処理が始まった。
圧縮ファイルにパスワードがかけられている場合は、先程のターミナルの画面にパスワードの入力が求められる。
それ以外は同様である。
◆「アプリケーションの定義をターミナルで行う方法」
(上記の手順で既定アプリケーションを設定していれば不要)
ユーザーホームディレクトリ内の次のディレクトリに移動した。
$ cd ~/.local/share/applications
$ pwd
/home/user11/.local/share/applications
次の形式のファイル名でアプリケーションを定義した。
形式:userapp-NAME.desktop
以下では、decompress.shという名前を使っている。
Execに記載のシェルスクリプトは、上記で定義しているラッパースクリプトである。
Nameは任意のアプリケーション名である。
$ vi userapp-decompress.sh.desktop
[Desktop Entry]Encoding=UTF-8Version=1.0Type=ApplicationNoDisplay=trueExec=/usr/local/share/scripts/decompress/decompress.sh %fName=decompressComment=decompress.sh
以上で、アプリケーションの定義が完了した。
この時点で、デスクトップ環境において、ファイルの右クリックメニューの「別のアプリで開く(A)」のアプリ一覧に表示される。
さらに次のように既定のアプリケーションとして登録すれば、Thunderbirdなどからファイルをこのアプリケーションによって直接開くことができるようになる。
次のファイルを編集することで、ファイルの種類ごとに既定のアプリケーションを関連付けられる。
ここでは、ZIPファイルを開くための既定のアプリケーションとして登録する。
$ vi ~/.config/mimeapps.list
[Default Applications]application/x-desktop=pluma.desktopapplication/x-shellscript=pluma.desktoptext/plain=atril.desktopapplication/zip=userapp-decompress.sh.desktop[Added Associations]application/zip=engrampa.desktop;xarchiver.desktop;userapp-decompress.sh.desktop;text/plain=atril.desktop;
decompress.shを用いたZIPファイルの展開が実際にどうなるかについては、◆「デスクトップ上の操作で行う」での説明を参照。
■ ファイル関連付けを解除する手順
次のファイルを編集する。
例えば、先程作成した「ZIPファイルとdecompress.shとの関連付け」を解除したい場合は、
次のマーカーを引いた箇所を削除すればよい。
[user11@ed04b3dfde72 ~]$ vi ~/.config/mimeapps.list
[Default Applications]application/x-desktop=pluma.desktopapplication/x-shellscript=pluma.desktoptext/plain=atril.desktopapplication/zip=userapp-decompress.sh-LKCZ50.desktop[Added Associations]application/zip=engrampa.desktop;xarchiver.desktop;userapp-decompress.sh-LKCZ50.desktop;text/plain=atril.desktop;
<参考>
・Thunderbird: specify handler for opening file and arguments
< https://unix.stackexchange.com/questions/610187/thunderbird-specify-handler-for-opening-file-and-arguments > 2021年7月10日
・Differences between /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
< https://askubuntu.com/questions/308045/differences-between-bin-sbin-usr-bin-usr-sbin-usr-local-bin-usr-local > 2021年7月10日
・Linux Mint Tips: Windows 由来のファイルの文字化けの対処法
< http://baker-street.jugem.jp/?eid=757 > 2021年7月21日