🔗

Windowsの.urlファイルをLinuxDEでもダブルクリックで開く(+α)メモ

に公開

TL;DR

.urlを受け取ってURL行を取り出すスクリプトを作成した後、application/x-mswinurlをハンドルして先のスクリプトを呼び出すエントリを追加します。

はじめに

Windowsが前提で回っている環境では、共有フォルダに格納された.urlファイルを開くことを要求されることが多々あります。
もちろんテキストエディタで開いてURL行からコピペしても問題ないのですが、頻繁に開く必要がある場合には多少不便なので、これを右クリックメニュー or ダブルクリックで開けるようにしてみました。

環境

Fedora 42 (KDE Spin)
KDE Plasma 6

手順

スクリプトの作成

.urlをパースしてデフォルトブラウザで開くコマンド(スクリプト)を作成

以下のようなスクリプトをお好きな場所(パス通ってるとちょっと便利かも)に作成すればOKです。
わたしは/home/{user}/bin/open-urlに作成していますが、常識的な場所であればおそらくどこでも問題ありません。

#!/usr/bin/env bash
file="$1"
if [ ! -e "$file" ]; then
	notify-send -u low -a ".url Wrapper" "File not found."
	exit 1
fi
url=$(grep -m1 '^URL=' "$1" | cut -d= -f2- | tr -d '\r')
if [[ -z "$url" ]]; then
	notify-send -u low -a ".url Wrapper" "Entry not found."
	exit 1
else
	xdg-open "$url" &
fi
notify-send -u low -a ".url Wrapper" "Opened in the default browser."

作成後、実行権限を付与しておいてください。

chmod +x ./open-url

.urlファイルをパースしてURL行の値を取り出した後、xdg-openを用いてデフォルトブラウザで開いているだけのシンプルなスクリプトです

ダブルクリックで開く

デスクトップエントリを追加

~/.local/share/applications/open-url.desktop
Exec行で指定するのは先程作成したスクリプトです。

[Desktop Entry]
Version=1.0
Type=Application
Name=.url Wrapper
Comment=Open Windows .url files in the default browser
Exec=/home/rca/bin/open-url %f
MimeType=application/x-mswinurl;
NoDisplay=true

特に説明することもありませんが、目標のMimeTypeであるapplication/x-mswinurlと紐づけして、かつNoDisplaytrueとすることでアプリケーションリストには表示しないようにしています。

キャッシュを更新する

update-desktop-database ~/.local/share/applications

で更新できます。
KDE Plasma 6環境ではkbuildsycoca6を行うと同時にこの更新も行うらしい(未検証)です。

右クリックメニューで開く(Dolphin)

ServiceMenuアイテムを追加

~/.local/share/kio/servicemanus/open-url.desktop
こちらも同じくExec行で指定するのは先程作成したスクリプトです。

[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/x-mswinurl;
Actions=openInBrowser;

[Desktop Action openInBrowser]
Name=Open in the default browser
Exec=/home/rca/bin/open-url %f
Icon=internet-web-browser

こちらもダブルクリックの場合とほぼ同じです。
Dolphinの右クリックメニューに表示するには、ServiceTypesとしてKonqPopupMenu/Pluginを指定する必要があります。

キャッシュを更新する

kbuildsycoca6

で更新できます。

(追記): 権限エラーが発生する場合


このような権限エラーが発生する場合、エントリファイルにExecute権限を追加する必要があるかもしれません。

chmod +x ./open-url.desktop

結果

どちらも行った場合、.urlの右クリックメニューはこのような感じになるかと思います(再掲)。

さいごに

これを思いついた時点でもう3年生です 遅すぎる!

Discussion