Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save pooza/362772727b853a3cbd983a6d17c208af to your computer and use it in GitHub Desktop.

Select an option

Save pooza/362772727b853a3cbd983a6d17c208af to your computer and use it in GitHub Desktop.

macOS / Windows の URL ショートカットを Linux で扱う手順

本書は、macOS の .webloc および Windows の .url といった 「URL へのショートカットファイル」を Linux 環境で ダブルクリックにより既定ブラウザで開けるようにするための手順書である。

Java や専用 GUI ツールは使用せず、 freedesktop.org 標準(MIME / xdg-open)に基づく最小構成とする。


方針

  • macOS ではシンボリックリンクのみを使用する
  • Finder 独自の .alias は使用しないため、対応しない
  • URL ショートカットのみを Linux 側で吸収する
  • 常駐プロセスや独自デーモンは導入しない
  • ユーザー権限のみで完結させる

対応フォーマット

OS 拡張子 内容 macOS .webloc plist(XML) 内に URL を保持 Windows .url INI 形式で URL を保持

※ macOS Finder の .alias は非対応


動作確認環境

  • Debian / Ubuntu 系
  • デスクトップ環境
    • LXQt
    • Xfce
    • GNOME
  • ファイルマネージャ
    • PCManFM-Qt
    • Thunar
    • Nautilus

実装概要

  • .webloc / .url を単一のスクリプトで処理する
  • URL を抽出し、xdg-open に渡す
  • MIME type と .desktop により関連付けを行う

処理の流れは以下の通り。

.webloc / .url
  ↓
open-url-shortcut(shell script)
  ↓
xdg-open
  ↓
既定ブラウザ

1. URL ショートカット用スクリプトの作成

1.1 スクリプト配置ディレクトリ作成

mkdir -p ~/.local/bin

1.2 スクリプト作成

ファイル名: ~/.local/bin/open-url-shortcut

内容:

#!/usr/bin/env bash
set -e

file="$1"
ext="${file##*.}"

case "$ext" in
  webloc)
    url=$(xmllint --xpath 'string(//string)' "$file" 2>/dev/null)
    ;;
  url)
    url=$(grep -i '^URL=' "$file" | head -n1 | cut -d= -f2-)
    ;;
  *)
    echo "Unsupported file type: $file" >&2
    exit 1
    ;;
esac

if [ -z "$url" ]; then
  echo "URL not found in $file" >&2
  exit 1
fi

xdg-open "$url" >/dev/null 2>&1 &

1.3 実行権限付与

chmod +x ~/.local/bin/open-url-shortcut

2. 依存関係

.webloc は plist(XML) 形式のため、xmllint を使用する。

確認方法:

xmllint --version

未インストールの場合:

sudo apt install libxml2-utils

3. desktop エントリの作成

3.1 ディレクトリ作成

mkdir -p ~/.local/share/applications

3.2 desktop ファイル作成

ファイル名: ~/.local/share/applications/url-shortcut-opener.desktop

内容:

[Desktop Entry]
Name=URL Shortcut Opener
Comment=Open .webloc and .url files
Exec=/home/USER/.local/bin/open-url-shortcut %f
Terminal=false
Type=Application
MimeType=application/x-webloc;application/x-mswinurl;
NoDisplay=true

※ USER は実際のユーザー名に置換すること。


4. MIME type 定義

4.1 ディレクトリ作成

mkdir -p ~/.local/share/mime/packages

4.2 MIME 定義ファイル作成

ファイル名: ~/.local/share/mime/packages/url-shortcut.xml

内容:

<?xml version="1.0" encoding="UTF-8"?>
<mime-info xmlns="http://www.freedesktop.org/standards/shared-mime-info">

  <mime-type type="application/x-webloc">
    <comment>macOS Web Location</comment>
    <glob pattern="*.webloc"/>
  </mime-type>

  <mime-type type="application/x-mswinurl">
    <comment>Windows Internet Shortcut</comment>
    <glob pattern="*.url"/>
  </mime-type>

</mime-info>

5. MIME / desktop データベース更新

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

6. 関連付け設定

xdg-mime default url-shortcut-opener.desktop application/x-webloc
xdg-mime default url-shortcut-opener.desktop application/x-mswinurl

確認方法:

xdg-mime query default application/x-webloc
xdg-mime query default application/x-mswinurl

結果

  • .webloc / .url をダブルクリックで既定ブラウザ起動
  • Java 不要
  • 常駐プロセスなし
  • 設定はすべて ~/.local/ 配下で完結

補足

Java / 専用ツールを使用しない理由

  • URL 抽出処理は単純である
  • 依存関係を増やす合理性がない
  • MIME + xdg-open により十分に統合可能である

Windows 側の扱い

  • .url は Windows Explorer で標準対応
  • Linux 側での受け皿のみを用意すればよい
  • .webloc は Windows 環境へ持ち込まない運用とする

非対応事項

  • macOS Finder の .alias
  • Finder ブックマーク
  • URL 以外のショートカット

まとめ

  • URL は URL として扱う
  • OS 固有形式は入口で吸収する
  • Linux 側は freedesktop.org 標準で統合する

macOS / Windows / Linux を跨ぐ環境移行時における URL ショートカット処理の最小構成例である。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment