今回はUbuntuにおけるデスクトップフォルダー機能の扱いの変化を、過去回を振り返りながら最新状況をお知らせします。
デスクトップフォルダー機能
あらためて、デスクトップフォルダー機能とは何かを見ていきましょう。
図1 はUbuntu 21.04のスクリーンショットです。上部のバーはトップバー、左側のバーはドック(Dock) 、その他の部分がデスクトップです。このデスクトップはホームフォルダー直下の「デスクトップ」と同一です。しかし、ここで疑問に思うのは、「 デスクトップ」フォルダーには背景(壁紙)はなく、また「ホーム」「 ゴミ箱」フォルダーもありません。
図1 Ubuntu 21.04のスクリーンショット
試しに「サンプルテキスト.txt」を「デスクトップ」フォルダーに置くと、双方に表示されます(図2 ) 。
図2 「 ファイル」には「サンプルテキスト.txt」のみが表示される
ここからデスクトップフォルダーは何らかの特別な扱いがなされているということがわかります。
今回はその「特別な扱い」の変遷をたどっていきます。
「ファイル」
最初のリリースであるUbuntu 4.10から18.10まで、デスクトップフォルダーは「ファイル」の一機能として提供していました。
「ファイル」( Files)はUbuntuのファイルマネージャーで、旧名は「Nautilus」といいます。ただし今でも実行ファイル名などにはその名が残っています。「 ファイル」でファイルのやり取りをする、というのは文字に起こすとまだ区別が付きますが、口頭ではわかりにくいことこの上ないので「Nautilus」と言ったほうがいいのかもしれません。
「ファイル」の開発の歴史は大変面白いのですが、あまりに本題から外れてしまうのでかいつまんで説明しておきましょう。昔(前世紀)のGNOMEデスクトップ環境にはファイルマネージャーがなかったので、これを開発する会社(Eazel )が出てきました。折しもドットコムバブルの終わりの頃で資金調達に失敗し倒産してしまいますが、ご存知のとおりその後も開発が進んでいます。ユーザーがぱっと見えるところからは消えてしましたが、今でもソースコード にはEazelという名称は残っています。開発元がなくなっても開発が継続するのはフリーソフトウェアの面白いところだと思います。
「ファイル」はGNOMEの方針に従ってもちろん機能の追加はされているのですが、機能の削除もされています。そのうちのひとつがデスクトップフォルダー機能というわけです。
実際に削除されたのは3.28からで、開発者のブログ で詳細が述べられていますが、要約するとGNOME 3になってからデスクトップには何も置かなくなったこと(ただしあくまでGNOMEのデフォルトで) 、この機能に関するソースコードは1999年(「 ファイル」の開発が始まった年)から追加されて現在は10,000行以上あり、メンテナンスが不可能になっていて今後の「ファイル」の発展の妨げになるから削除を決意したということです。
翻ってUbuntuの事情はどうかというと、Ubuntu 17.10 でデスクトップシェルをUnity 7からGNOME Shellに変更しています(図3 ) 。この際にUnity 7のルック&フィールを可能な限り継承することにしました。ということはGNOME 3のルック&フィールにはせず、デスクトップにアイコンを置くことにしました。さらには、この時のGNOMEのバージョンは3.26です。
図3 Ubuntu 17.10のデスクトップ
Ubuntu 18.04 LTS ではGNOMEのバージョンは3.28になりましたが、「 ファイル」のバージョンは据え置かれています。そしてそれがUbuntu 18.10まで継続することになります(図4 ) 。
図4 Ubuntu 18.10まで「ファイル」のバージョンは3.26.4だった
「ファイル」の一機能だった頃のデスクトップフォルダー機能は、まさに何でもできていました。ホームフォルダーアイコンやゴミ箱アイコンの表示、フォルダーやファイルの表示、マウントしたボリューム(USBメモリーなど)の表示、デスクトップファイル(後述)からのアプリケーション起動などです。後にできなくなりましたが、シェルスクリプトの実行までできていました。他のフォルダーからデスクトップフォルダーへの(またはその逆の)ドラッグアンドドロップでの移動ももちろんです。
デスクトップファイル
GNOME Shellではアプリケーションの起動はDockないしアプリケーショングリッドから行います。個々のアプリケーションを起動するのに必要な情報は一定のルールで記述されており、ここで定義したアイコンとアプリケーション名が実際に見えているものになります。具体的なルールはDesktop Entry Specification にあります。
そのファイルは基本的に/usr/share/applications/以下に置かれています[1] 。ファイル名の拡張子には“ desktop” が付くため、ここでは「デスクトップファイル」と称することにします。
具体的には「ファイル」のデスクトップファイルは/usr/share/applications/org.gnome.Nautilus.desktopとなります。中身はこのようになっています。
[Desktop Entry]
Name=Files
Comment=Access and organize files
# Translators: Search terms to find this application. Do NOT translate or localize the semicolons! The list MUST also end with a semicolon!
Keywords=folder;manager;explore;disk;filesystem;
Exec=nautilus --new-window %U
# Translators: Do NOT translate or transliterate this text (this is an icon file name)!
Icon=org.gnome.Nautilus
Terminal=false
Type=Application
DBusActivatable=true
StartupNotify=true
Categories=GNOME;GTK;Utility;Core;FileManager;
MimeType=inode/directory;application/x-7z-compressed;application/x-7z-compressed-tar;application/x-bzip;application/x-bzip-compressed-tar;ap
plication/x-compress;application/x-compressed-tar;application/x-cpio;application/x-gzip;application/x-lha;application/x-lzip;application/x-l
zip-compressed-tar;application/x-lzma;application/x-lzma-compressed-tar;application/x-tar;application/x-tarz;application/x-xar;application/x
-xz;application/x-xz-compressed-tar;application/zip;application/gzip;application/bzip2;
X-GNOME-UsesNotifications=true
Actions=new-window;
X-Unity-IconBackgroundColor=#af4853
X-Ubuntu-Gettext-Domain=nautilus
[Desktop Action new-window]
Name=New Window
Exec=nautilus --new-window
本当に名称のみが「Files」で、内部的には「Nautilus」であることがよくわかります。
Desktop Icons
Ubuntu 19.04 ではGNOMEのバージョンは3.32になり、「 ファイル」も同じバージョンになりました。すなわち「ファイル」のデスクトップフォルダー機能が削除されたバージョンです(図5 ) 。
図5 Ubuntu 19.04の「ファイル」のバージョンは3.32.1だった
新たにDesktop Icons というGNOME Shell拡張機能が追加され、「 ファイル」から削除されたデスクトップフォルダー機能を一部復活させています。
具体的にはホームフォルダーアイコンやゴミ箱アイコンの表示、フォルダーやファイルの表示、マウントしたボリューム(USBメモリーなど)の表示(ただしUbuntu 20.10から) 、デスクトップファイル(後述)からのアプリケーション起動などです。他のフォルダーからデスクトップフォルダーへの(またはその逆の)ドラッグアンドドロップでの移動はできなくなりました。
このように、今までと全く同じようにデスクトップフォルダー機能を扱えるわけではないので注意が必要です。
Desktop Icons NG
Ubuntu 21.04 からはDesktop IconsがDesktop Icons NG になりました。その名のとおりDeskto Iconsをフォークし、さまざまな機能が追加されたものです。
Desktop Icons NGの設定を見てみるとわかりやすいのですが(図6 ) 、「 ファイル」の頃にできていたことの大部分ができるようになっています。
図6 Desktop Icons NGの設定
機能の比較
これまでのデスクトップフォルダー機能を比較すると次のようになります。
ホームフォルダーアイコン
○
○
○
ゴミ箱アイコン
○
○
○
フォルダーの表示
○
○
○
ファイルの表示
○
○
○
マウントしたボリュームの表示
○
△
○
アプリケーションの起動
○
○
○
「ファイル」間のドラッグ&ドロップ
○
☓
○
シェルスクリプトの実行
△
☓
☓
デスクトップファイルの扱い
Desktop Icons以降に話を絞りますが、例えば/usr/share/applications/org.gnome.Nautilus.desktopをデスクトップにコピーした場合、ただのテキストファイルとして扱われます。ダブルクリックするとテキストエディターが表示されます。
起動したい場合はまず右クリックして「プロパティ」の「アクセス権」タブを開き、「 プログラムとして実行可能」にチェックを入れてください(図7 ) 。
図7 「 プロパティ」の「アクセス権」タブ
プロパティを閉じてもう一度右クリックし、「 起動を許可する」をクリックする(図8 )とアイコンが変わり、起動できるようになります(図9 ) 。
図8 「 起動を許可する」をクリックする
図9 アイコンが変わって起動できるようになった
シェルスクリプトで自動化したい場合は次のようなファイルを作成して実行してください。
#!/bin/sh
. ~/.config/user-dirs.dirs
cp /usr/share/applications/org.gnome.Nautilus.desktop "$XDG_DESKTOP_DIR"
chmod +x "$XDG_DESKTOP_DIR/org.gnome.Nautilus.desktop"
gio set "$XDG_DESKTOP_DIR/org.gnome.Nautilus.desktop" metadata::trusted true
先程の操作と照らし合わせると、「 プログラムとして実行可能」にチェックを入れるのが5行目、「 起動を許可する」をクリックするのが6行目に相当します。デスクトップフォルダー名はアルファベットになっていることもあるため、汎用性を持たせるために設定ファイルから読み込むようにしました。
フォルダーのショートカット機能
とあるフォルダーに素早くアクセスしたい場合、通常は「ファイル」のブックマーク機能や星機能を使用します。ただ何らかの理由でデスクトップから直接アクセスしたい場合はどうすればいいでしょうか。
真っ先に思いつくのはシンボリックリンクを作成することです。もう少し柔軟にやりたい場合はデスクトップファイルを作成する方法もあります。発想としては第640回 で紹介したgioコマンドのopenオプションを使用してパスを指定すれば、「 ファイル」でそのフォルダーが開くはずです。
実際にやってみましょう。例として背景があるフォルダー(/usr/share/backgrounds/)のショートカットを作成してみます。以下の内容にしてwallpaper.desktopというファイル名で作成してください。
[Desktop Entry]
Name=wallpaper
Type=Application
Icon=org.gnome.Nautilus
Exec=gio open /usr/share/backgrounds/
あとは前述のとおり起動できるようにしてください。
gio openはかなり万能なので、さまざまなことに応用してみてください。