Fedora Cosmic Spinで行ってみよう

Gnomeだけではなく比較的新しいデスクトップ環境であるRust製のCosmicデスクトップ環境で何が変わるのかを試してみました。

Hidekichi

Fedora Cosmic Spinとは

Fedora Cosmic Spinは、Ubuntu派生のPop!_OSの開発元であるSystem76が開発しているCOSMICデスクトップ環境を搭載したFedora Linuxの公式スピン(派生バージョン)です。

COSMICはRust言語で開発された新しいデスクトップ環境で、従来のGNOMEやKDE Plasmaと比較して、軽量でリソース効率が高く、モダンで洗練されたユーザーエクスペリエンスを提供することを目標としています。

COSMICはまだ開発途上でありマイナーなバグに遭遇する可能性はあります。しかし新しいデスクトップを体験したいユーザーや軽量なシステムを求めるユーザーに最適です。特にPop!_OSで人気を博したタイル型ウィンドウ管理の柔軟性をFedoraの環境で試したい方にも適しています。

https://youtu.be/riQsc__5qPg

Fedora Cosmic spinのリリースタイプは?

Fedora Linux本体のリリースモデルは、約6ヶ月ごとに新しいバージョン(例:Fedora 40, Fedora 41, Fedora 42…)がリリースされるポイントリリース(またはタイムリリース)モデルを採用しています。ローリングリリースではなく、短いサポート期間ですがUbuntuなどのLTSなどに比べたら短い期間のサポートではあります。セミローリングリリースとも言われます。

ディストリビューションリリースモデルパッケージの頻度
Fedoraポイントリリース
約6ヶ月毎
とても新しい
Ubuntuポイントリリース
約6ヶ月毎、LTSは約2年毎
Fedoraよりは古い傾向

Fedoraは、Red Hat Enterprise Linux(RHEL)の上流(アップストリーム)としての役割を担っているため、最新のカーネル、GNOME、およびその他の主要なソフトウェアパッケージを積極的に採用します。なので一般的にUbuntu(特にLTS(Long Term Support:長期サポート) バージョン)と比較すると、より新しいバージョンのパッケージをデフォルトで利用できます。

メジャーバージョンの安定性

Fedoraは6ヶ月ごとの新しいバージョン(例:Fedora41→Fedora42)への移行の間にコアシステムの大きな変更は行こなわず、この期間(約13ヶ月間のサポート期間)は、バグ修正やセキュリティアップデートは提供されるものの、API/ABIを壊すような大規模なパッケージのメジャーバージョンアップは通常行われないため、システム全体としては安定していると言えます。

つまりArch系のディストリビューションのように、パッケージのリリースがメンテナーの検査等諸々が済めば更新可能になるものよりは遅れるものの、Ubuntuほどパッケージの内容が古くなることもないので、逆にある程度の間は現状を維持できて比較的早くに新しいパッケージが利用できるという意味にもなります。

例えばHyprlandなどのRice環境((ユーザーがカスタマイズしたドットファイルを提供してそれを利用する文化))などのように、頻繁に新しい機能が追加されたりと開発が活発なものにはすぐには対応できないものの、安定した内容を比較的長く使用できることにもなり、最新を追いたいと言うよりはその環境を手に入れたらしばらくその環境を保てるという意味合いからも使い方によってはかなり良い更新頻度ではなかろうかと思います。

Rust製であることにメリットはあるか?

CosmicデスクトップがRustを採用している最大の理由の一つは、その言語設計によるメモリ安全性と並行処理の安全性です。
他のディストリビューションはC/C++などで作られており、速度面では大きく変わりません。しかし、CやC++は、メモリリークや セグメンテーション違反(セグフォ) といったメモリ関連のバグが発生しやすいことが知られています。これは、デスクトップ環境のような複雑で長時間動作するソフトウェアにとっては、クラッシュやセキュリティ上の脆弱性に直結します。

Rustは「所有権(Ownership)」システムと「ライフタイム(Lifetime)」の概念により、コンパイル時にこれらのメモリ関連のバグ(ヌルポインタ参照、データ競合など)の多くを防ぎ、結果として、COSMICは従来のC/C++ベースのデスクトップ環境と比較して、クラッシュしにくい、より安定した(堅牢な)動作が期待できます。
ただし、これはバグが無くなるということではなく、メモリ関連のバグの多くを防ぐと言うことに注目して下さい。システム的な問題があればそれはクラッシュしますし、新しいデスクトップ環境であるというのは十分に枯れた技術が使われているわけではないので気づかない問題が存在しているというのはもちろんあるわけです。

例えば、ウィンドウマネージャ以外に、ファイルマネージャや色々なものが動作しています。GnomeやKDEなどはそれらも安定して連携しています。Rustを使用した最新のβ版のCosmicよりGnomeなどの方が壊れにくいのは言語どうのと言うよりは存在して使用され続けた時間だけのフィードバックがあり、それを修正改善してきた結果です。なのでいきなりそれを超えて行くというのはかなり困難なことですが、それを超えるかも知れないポテンシャルは感じます。

現代のデスクトップ環境は、応答性を保つためにマルチスレッド処理(並行処理)を多用しますが、これはデータ競合((複数のスレッドが同時に同じメモリを書き換えようとして不正な結果を生む))のリスクを伴います。
Rustは、データ競合をコンパイル時に禁止する仕組みを備えています。これにより、開発者はマルチスレッド処理を安全に実装でき、デスクトップ環境がフリーズしたり、予期せぬ動作をしたりするリスクを大幅に減らせます。

Rustはモダンな言語であるため、開発者にとって使いやすいツールや機能が標準で提供されています。cargoという強力なパッケージマネージャーとビルドシステムが標準で備わっており、COSMICのような大規模プロジェクトの依存関係管理とビルドプロセスをシンプルかつ効率的に行えます。
イテレーター、パターンマッチング、ゼロコスト抽象化など、開発効率とコードの安全性を高める最新のプログラミング機能を利用できます。

これらの利点は、ユーザー体験においては「クラッシュが少ない」「動作が安定している」という形で現れ、開発者にとっては「より安全でメンテナンスしやすいコードが書ける」というメリットになります。

Gnomeとは違うウィンドウマネージャ

COSMICデスクトップ環境のウィンドウマネージャーにはcosmic-compと言う名称が付けられています。ウィンドウの表示、移動、リサイズ、そしてタイル型ウィンドウ管理などの機能を提供する役割を担っています。
これはWaylandプロトコルに対応したコンポジタとして機能しており、Smithayというライブラリをベースに開発されています。

cosmic_de

画像は拾ってきたものですが、開いたウィンドウをタイル表示している状態です。普通のWindowsのようなスタック表示がデフォルトです。これらは設定でタイリングをデフォルトに切り替えができます。特別な理由がない限り個人的にはタイル型の設定で使うのがベストだと思いますが、これがデスクトップでマウスを使う場合はやや事情が異なるかも知れません。
タイル型で表示している場合にでもマウスで位置を変更などができるというのもあり、フローティングさせたウィンドウの大きさや、あるいはタイリングされ並べられた時の比率を変更するなどはマウスの方が楽かもしれません。

このようにキーボードでなるべく完結できるように考えられているHyprlandやSwayなどよりは、COSMICのウィンドウマネージャは柔軟に使用できるようになっています。しかし、Hyprlandがそれらができないということではありません。Hyprlandでもやはり同様の操作が可能です。

画面上部にトップバーが表示されていますが、画面下のドックパネルも左右に縦(バーティカル)表示ができます。
そのため、ノートPCなどで画面が狭い場合に画面の縦を最大限使用できます。完全に試したわけではないので確実ではない話ですが、トップバーの自動非表示はできましたが、画面下のドックパネルは表示されたままでした。これは別に設定があるかも知れないということを付け加えておきます。

更にこのタイリングされた状態からウィンドウ同士をスタッキング、つまり重ねるという意味合いですが、一般的に言うとタブ表示も可能です。例えば上記画像で言えば、右下の2つが左右に並んでいますが、いずれかを選んでSuper + Sでスタッキング可能な状態になり、Super + →で隣のウィンドウにフォーカスを当て、Super + Shift + ←で簡単に合体してタブ表示になるという感じです。
Super + Fでいずれかのウィンドウをフローティングさせた状態からもスタッキングができるかもしれません。これは未確認です。

多くの場合、これらタイル型のウィンドウは一度に1画面にたくさんウィンドウを開くというのも可能ながら、別のワークスペースに作業するウィンドウを移動させてワークスペースを切り替えながら作業することになるかと思います。この切り替えがとてもスムースにできるので、大きなディスプレイを用意せずとも切り替えつつ作業できます。
またCosmicウィンドウマネージャはワークスペースを左右だけではなく上下の縦方向も使えるとかなんとか。

操作

キー動作
Super + 左右矢印ワークスペースが切り替わります。
アクティブなウィンドウが切り替わります。右に切り替えていき右にアクティブなウィンドウが無くなると、次のワークスペースに切り替わります
Super + 数字そのワークスペースに切り替わります
Super + Shift + 矢印中央にウィンドウがある場合、その方向にタイル表示されます。
新しくウィンドウを開くと中央に重なって開かれます
Super + Shift + Ctrl + 矢印アクティブなウィンドウが次のワークスペースに移動します
Super + Shift + 数字アクティブなウィンドウが次のワークスペースに移動します
Super + Qアクティブなウィンドウが閉じます
Super + M全画面とデフォルトのサイズにウィンドウが切り替わります
Super + J/K重なったウィンドウの前後を切り替えます
Super + R + 矢印その方向に拡大できます。Super + Shift + R + 矢印で同様に縮小します

ウィンドウ操作

キー動作
Super + Shift + K/↑アクティブウィンドウが上に移動します
Super + Shift + J/↓アクティブウィンドウが下に移動します
Super + Shift + H/←アクティブウィンドウが左に移動します
Super + Shift + L/→アクティブウィンドウが右に移動します

K/↑Kキーあるいはキーのいずれかということです

システム

キー動作
Superファイルのインクリメンタルサーチの入力画面ができます
Super + Aアプリメニューが開きます
Super + Bブラウザが開きます
Super + Tターミナルが開きます
Super + Fファイルマネージャが開きます
Super + Wワークスペースと開いてるウィンドウの一覧が表示選択できます。WindowsのSuper + TABのような感じ
Super + ESCロックスクリーン
Super + Shift + ESCログアウトするかを選択できます
Printスクリーンショット

ウィンドウタイリング

キー動作
Super + Y開いているウィンドウをタイリングするトグルスイッチ
Super + Sウィンドウ同士を1つのウィンドウに重ねられます。タブ表示。
Super + Xウィンドウがタイリング表示されている時にそれぞれを入れ替えられます

デフォルトで入っているソフトウェア

Fedora Live環境で確認

種類名称
WebブラウザFirefox
メーラーThunderbird
テキストエディタCOSMIC TEXT Editor
ターミナルCOSMIC Terminal
メディアプレーヤCOSMIC Media Player
音楽プレーヤRhythmbox
IME選択・設定Input Method Selector
文書作成LibreOffice(Calc/Impress/Writer)
ドキュメントビューアOkular
USBメディア作成Fedora Media Writer
システムモニタGnome System Monitor
システムモニタSystem Moniter
OSインストーラーInstall to Hard Drive
言語設定Language
問題報告Problem Reporting
システムセキュリティ
トラブルシューティング
SELinux Troubleshooter
アーカイバArk
スクリーンショットCOSMIC Screenshot
計算機Calculator
ストレージ管理Disks
GUIソフトインストーラーCOSMIC Store

実際にストレージに導入すると他にもいくつか自動で入るかと思いますが、基本的にはこんな感じです。

日本語で使用する場合、IMEの設定が重要になりますが、それらの設定・導入なども既にGUIで設定できるソフトウェアが入っているので、日本語を選ぶだけだとIbusを用いたものでしたが、別でFcitx5などを導入してもそれらもInput Method Selectorで選べるだろうと思います。

COSMICデスクトップ環境を採用したディストリビューション

このように色々なディストリビューションのデスクトップ環境として採用されています。コミュニティエディションのようなポジションのものもあります。

Fedora COSMIC Spin と COSMIC ATOMIC

Fedoraで言うと、COSMIC SpinCOSMIC ATOMICというものがあります。Spinとつくものは、Fedoraにこれまでからあるデスクトップエディションのバリアント(バリエーション)になっていて、従来通りシステムのコアファイルを含め、全てが書き込み可能になっていています。
dnfパッケージマネージャーを用いて、アプリケーションやライブラリをシステムに導入、削除、更新が可能です。いわゆる一般的なLinuxのディストリビューションと同様です。

一方で、COSMIC ATOMICは、Fedora Silverblue、Kinoiteなどの後継のように、OSのコアシステムは読み取り専用で、通常の利用中に変更されることはありません。インストール時に依存関係などに問題があればインストールされません。これらは、Fedoraが推進する、普遍的なデスクトップのコンセプトで変更されないコアシステムの基盤の上にソフトウェアを追加していき、それらコアファイルは読み取り専用にして変更することはできないようになっています。
ソフトウェアはFlatpak(サンドボックス化されたコンテナ)を通じて行われ、OSのベースシステムとは別としてインストールされます。

サンドボックス化されたコンテナとは
権限の適用範囲が決まっている状態で、その中でだけ動作するようにしたと理解してもらってよいかと思います。

このようにサンドボックス化された状態で何かを開発しようとしたとしても、ベースシステムとは別にそれら開発ツールはインストールされ、Toolbxと言うコンテナツールを使って隔離された環境に開発ツールやライブラリなどはインストールされ、それらを通じてのみ開発ができ、ベースのOSの重要なシステムファイルや構成を不用意に変更する権限はありません。

ベースシステムが不変なため、壊れにくく、アップデートで問題が発生した場合でも即座に以前の状態にロールバックできます。もし、マルウェアが紛れ込んでもコアシステムに永続化するのが難しく、セキュリティが向上します。

形状は違いますが喩えとして、Flatpakはファミコンのようなものだという理解が良いかと思います。システムを起動するROMと、ゲームの入っているカセットROMがあり、それらは別の読み取り専用のプログラムが入っています。
カセットROMを挿入して電源を入れるとゲームが起動し、ゲーム上で何かしらの裏技を使用してゲームに問題が起こったとしてもシステムROMを改変するわけではなく、リセットを行えばまた正常に正しくゲームが起動する様子、これがいわゆるサンドボックス化されたコンテナと言う状態の説明にあっているかと思います。

COSMICデスクトップ環境が各ディストリビューションで採用されるのはなぜか

例えばFedoraであれば、dnfパッケージマネージャ、Arch系であれば Pacmanパッケージマネージャなどがありますが、デスクトップ環境はデスクトップを構成表示するための環境であり、むしろOSとしてはそのシステム管理であったり構造の、いわゆる中身の方が重要になります。

普段からArch系に慣れているのにFedoraでdnfパッケージマネージャで管理するというのもまた覚えることが増えますし、今まで使ってきた環境をそのままに表示だけ変えられると便利です。これらは例えばログインマネージャの画面、GUI的には起動してID(ユーザー名)とそのパスワードを入れてログインする画面で多くの場合セッションの切り替えができるようになっていて、どの環境で起動させるかを選択できるようになっています。
多くの場合、競合を防ぐというのもありあまりたくさんのデスクトップ環境を入れずに、データさえ別であればクリーンインストールするのも15~30分程度でインストールできる時代となっていますから、できるだけシンプルに運用するのが良いと言う考えから1つだけ、中には2~3つぐらいのデスクトップ環境を入れている人もいるかと思います。

Windowsのような操作感、つまりはスタッキングしていく(積み重なっていく)ウィンドウマネージャーでやる方が良い作業と、タイリングされていくウィンドウマネージャーでの作業が良い場合と、それらはやる作業の内容によって切り替えられたり、気分で変えたりとか、何かしでかしてしまって一方のデスクトップ環境にはログインしても正しく表示できなくなったとか諸々の理由はあると思いますが、そういう場合に使い分けられていたりします。

例えば従来のGnome環境であったり、Xfce環境であったりは見た目は違いますが同じような操作感でした。WindowsやMacに慣れているとそれらの方が馴染みやすいとは思いますが、実際にHyprlandやSwayあるいはi3、Awesomeなどのタイリングウィンドウマネージャを使用すると、それらがとても邪魔くさい方法であったことに気が付きます。
使用するリソースが幾分重い従来の方法では、何かファイルをダブルクリックしてから開くまでのごく僅かな時間でさえ遅いと感じるぐらいにタイリングマネージャは低遅延で高速に開きます。Windowsしか使用したことがなければ、PCが古ければ古いほどその速さに驚くぐらいだと思います。
それらは不要な機能が削がれているとか低遅延になるように設計されているという仕組みがあるわけですが、何でも便利なものを知ってしまうと元に戻れなくなってしまうように感じてしまうものです。

例えば昭和の頃であればわざわざTVの前まで行ってチャンネルを物理的に回していました。しかしそれはリモコンとなり、ソファーに座りながらボタンを押せばチャンネルが変わるようになりました。ここで普通なら十分ですが、さらに現代ではAmazon Echoのようなデバイスに、チャンネルを変えて言うだけで変わったりしています。
ここまで行ってしまうともう、TVのチャンネルをダイレクトに変えるためにわざわざ立ち上がってTVの前まで行くと言うのは絶対にしないはずです。それぐらい便利という怠惰を貪っているのです。

これらはPCあるいはOSの挙動にも同じようなことが言えます。COSMICが選ばれるのには、従来のデスクトップ環境で良いはずではあるけれども、更にそれらを便利にするものがそこにあるからなのです。

実際にSSDに入れてCosmicを試すと、これはFedoraとArch系の構造の違いなどもあるかもしれませんが、Cosmicのデフォルトの状態ではArch系でHyprlandを動作させウィンドウを開くのは遅いように思います。Gnomeなどよりやや速いぐらいでしょうか。
それでも、それしか知らなければ十分速いと思います。この使用感は各ディストリビューションが採用して当然だとも思います。ただしまだ正式版ではない所には注意。

まとめ

COSMICデスクトップ環境はスタック型とタイル型のいずれも使え、従来の方法とこれから方法との中間のような存在です。
新しく登場したもの、例えばHyprlandやそれらを動作させる元になるWaylandは、KDEやGnomeはじめ徐々にX11環境から移行しつつあります。RustもそれまでのC/C++などから色々なソフトウェアがそのシステムの根幹をRustで書き換えたりしつつあります。

それらは内部の話なのでユーザー側には大した違いとして見えるわけではないものの、それらを利用したソフトウェアとそれらの進化は直に体感できるものになります。今はまだこれまでにあったものをこれまで通りに動作させると言う意味合いが強い時期ではありますが、それらが普通になった時に更なる進歩があると思うわけです。

今からLinuxに触れる人にいきなりHyprlandの環境を入れろと言ってもそれはかえって逆効果にもなりかねません。操作方法も導入方法も難しいからです。操作は使っているうちに慣れるとは思いますが、その導入や設定はすぐにできるものではないかも知れません。

そのために仕方なくMintやUbuntuを勧めるしかないというのがこれまでの定番ではありました。しかしこのCOSMICデスクトップ環境はそれらとHyprlandなどの中間にあり、どちらにも近いものになっています。これであればまだ完全に安定版ということではないでしょうが、十分初心者にも勧められるものであると思うのです。

システムの更新も従来通りで、何か特別な追加の操作をする必要もなく、うまく使用できればそれだけのポテンシャルはあると思うのです。
確かに、専用に作り上げた環境に敵うものではないと思いますが、モダンでかつ次世代的な使い方を可能にするものだろうと思います。後は、どのシステム(Fedora、Arch、openSUSE等)で使うかだけの問題です。

https://youtu.be/dQPaW0qissM

上記動画は本家Pop!_OSとFedoraの各Cosmicデスクトップの比較をしています。動画の各動作は早送りではなく実際もこれぐらいです。これはおそらくデスクトップでマウスを使って操作している部分が多いと思います。オートダビング版なので日本語音声になっていますがわかりにくいとは思います。
本家はUbuntuベースなので最新を追うのは難しいと思いますが、一番安定していると思います。Fedoraはもう少しリリースが速いので比較的新しく各パッケージを維持できると思いますが、あくまでCosmicデスクトップ環境を適用しているだけというのと、Fedora自体がArch系に比べるとモッサリ感はあるのではなかろうかとも思います。

各フォーラムや動画などを見て、活発な所からはじめても良いですし、既に何かのディストリビューションを使用していて、それに慣れているのであれば同じような系統からCOSMICデスクトップ環境を採用しているものを探して下さい。きっと、新しい体験ができると思います。

https://youtu.be/JtCZmhieNz0
https://youtu.be/h80DjAu7nz8

blogカテゴリ内のタグ一覧