「XDG ユーザーディレクトリ」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(TranslationStatus)
 
(3人の利用者による、間の16版が非表示)
1行目: 1行目:
[[Category:デスクトップ環境]]
+
[[Category:Freedesktop.org]]
 
[[en:XDG user directories]]
 
[[en:XDG user directories]]
  +
[[pt:XDG user directories]]
  +
[[ru:XDG user directories]]
 
[[zh-hans:XDG user directories]]
 
[[zh-hans:XDG user directories]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|xdg-menu}}
 
{{Related|xdg-menu}}
{{Related|xdg-open}}
 
 
{{Related|デフォルトアプリケーション}}
 
{{Related|デフォルトアプリケーション}}
 
{{Related|XDG Base Directory サポート}}
 
{{Related|XDG Base Directory サポート}}
 
{{Related articles end}}
 
{{Related articles end}}
ユーザーディレクトリとは {{ic|Documents}}, {{ic|Downloads}}, {{ic|Music}}, {{ic|Desktop}} などの {{ic|$HOME}} ディレクトリに配置されるユーザー共通のディレクトリのセットのことです。ファイルマネージャの中ではそれぞれアイコンが割り振られ、プログラムやアプリケーションによって参照されることがよくあります。{{pkg|xdg-user-dirs}} はこれらのディレクトリを自動で生成するプログラムです。詳細は [https://www.freedesktop.org/wiki/Software/xdg-user-dirs freedesktop.org] のウェブサイトを見て下さい。
 
   
  +
[https://www.freedesktop.org/wiki/Software/xdg-user-dirs/ freedesktop.org] より:
{{Tip|{{ic|~/Desktop}} ディレクトリも自動で作成するため、このプログラムはファイルマネージャを使って [[Openbox]] などの[[ウィンドウマネージャ]]のデスクトップを管理したいというユーザーにとって特に有用です。}}
 
  +
:xdg-user-dirs はデスクトップフォルダや音楽フォルダのような、「よく知られた」ユーザーディレクトリを管理するためのツールです。また、ファイル名のローカライズ (すなわち翻訳) も行います。
  +
  +
:仕組みとしては、{{man|1|xdg-user-dirs-update}} がログイン時の非常に早い段階で実行されます。このプログラムは設定ファイルとデフォルトのディレクトリのセットを読み込みます。このプログラムは設定ファイルと一連のデフォルトディレクトリを読み込み、ユーザーのホームディレクトリにこれらのディレクトリのローカライズ版を作成し、{{ic|$XDG_CONFIG_HOME/user-dirs.dirs}} ({{ic|XDG_CONFIG_HOME}} のデフォルトは {{ic|~/.config}}) にアプリケーションがこれらのディレクトリを見つけるために読める設定ファイルを設定します。
  +
  +
ほとんどの[[ファイルマネージャ]]は、XDG ユーザーディレクトリを特別なアイコンで表示します。
   
 
== インストール ==
 
== インストール ==
  +
{{pkg|xdg-user-dirs}} パッケージを[[インストール]]してください。
 
  +
{{Pkg|xdg-user-dirs}} を[[インストール]]してください。
  +
  +
{{Tip|一部の[[デスクトップ環境]]では、すでにインストールされているかもしれません (例: [[GNOME]])。}}
   
 
== デフォルトディレクトリの作成 ==
 
== デフォルトディレクトリの作成 ==
   
{{ic|$HOME}} ディレクトリの中に、ローカライズされた完全なデフォルトユーザディレクトリを作成するには、次のコマンドを入力:
+
以下を実行することで、ローカライズされたデフォルトユーザディレクトリの完全なスイート {{ic|$HOME}} ディレクトリ内に自動で作成することができます:
   
 
$ xdg-user-dirs-update
 
$ xdg-user-dirs-update
   
{{Tip|英語のディレクトリを作成るに、{{ic|1=LC_ALL=C xdg-user-dirs-update}} を使ます。}}
+
{{Tip|英語のディレクトリを強制的に作成させために、{{ic|1=LC_ALL=C xdg-user-dirs-update --force}} を使用することができます。}}
   
コマンドを実行すると、以下も自動的に作成されます:
+
このコマンドを実行すると、以下のことも自動的に行われます:
   
* ローカルの {{ic|~/.config/user-dirs.dirs}} 設定ファイル: アカウントごとのホームディレクトリを見つけて使用するにアプリケーション使用。
+
* ローカルの {{ic|~/.config/user-dirs.dirs}} 設定ファイルの作成: これは、アカウント固有のホームディレクトリを探索し使用するためにアプリケーションによって使用されます
* ロールの {{ic|/etc/xdg/user-dirs.defaults}} 設定ファイル: 一般のホームディレクトリを見つけて使にアプリケーションが使用。
+
* ロールの {{ic|~/.config/user-dirs.locale}} 設定ファイルの作成: これは、使用中ケールに合わせて言語を設定するために使用されます
  +
* ローカルの {{ic|~/.config/user-dirs.locale}} 設定ファイル: 使用しているロケールにあわせて言語を設定するのに使用。
 
  +
{{ic|xdg-user-dirs-update.service}} ユーザサービスもデフォルトでインストールされ有効化されます。このサービスは、ログインセッションの開始時に上記のコマンドを実行して、ディレクトリを最新に保ちます。
   
 
== カスタムディレクトリの作成 ==
 
== カスタムディレクトリの作成 ==
33行目: 42行目:
 
ローカルの {{ic|~/.config/user-dirs.dirs}} とグローバルの {{ic|/etc/xdg/user-dirs.defaults}} どちらの設定ファイルも次のような環境変数を使ってユーザーディレクトリを指定しています: {{ic|1=XDG_DIRNAME_DIR="$HOME/directory_name"}}。設定ファイルのサンプルは以下のようになります (どれもテンプレートのディレクトリです):
 
ローカルの {{ic|~/.config/user-dirs.dirs}} とグローバルの {{ic|/etc/xdg/user-dirs.defaults}} どちらの設定ファイルも次のような環境変数を使ってユーザーディレクトリを指定しています: {{ic|1=XDG_DIRNAME_DIR="$HOME/directory_name"}}。設定ファイルのサンプルは以下のようになります (どれもテンプレートのディレクトリです):
   
  +
{{hc|1=~/.config/user-dirs.dirs|2=
XDG_DESKTOP_DIR="$HOME/Desktop"
 
XDG_DOCUMENTS_DIR="$HOME/Documents"
+
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
+
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_MUSIC_DIR="$HOME/Music"
+
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_PICTURES_DIR="$HOME/Pictures"
+
XDG_MUSIC_DIR="$HOME/Music"
XDG_PUBLICSHARE_DIR="$HOME/Public"
+
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_TEMPLATES_DIR="$HOME/.Templates"
+
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_VIDEOS_DIR="$HOME/Videos"
+
XDG_TEMPLATES_DIR="$HOME/Templates"
  +
XDG_VIDEOS_DIR="$HOME/Videos"
  +
}}
   
 
{{pkg|xdg-user-dirs}} は、適当なユーザーディレクトリを記述しているローカルの設定ファイルを読み込むため、カスタムフォルダを指定することが可能です。例えば {{ic|~/.config/user-dirs.dirs}} の {{ic|XDG_DOWNLOAD_DIR}} 変数のカスタムフォルダを {{ic|1=$HOME/Internet}} にすれば、どのアプリケーションもこの変数でこのディレクトリを使用します。
 
{{pkg|xdg-user-dirs}} は、適当なユーザーディレクトリを記述しているローカルの設定ファイルを読み込むため、カスタムフォルダを指定することが可能です。例えば {{ic|~/.config/user-dirs.dirs}} の {{ic|XDG_DOWNLOAD_DIR}} 変数のカスタムフォルダを {{ic|1=$HOME/Internet}} にすれば、どのアプリケーションもこの変数でこのディレクトリを使用します。
   
{{Note|多くの設定ファイルと同じように、ローカル設定はグローバル設定を上書きします。新しいカスタムディレクトリ作成する必要あります。}}
+
{{Note|多くの設定ファイルと同じように、ローカル設定はグローバル設定を上書きします。また、新しいカスタムディレクトリ作成する必要あります。}}
   
 
また、コマンドラインを使ってカスタムフォルダを指定することもできます。例えば以下のコマンドは上述のように設定ファイルを編集したのと同じになります:
 
また、コマンドラインを使ってカスタムフォルダを指定することもできます。例えば以下のコマンドは上述のように設定ファイルを編集したのと同じになります:
52行目: 63行目:
 
== 設定されているディレクトリを確認 ==
 
== 設定されているディレクトリを確認 ==
   
一度設定されれば、{{pkg|xdg-user-dirs}} で全てのユーザディレクトリを表示することができます。例えば、以下のコマンドは {{ic|Templates}} ディレクトリの場所を表示します (ローカル設定ファイルの {{ic|XDG_TEMPLATES_DIR}} 変数に相当):
+
一度設定されれば、{{pkg|xdg-user-dirs}} で任意のユーザディレクトリを表示することができます。例えば、以下のコマンドは {{ic|Templates}} ディレクトリの場所を表示します (もちろん、ローカル設定ファイルの {{ic|XDG_TEMPLATES_DIR}} 変数の値と対応します):
   
 
$ xdg-user-dir TEMPLATES
 
$ xdg-user-dir TEMPLATES
  +
  +
{{Warning|検査されていない入力からの引数を {{ic|xdg-user-dir}} に渡すべきではありません。このコマンドは、如何なるサニティチェックも行わずに引数を {{ic|eval}} に渡すからです。以下のような行が実行されます:
  +
  +
eval echo \${XDG_${1}_DIR:-$HOME}
  +
  +
これはすなわち、{{ic|xdg-user-dir}} によって、サニタイズされていない入力からの任意コード実行が容易になってしまうことを意味します。この酷い実装が上流で修正されない限り、ハードコードされた引数や厳格に検査された引数だけを用いて {{ic|xdg-user-dir}} を使用するべきです。
  +
}}
  +
  +
{{TranslationStatus|XDG user directories|2023-07-09|780019}}

2023年7月9日 (日) 07:07時点における最新版

関連記事

freedesktop.org より:

xdg-user-dirs はデスクトップフォルダや音楽フォルダのような、「よく知られた」ユーザーディレクトリを管理するためのツールです。また、ファイル名のローカライズ (すなわち翻訳) も行います。
仕組みとしては、xdg-user-dirs-update(1) がログイン時の非常に早い段階で実行されます。このプログラムは設定ファイルとデフォルトのディレクトリのセットを読み込みます。このプログラムは設定ファイルと一連のデフォルトディレクトリを読み込み、ユーザーのホームディレクトリにこれらのディレクトリのローカライズ版を作成し、$XDG_CONFIG_HOME/user-dirs.dirs (XDG_CONFIG_HOME のデフォルトは ~/.config) にアプリケーションがこれらのディレクトリを見つけるために読める設定ファイルを設定します。

ほとんどのファイルマネージャは、XDG ユーザーディレクトリを特別なアイコンで表示します。

インストール

xdg-user-dirsインストールしてください。

ヒント: 一部のデスクトップ環境では、すでにインストールされているかもしれません (例: GNOME)。

デフォルトディレクトリの作成

以下を実行することで、ローカライズされたデフォルトユーザディレクトリの完全なスイートを $HOME ディレクトリ内に自動で作成することができます:

$ xdg-user-dirs-update
ヒント: 英語名のディレクトリを強制的に作成させるために、LC_ALL=C xdg-user-dirs-update --force を使用することができます。

このコマンドを実行すると、以下のことも自動的に行われます:

  • ローカルの ~/.config/user-dirs.dirs 設定ファイルの作成: これは、アカウント固有のホームディレクトリを探索し使用するためにアプリケーションによって使用されます。
  • ローカルの ~/.config/user-dirs.locale 設定ファイルの作成: これは、使用中のロケールに合わせて言語を設定するために使用されます。

xdg-user-dirs-update.service ユーザサービスもデフォルトでインストールされ有効化されます。このサービスは、ログインセッションの開始時に上記のコマンドを実行して、ディレクトリを最新に保ちます。

カスタムディレクトリの作成

ローカルの ~/.config/user-dirs.dirs とグローバルの /etc/xdg/user-dirs.defaults どちらの設定ファイルも次のような環境変数を使ってユーザーディレクトリを指定しています: XDG_DIRNAME_DIR="$HOME/directory_name"。設定ファイルのサンプルは以下のようになります (どれもテンプレートのディレクトリです):

~/.config/user-dirs.dirs
XDG_DESKTOP_DIR="$HOME/Desktop"
XDG_DOCUMENTS_DIR="$HOME/Documents"
XDG_DOWNLOAD_DIR="$HOME/Downloads"
XDG_MUSIC_DIR="$HOME/Music"
XDG_PICTURES_DIR="$HOME/Pictures"
XDG_PUBLICSHARE_DIR="$HOME/Public"
XDG_TEMPLATES_DIR="$HOME/Templates"
XDG_VIDEOS_DIR="$HOME/Videos"

xdg-user-dirs は、適当なユーザーディレクトリを記述しているローカルの設定ファイルを読み込むため、カスタムフォルダを指定することが可能です。例えば ~/.config/user-dirs.dirsXDG_DOWNLOAD_DIR 変数のカスタムフォルダを $HOME/Internet にすれば、どのアプリケーションもこの変数でこのディレクトリを使用します。

ノート: 多くの設定ファイルと同じように、ローカル設定はグローバル設定を上書きします。また、新しいカスタムディレクトリは作成する必要があります。

また、コマンドラインを使ってカスタムフォルダを指定することもできます。例えば以下のコマンドは上述のように設定ファイルを編集したのと同じになります:

$ xdg-user-dirs-update --set DOWNLOAD ~/Internet

設定されているディレクトリを確認

一度設定されれば、xdg-user-dirs で任意のユーザディレクトリを表示することができます。例えば、以下のコマンドは Templates ディレクトリの場所を表示します (もちろん、ローカル設定ファイル内の XDG_TEMPLATES_DIR 変数の値と対応します):

$ xdg-user-dir TEMPLATES
警告: 検査されていない入力からの引数を xdg-user-dir に渡すべきではありません。このコマンドは、如何なるサニティチェックも行わずに引数を eval に渡すからです。以下のような行が実行されます:
eval echo \${XDG_${1}_DIR:-$HOME}

これはすなわち、xdg-user-dir によって、サニタイズされていない入力からの任意コード実行が容易になってしまうことを意味します。この酷い実装が上流で修正されない限り、ハードコードされた引数や厳格に検査された引数だけを用いて xdg-user-dir を使用するべきです。

翻訳ステータス: このページは en:XDG user directories の翻訳バージョンです。最後の翻訳日は 2023-07-09 です。もし英語版に 変更 があれば、翻訳の同期を手伝うことができます。