xdgctl — XDG デフォルトアプリ管理 TUI

Tool

概要

xdgctl は、XDG(freedesktop.org の規約)で管理される「ファイルタイプごとの既定アプリケーション」を端末上で簡単に閲覧・変更できる TUI(Text-based User Interface)ツールです。GUI を使わずに xdg-mime を直接操作する代わりに、カテゴリ(ブラウザ、テキストエディタなど)ごとに利用可能なアプリ一覧を表示し、現在の既定アプリを「*」でマークします。C 言語で実装され、GLib/GIO によりアプリ情報の列挙や設定を行い、termbox2 を用いて端末描画とキーボード操作を処理します。Makefile によるビルドで比較的軽量に動作します。(約300字)

GitHub

リポジトリの統計情報

  • スター数: 76
  • フォーク数: 1
  • ウォッチャー数: 76
  • コミット数: 7
  • ファイル数: 9
  • メインの言語: C

主な特徴

  • カテゴリ別にアプリをブラウズ(Browsers, Text Editors など)
  • 現在のデフォルトアプリを「*」で表示
  • GLib/GIO によるネイティブなアプリ情報アクセスと設定
  • 軽量な termbox2 ベースの TUI で端末上で完結

技術的なポイント

xdgctl のコアは GLib/GIO と termbox2 の組み合わせにあります。GIO の GAppInfo 系 API(および MIME タイプ関連の関数)を用いることで、システムに登録されている .desktop エントリや各 MIME タイプに紐づく既定アプリを抽出・変更できます。これにより、xdg-mime を外部プロセスとして実行する代わりにプログラム内から直接操作でき、エラー処理や整形が容易になります。UI 側は termbox2 を使ったマニュアル描画で、軽量かつ依存が少ない端末ベースのインターフェースを実現。リスト表示、選択、フォーカス移動、決定操作をキーボードで処理し、最小限のイベントループでレスポンス良く動作します。Makefile ベースのビルドは pkg-config を介して glib-2.0 と termbox2 を参照する想定で、ヘッダと共有ライブラリが必要です。設計としては単一プロセスで状態を保持し、選択に応じて GIO の API を呼んで即時に既定を更新するフローになっているため、並列処理や複雑な依存関係はありません。一方で、XDG の設定はデスクトップ環境間で差異があるため、環境によっては glib/gio の動作や既定の保存先(~/.config/mimeapps.list など)に違いが出る点に注意が必要です。また、termbox2 の描画制約によりマウス操作やリッチな UI は想定されておらず、主にキーボード中心の操作性が重視されています。(約700字)

プロジェクトの構成

主要なファイルとディレクトリ:

  • .clang-format: file
  • .gitignore: file
  • LICENSE: file
  • Makefile: file
  • README.md: file

…他 4 ファイル

ビルドと実行メモ:

  • 依存: GLib/GIO 開発パッケージ、termbox2、pkg-config 等
  • ビルド: Makefile を用いて make(環境によっては sudo make install)
  • 動作環境: Linux デスクトップ(XDG 準拠の設定ファイルが存在する環境)

使い方のポイント

  • カテゴリを選んでそのカテゴリに登録されたアプリを一覧表示
  • 現在の既定は「*」でマークされ、Enter 等で切り替え可能
  • キーボード操作が中心(方向キー、Enter、q や Esc で終了など)
  • xdg-mime を直接扱いたくない場面での代替ツールとして有効

まとめ

軽量な TUI で XDG の既定アプリを安全に確認・変更できる実用的なツールです。(約50字)

リポジトリ情報:

READMEの抜粋: xdgctl is a TUI for managing XDG default applications. View and set defaults for file categories without using xdg-mime directly.

Built with C using GLib/GIO and termbox2.

https://github.com/user-attachments/assets/076c9934-f373-486d-9595-eec480e3a429

Features

  • Browse by category (Browsers, Text Editors, etc.)
  • Current default marked with *

主要な操作はキーボードベース(カーソルキーで移動、Enterで選択、q/Escで終了)です。詳細は README を参照してください。