日本語ロケールでは、freedesktop.org準拠のデスクトップ環境でホームディレクトリの下に
デスクトップ
ピクチャ
ビデオ
ダウンロード
テンプレート
公開
ドキュメント
ミュージック
といった日本語の名前のディレクトリ群が自動的に作られるが、端末を使う人の中に “ディレクトリ名の指定の際に日本語を入力するのが面倒” と考える人がいるようだ。
そこで、日本語を入力せずに端末でこれらのディレクトリの名前を指定できるようにするための方法を幾つか扱う。
zshの補完の機能を適切に設定すると、コマンドや引数の入力中にTab
キーを1回押した段階で候補が複数ある場合、更にTab
キーを押すと候補一覧の中の項目からキーボードの矢印キーやCtrl
-P
/N
/B
/F
,Tab
といったキーでハイライト(反転表示)される項目を切り替えた後でキー入力を続けるかEnter
を押すことで選択することができるようになる。
そのため、日本語の文字が先頭にあっても日本語を入力せずにそのディレクトリを指定することはできる。
ファイル名の先頭が日本語となっているファイルやディレクトリが他になければ、ホームディレクトリ内の候補一覧を後ろから見れば、探すのもそれほど面倒ではない。
その後登場したfishというシェルでも同様に補完機能があり、操作も同様に行える。
広く知られている方法として、環境変数LANG
をC
としてxdg-user-dirs-gtk-update
を実行し、“Update Names” を押すと、最初に挙げたディレクトリ群の英語名バージョンが作られてこれらが用いられるようになる。
$ LANG=C xdg-user-dirs-gtk-update
元に戻すには、環境変数LANGを指定せずに日本語ロケールのまま実行して同様に更新する。
xdg-user-dirs-gtk-update
コマンドは、Debian/Ubuntuではxdg-user-dirs-gtk
パッケージに含まれる。
冒頭に書いたディレクトリは、同じ順番で下に並べると
Desktop
Pictures
Videos
Downloads
Templates
Public
Documents
Music
という名前になる。
個人的には、せっかくディレクトリ名が国際化されているのに英語にするというのには抵抗がある。
日本語名のディレクトリに対して英語名のリンクを作成することで、端末シェル内でディレクトリにアクセスしやすくできる。
下は英語ロケールにしたときの名前で日本語のディレクトリに対するシンボリックリンクを作成するシェルスクリプトとなる。
symlink-wellknowndirs.sh
エンコーディング:UTF-8
#! /bin/sh
# -*- coding: utf-8 -*-
PATH=/bin:/usr/bin
cd
ln -s デスクトップ Desktop
ln -s ピクチャ Pictures
ln -s ビデオ Videos
ln -s ダウンロード Downloads
ln -s テンプレート Templates
ln -s 公開 Public
ln -s ドキュメント Documents
ln -s ミュージック Music
個人的には、同じ階層にあるディレクトリを別名(しかも名前の意味自体が同じ)で参照するためだけにリンクを作成するというところに抵抗がある。
個人的には “方法1” だけでも問題はないのだが、ディレクトリ名の先頭が半角英数にできれば補完がしやすくなるのも確かなので、英語ロケールで使用される名前の後ろに日本語の名前を付けて
Desktop#デスクトップ
のような名前にして使用できればよいと考えた(ただ、人によって名前の付け方には好みがあるので、DT.机上
,Pic_画像
,Music@音楽
,Vid-動画-eos
など、色々な表記の形がありうる)。
本記事で挙げている特殊なディレクトリ群の名前は
XDG_CONFIG_HOME
が未定義の場合: [ホームディレクトリ]/.config/user-dirs.dirs
XDG_CONFIG_HOME
が定義済みの場合: ${XDG_CONFIG_HOME}/user-dirs.dirs
のファイルに記述されている。
日本語ロケールの標準設定では
~/.config/user-dirs.dirs
または${XDG_CONFIG_HOME}/user-dirs.dirs
より エンコーディング:UTF-8
XDG_DESKTOP_DIR="$HOME/デスクトップ"
XDG_PICTURES_DIR="$HOME/ピクチャ"
XDG_VIDEOS_DIR="$HOME/ビデオ"
XDG_DOWNLOAD_DIR="$HOME/ダウンロード"
XDG_TEMPLATES_DIR="$HOME/テンプレート"
XDG_PUBLICSHARE_DIR="$HOME/公開"
XDG_DOCUMENTS_DIR="$HOME/ドキュメント"
XDG_MUSIC_DIR="$HOME/ミュージック"
という内容になっており、このファイルはxdg-user-dirs-update
というコマンドによって自動生成されている(xdg-user-dirs-gtk-update
を使用している場合も、ディレクトリ名を更新する際に呼び出される)。
このファイルの設定はグラフィカルログイン時の初期段階で読み込まれ、これに基づいてデスクトップなどのディレクトリが選択される。
このファイルを手動で編集することでこれらのディレクトリの場所を変更(初期設定とは別のディレクトリを特殊なディレクトリとして使用)することができる。記述したディレクトリは事前に用意しておき、変更前のディレクトリの内容をそのまま使用したい場合は古い名前の各ディレクトリの中身を新しいディレクトリに入れておく。
設定はファイル編集後に一度ログアウトして再ログインすると適用される(変更適用のために何かコマンドを実行したりする必要はない)。
下はホームディレクトリの下の階層の
Desktop#デスクトップ
Pictures#ピクチャ
Videos#ビデオ
Downloads#ダウンロード
Templates#テンプレート
Public#公開
Documents#ドキュメント
Music#ミュージック
というディレクトリ群を使用するための設定となる。
~/.config/user-dirs.dirs
または${XDG_CONFIG_HOME}/user-dirs.dirs
XDG_DESKTOP_DIR="$HOME/Desktop#デスクトップ"
XDG_PICTURES_DIR="$HOME/Pictures#ピクチャ"
XDG_VIDEOS_DIR="$HOME/Videos#ビデオ"
XDG_DOWNLOAD_DIR="$HOME/Downloads#ダウンロード"
XDG_TEMPLATES_DIR="$HOME/Templates#テンプレート"
XDG_PUBLICSHARE_DIR="$HOME/Public#公開"
XDG_DOCUMENTS_DIR="$HOME/Documents#ドキュメント"
XDG_MUSIC_DIR="$HOME/Music#ミュージック"
この例では全てのディレクトリがホームディレクトリの下の階層となっているが、絶対パスで別のディレクトリを指定することでホームディレクトリの下以外にあるディレクトリを用いるようにもできる。
GTK+アプリケーションのファイル選択ダイアログでは、はじめから
といった項目がブックマークとして含まれており、ロケールが変化したときにxdg-user-dirs-gtk-update
を実行してディレクトリ名を更新した場合にはこれらの項目も更新されるが、user-dirs.dirs
を手動で編集した場合はこの更新作業([ホームディレクトリ]/.gtk-bookmarks
の編集)を手動で行うか、一時的に[ホームディレクトリ]/.gtk-bookmarks
を退避(名前変更や移動)後にxdg-user-dirs-gtk-update
を実行して再作成された[ホームディレクトリ]/.gtk-bookmarks
に含まれるブックマーク項目と退避ファイルの内容を統合する形で適用することになる(特殊ディレクトリ群の古い項目群は除く)。
xdg-user-dirs-gtk-update
を実行する場合は、user-dirs.dirs
に記述したディレクトリ群を事前に作成しておく。
今回[ホームディレクトリ]/.gtk-bookmarks
を退避後にxdg-user-dirs-gtk-update
を実行したところ、下の5行の内容の[ホームディレクトリ]/.gtk-bookmarks
が作成されたので、退避ファイルの内容をこの後ろに付けることにした。
~/.gtk-bookmarks
file:///home/[ユーザ名]/Documents%23%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88
file:///home/[ユーザ名]/Music%23%E3%83%9F%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%83%E3%82%AF
file:///home/[ユーザ名]/Pictures%23%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3
file:///home/[ユーザ名]/Videos%23%E3%83%93%E3%83%87%E3%82%AA
file:///home/[ユーザ名]/Downloads%23%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89
(古い~/.gtk-bookmarksの内容の内、上のディレクトリ群以外の項目をこの行以下に貼り付ける)
ただ、これだけではブックマーク項目の表示文字数が長くなるため
~/.gtk-bookmarks
エンコーディング:UTF-8
file:///home/[ユーザ名]/Documents%23%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88 ドキュメント
file:///home/[ユーザ名]/Music%23%E3%83%9F%E3%83%A5%E3%83%BC%E3%82%B8%E3%83%83%E3%82%AF ミュージック
file:///home/[ユーザ名]/Pictures%23%E3%83%94%E3%82%AF%E3%83%81%E3%83%A3 ピクチャ
file:///home/[ユーザ名]/Videos%23%E3%83%93%E3%83%87%E3%82%AA ビデオ
file:///home/[ユーザ名]/Downloads%23%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89 ダウンロード
(古い~/.gtk-bookmarksの内容の内、上のディレクトリ群以外の項目をこの行以下に貼り付ける)
上のように表示名を指定するようにした。
ただ、このように表示名を付けても、GIMPのファイル選択ダイアログやThunarなどのGUIファイルマネージャのように、ディレクトリ名がそのまま表示される箇所はソフトウェアによって出ることがある。
画像はGIMPのファイル選択ダイアログの左側のブックマーク表示部(“ドキュメント” から “ダウンロード”)とその上の “ピクチャ” と “ドキュメント” の生ディレクトリ名が表示されている項目。アイコンテーマは “elementary” 。
なお、[ホームディレクトリ]/.gtk-bookmarks
の内容はバージョン2系のGTK+でもバージョン3系のGTK+でも同じように扱われる。
GNOMEのファイルマネージャNautilusやXfce4のファイルマネージャThunarでは、user-dirs.dirs
を手動で編集した場合でも、本記事で挙げた特殊なディレクトリ群はアイコンテーマ内の専用アイコンで表示される(左のサイドバー/サイドペインでも同様)。
画像はThunarでの表示。アイコンテーマは “elementary” 。
アイコンテーマ内に該当する画像ファイル([/usr/share/icons/ もしくは [ホームディレクトリ]/.icons]/[テーマ名]/places/[サイズもしくはscalable]/
内の “folder-” で始まる幾つかのファイル群とデスクトップアイコンの “user-desktop” のファイル)がない場合は別のアイコンテーマから代替表示され、例えば “Tango” テーマを使用するように設定すると、幾つかのディレクトリのアイコンが別のテーマのものになる。
LXDEのファイルマネージャPCManFMでは、バージョン0.9.10時点では上記のディレクトリ群はアイコンテーマ内の専用アイコンで表示されることはない(基本的に通常のディレクトリのアイコンとなる)。
KDE Software CompilationのファイルマネージャDolphinでは、各ディレクトリのコンテキストメニューから “プロパティ” を選択して “一般” タブの左上にあるアイコンのボタンを押して一覧からアイコンを選択することで、任意のアイコンが指定できる(特殊なディレクトリ群に適したものは “システムアイコン” の “場所” の一覧にある)。
この設定は各ディレクトリ内の.directory
という隠しファイルに保存される。
上のようにアイコンを指定するとディレクトリは下のように表示される。