この記事は「山田ハヤオ」の個人の考えであり、SereneTeam公式としてGnomeプロジェクト及び関連プロジェクトを否定するわけではありません。あくまでも筆者の個人の考えです。
注意
この記事はハヤオの個人の考えと愚痴と偏見です。SereneTeam全体の意見ではありません。
正直、炎上覚悟です。ハヤオも上層部に蹴り○されないか、ビクビクしています。
いろいろ間違ってたり憶測の部分も多いので注意してください。
お願いだから炎上しないで
Gnomeデスクトップ
炎上しないようにしっかりと予防線を張ったところで本題に入ろうと思う。
UbuntuやZorinOSに標準搭載されているGnomeというデスクトップ環境1LinuxでのGUIのまとまりがある。デスクトップ環境としては最も有名かもしれない。しかし、私はこのGnomeがどうも好きになれないので理由をまとめてみた。
Linuxのデスクトップソフトを牛耳る組織「Gnome」
ではGnomeの悪行の数々を見ていこうと思う。なぜそれが悪行なのかについても説明しようと思う。
Everything is a file.を壊そうと策略している
GVFSでSambaなどをマウントした際のファイルマネージャのパスを見てほしい。
ウェブブラウザのように「プロトコル://server/dir」になっているのだ。Windowsを使ってきた人からすれば至って普通かもしれないが、Linuxを使用している人からするととんでもない仕様だ。
LinuxとUnix
そもそもLinuxは、当時高価だったUnixを誰でも無償で使えるようにと開発されたものだ。なのでUnixとLinuxは共通する点が多くある。その一つが「Everything is a file.」である。日本語訳すると「全てはファイルである。」という意味だ。
WindowsとLinuxのディスクの扱いの違い
この部分は前提知識なので飛ばしても結構です。
Windowsでは、ドライブレターとかいうアルファベットを使用し、C:\Users\hoge\Desktop
というようにパスを表記する。しかし、Linuxでは全てのものがファイルとして扱われるため、接続したディスクなども全てファイル扱いになる。/dev/sda1
などは/dev
ディレクトリ下にあるsda1
というファイルを表しており、このファイルは「1つ目のディスクの1つ目のパーティション」という意味を表す。CDやDVDなども同様に/dev/sr0
というパスで表される。
最近のファイルマネージャでは、マウントを自動でやってしまうためあまり意識しないが、コマンドラインからマウントする際は、「デバイス名(さっきの/dev/sda1など)」と「マウントするディレクトリ」を指定する必要がある。例えば「1つめのHDDの2つ目のパーティション(/dev/sda2)」を「/mnt/disk_2」にマウントする場合は、以下のようなコマンドになる。#
から始まる文字はコメントなので無視してください。
# マウントするディレクトリを作成
# マウントするディレクトリは/mnt以下に作成するように決められている。
mkdir -p /mnt/disk_2
# マウント
mount /dev/sda2 /mnt/disk_2
となる、こうすることで、/dev/sda2
の中のファイルに/mnt/disk_2/hogehoge
というふうにアクセスすることができる。
この仕様は一見、面倒なように思えるがソフトウェアやスクリプトを制作する際に非常に便利なものになる。
マウントされたファイルは(転送速度の違いはあるが)Linuxがインストールされたパーティションと同じ場所にあるファイル(/home/hoge/Desktop/fuga.txtなど)と同じように扱うことができる。マウントした時点で、どのディスクにあるのか、というのを考える必要がなくなるのである。しかし、Windowsのようなドライブレターだと、パスを指定するたびにディスクを指定してしまうことになる。ディスクは環境によって変わるため、開発者はこれを意識しなければならない。
要約
簡単に言うと、WindowsのC:\Users\hoge\Desktop
はLinuxだと/mnt/c/Users/hoge/Desktop
と表されるということである。
GVFSの悪行
話を戻そう。GVFSはそんな(上で解説した)「Linuxのマウントの作法」に全く従っていないのである。先ほど示したとおりsmb://hoge/fuga
で表されている。Linuxではこんなことは本来考慮されていないので、コマンドラインからこんなこともできない。
# lsは指定したディレクトリにあるファイル一覧を表示する
ls -al smb://hoge/fuga
正確にはGVFSは/var/run/1000/gvfs
下にマウントされているため、このように記述するのが正解である。
# sftpの場合
ls /var/run/1000/gvfs/sftp:host=hoge,port=[ポート番号],user=[ユーザー名]/fuga
# sambaの場合
ls /var/run/1000/gvfs/smb-share:server=[サーバ名], share=fuga/
となる。正直、面倒くさい。軽く調べた限りではマウントするディレクトリの指定もできないようだ。それにファイルマネージャからはこのパスが完全に隠されているため、通常ではわからない。
このようにGnomeはファイルマネージャからじわじわと「伝統的なLinuxのマウント方法」から「Windowsのようなマウント方法」へと支配しようとしているのである。
追記
Gnome2からGnome3への移行
これには反対者も多かったようで、Linuxの生みの親であるリーナス・トーヴァルズもいろいろ言っていたようだ。(この記事を見てほしい)
今までのWIndows7までのような「タスクバー+メニュー+ウィンドウ切り替え」のような堅実なデスクトップ環境を維持してきたGnome2から一転し、タブレット端末に対応するために様々な機能を廃止して、一番の利用者であるデスクトップでの操作性を大きく落とした。
これはどこかのぼったくり大企業のWIndows8と同じ失敗である。
プラグインでどうにでもなる!というふうに言う人も多いだろうと思うのだが、それについてもかなりひどいものになっている。
プラグインの方式
上で軽く触れたプラグインについて見ていこうと思う。
このプラグイン、導入方法がひどい。「ウェブブラウザから」追加するのである。ArchLinuxなどでは、FirefoxやChromiiumからの架け橋的なパッケージが提供されているが正直これのメリットがわからない。Xfceのようにパッケージで追加するのならまだわかる。だが、ウェブブラウザから追加するのでは、まるでWIndowsXPのWindowsUpdate(Active X)ではないか。デフォルトのGnomeでは機能が少なすぎるし、とても使い物にはならないものである。
カスタマイズ性の低さ
Xfce
やCinnamon
、KDE
といったデスクトップ環境では、かなり自由にカスタマイズすることができる。Gnome2
もそこそこのカスタマイズはできた。
しかし、Gnome3はどうだろう。デフォルトでは以前失敗したDEのUnity
ほどにもカスタマイズできない。gnome-tweak-tool
というパッケージを使えばある程度のカスタマイズはできるようになるし、プラグイン(上で散々言ったが)を利用すればそこそこのカスタマイズができるようになる。しかし、プラグインはあくまで公式のものではないし、デフォルト設定がひどいということに変わりはない。(さっきの記事でもリーナスが言っていた)
デフォルト設定は多く人に影響を与える。そのソフトの顔と言ってもいいだろう。それをあそこまでひどい設定にして、「あとは自分でカスタマイズしてね」というGnomeには正直呆れたものである。(Xfceのデフォルト設定も大概アレだが、簡単に切り替えられるようになっておるのでまだマシ)
重い
これはKDE
やUnity
といったデスクトップ環境にも言えることだが、「重い!!」。
Linuxを軽量と聞いた人がUbuntuを起動し、初めて見たのがUnityやGnomeだったら、あの激重ボッタクリ組織のMicro$oftと変わらないではないか、と思ってしまうだろう。(重いのが嫌ならLxdeやXfce、Lxqtを使えという話ではあるが)
XorgとWayland
GUIを描写する上で必須になるXorgが、Waylandに置き変わろうとしている。
これは従来のXorgが複雑になってきたので新しいものに置き換えようという動きであるが、まだ大半のソフトは移行ができておらず、DEでも未だにXorgを採用しているDEがほとんどである。そんな中Gnomeはいち早くWaylandを採用した。進展という意味では良いのかもしれないが、互換性を保つためにXorgも入っているので重量級かつ複雑になっています。
これからのデスクトップ利用におけるLinux
今、デスクトップ環境は一つの大きな転換期を迎えている。GTK+はQTへの移行が行われているし(私はQTは嫌いだが)XorgもWaylandに置き変わろうとしている(これも散々言ったが)。これから、先進的なデスクトップを使っていくのか、それとも堅実なデスクトップを使っていくのか、面白いところだと思う。
コメント
じゃあ作ってくれよ、GNOMEよりメンテナンスされているDEを。
GNOMEどころか他DEのコミッタですら無さそうなのによく他人の功績で外部プロジェクトを攻撃出来るね?
私はまだスキル不足でできそうにありませんが、作りたいとは思っています。
今はそのために様々な基礎知識を勉強している段階です。
ん、/var/run/1000の部分は/var/run/user/${UID}だったりします?
Ubuntu 18.04及び19.10ではそうでした