日記帳

日記です。

gnome-opne コマンドで日本語ファイル名のファイルを開く

http://d.hatena.ne.jp/sa-y/20070327gnome-open コマンドを使うようしたのですが,どうもこのコマンドは引数に日本語ファイル名を含むパスを渡した場合にファイルが開けないようです.

% gnome-open Hello.txt      # OK
% gnome-open こんにちは.txt # NG
URL を表示する際にエラー: 指定した'場所'は無効です.

ファイルシステムEUC-JPだからかもしれません. UTF-8な環境だとどうなのでしょうねぇ?

切ない限りです… しかし何故か以下のように file スキーム URI にして渡すと同じファイルが正常に開けます.

% gnome-open file:///home/sawai/こんにちは.txt

なかなか謎な仕様ですがとりあえず適当な Ruby スクリプトをでっちあげて回避することにしました. ~/bin/open とかに置いて使います.

#!/usr/bin/ruby
require 'uri'

FILE_OPEN_COMMAND='gnome-open'
uri_str = ARGV[0]
uri_str = '.' unless uri_str 

if URI::extract(uri_str).length == 0 then # not uri
	file_path = File::expand_path(uri_str);
	uri_str = "file://#{file_path}"
end

STDERR.puts("URI : #{uri_str}") if $DEBUG
result = system(FILE_OPEN_COMMAND, uri_str)

第一引数をURI::extract()に渡してURIっぽくないものならファイルパスだと解釈して file スキーム URI に変換してあげるだけです.第一引数しか見てないのでオプションとか指定したとしても全部無視してますが気にしない方向で.やる気ないですし.