📌

rangerからExcelやPDFを開く

2024/01/10に公開

rangerのおかげでせっかくターミナル上のディレクトリ移動が楽になったのに、ExcelやPDFを開けないのもどかしい。
とりあえずよく使うこの2ファイルだけでも、直接開けるようになれば!!

ということで、wsl2にてrangerからPDFやExcelを直接開くやり方を調べて、実現が出来たので記載します。

以前調べた、wsl2からPDFとExcelを開くの進化版です。
この時作成したスクリプトをrangerから直接呼び出せるように進化させました。

【必要なもの】

  • rifle.conf:rangerの設定ファイルです。
  • shellスクリプト:PDFやExcelを開くコマンドを記載します。

【手順】

  1. まず、PDFやExcelを開くshellスクリプトを作成します。

    • 今回は、~/src/shellというディレクトリを作成して、そこで管理します。

    サンプル)

    #!/bin/bash
    
    # open-pdf (only windows)
    function open_pdf {
    	current_dir=$(pwd)
    	if [[ "$1" != "" ]]; then
    		file_name="$1"
    		if [[ "$file_name" == *"/"* ]]; then
    			IFS='/' read -ra segments <<<"$file_name"
    			file_name=${segments[-1]}
    		fi
    
    		file_path_win=$(wslpath -w "$current_dir/$file_name")
    		cmd.exe /c start msedge "" "$file_path_win"
    	fi
    }
    
    open_pdf "$@"
    
    • 引数で受け取った文字列からファイル名のみを取得して、windowsのファイルフルパスに変換して、edgeで開く、windowsのコマンドを実行します。
    • 作成したコマンドを実行できるように権限を付与します。
      chmod +x ~/src/shell/open_pdf.sh
    • Excelを開きたい場合は、
      cmd.exe /c start excel "" "$file_path_win"
      にしてあげるとExcelアプリでファイルを開くようになります。
  2. rifle.confに、ファイル拡張子が~.pdfの時に作成したコマンドを実行するように設定を追加します。

    ext x?pdf?, label editor = ~/src/shell/open_pdf.sh "$(basename -- "$@")"
    ext x?xls?, label editor = ~/src/shell/open_xls.sh "$(basename -- "$@")"
    ext x?xlsx?, label editor = ~/src/shell/open_xls.sh "$(basename -- "$@")"
    
    • 一応"$(basename -- "$@")"でファイル名のみを渡しているはずなのですが、ちょっと不安なので、スクリプトの方にパスが来てもファイル名のみを抽出するように処理を記載してます。
    • この設定は、ファイル拡張子がpdfの場合に、~/src/shell/open_pdf.shのコマンドを呼び出し、選択したファイル名("$(basename -- "$@")")を引数で渡すという設定です。

これで、rangerにてPDFやExcelファイルをtextファイル等を開く時と同様の操作で、Windows上のアプリで開くことが出来る様になります。

Discussion