デスクトップウィジェット
初期状態では大きな時計と、プロセッサー、メモリ、ディスクの使用状況を示すモニターが表示されます。右クリックすると、カレンダーと付箋メモを追加できます。付箋メモは入力しながらプレーンテキストで保存されます。
イメージに入っているものと、そうした理由のすべて。
パッケージリポジトリの広さとハードウェア対応の幅広さで、Ubuntuに並ぶLinuxベースはありません。linux-firmwareだけでも、実際に使われているWi-Fi、Bluetooth、GPU、チップセットの大半をカバーし、NVIDIAのカードはubuntu-drivers-commonが適切に処理します。Canonicalの署名済みshimとGRUBがリポジトリにあり、カーネルも署名済みなので、Secure Bootはそのまま動きます。さらにベースには12年間のセキュリティメンテナンスが付きます。
置き換える価値があったのはUbuntuのデスクトップの部分でした。重いうえに、スタートボタンもデスクトップアイコンもタスクバーもありません。Cinnamonにはその3つがそろっています。そのためMoonLightOSは最小のベースから始め、その上にデスクトップを組み上げています。Ubuntu自身のデスクトップは一切インストールせず、利用者の目に触れるところにベースの名前は出てきません。
ひとつだけ意図的に変えていないものがあります。aptから見えるリリースのコードネームは「resolute」のままです。PPAやlsb_releaseを呼ぶものがこれに依存しているからです。実際に表示されるブランド名は/etc/os-releaseから来ています。
画面下にパネルが1本、高さは52ピクセルです。左にスタートボタンと検索ボックス、中央に起動中のアプリがパネル上で最も大きなアイコンで並び、右にステータス表示があります。メニューには画像と名前、そしてこのパソコンを管理できる権限があるかどうかが表示され、検索ボックスからアプリ、設定、ファイル、ウェブの結果を探せます。
画面下にパネルが1本。ドックにはよく使うアプリも並ぶので、ランチャーの列をもう1つ置く必要がありません。
上に時計とステータスアイコン用の細いバー、下に自動で隠れるドック。
上に細いバーが1本だけ。画面を最も広く使え、古いグラフィックスでは最も軽い構成です。
どちらのテーマも、1つのスクリプトと1つの配色から生成しており、GTK 2、3、4、Cinnamonシェル、ウィンドウの枠までを一通りカバーします。GTKテーマはAdwaitaを読み込んで色を差し替える方式なので、新しいウィジェットや上流の修正が自動的に反映されます。アイコンテーマはPapirusをベースに、ディストリビューションを示すアイコンだけを差し替えています。アクセントカラーは「デスクトップとドック」から変更できます。
初期設定では7時からライト、19時からダークになります。小さな常駐サービスが、テーマをこの時間どおりに保ちます。
初期状態では大きな時計と、プロセッサー、メモリ、ディスクの使用状況を示すモニターが表示されます。右クリックすると、カレンダーと付箋メモを追加できます。付箋メモは入力しながらプレーンテキストで保存されます。
ロゴは静止したまま、その周囲の光が脈打ちます。周期2.6秒と3.1秒の2枚のハロー画像が少しずつずれていくため、光り方が機械的に見えることはありません。どちらもビルド時に元の画像から生成しており、同じロゴとハローがGRUBメニュー、ログイン画面、インストーラー、「MoonLightOSについて」、ようこそツアーにも表示されます。
画面表示にInter、コードにJetBrains Mono、それ以外にはNotoを使い、中国語、日本語、韓国語、カラー絵文字にも対応します。
ペンギン、湖、三日月を題材にした写真5枚に、生成した昼と夜の1組を加えています。初期状態では「湖に沈む夕日」が設定されています。
WindowsとmacOSは、ほとんどの操作で違うキーボードショートカットを使います。この2つはめったに衝突しないので、MoonLightOSは両方に対応しました。SuperキーはWindowsの流儀に、ControlキーはMacの流儀に従います。
| 操作 | Windowsから | macOSから |
|---|---|---|
| メニューを開く | Super | Super |
| 検索 | Super+Space | Super+Space |
| ファイル | Super+E | — |
| 画面をロック | Super+L | Ctrl+Super+Q |
| デスクトップを表示 | Super+D | Ctrl+Super+D |
| ウィンドウを画面半分に配置 | Super+Left / Right | — |
| 最大化と元に戻す | Super+Up / Super+Down | Alt+F10 / Alt+F5 |
| 最小化 | Super+H | Alt+F9 |
| ウィンドウを閉じる | Alt+F4 | Super+Q |
| 全画面表示 | Super+F | Ctrl+Super+F |
| ウィンドウを切り替え | Alt+Tab, Super+Tab | Alt+Tab |
| 同じアプリの次のウィンドウ | Alt+` | Super+` |
| すべてのウィンドウ | Super+W | Ctrl+Up |
| すべてのデスクトップ | Super+S | Ctrl+Down |
| デスクトップを切り替え | Ctrl+Alt+Left / Right | Ctrl+Left / Right |
| ウィンドウを別のデスクトップへ移動 | Ctrl+Shift+Alt+Left / Right | Ctrl+Shift+Left / Right |
| 設定 | Super+I | Super+, |
| システムモニター | Ctrl+Shift+Esc | — |
| コマンドを実行 | Super+R, Alt+F2 | — |
| 端末 | Ctrl+Alt+T | Ctrl+Alt+T |
| ブラウザー | Super+B | Super+B |
| 電卓 | Super+C | Super+C |
| ミキサーとイコライザー | Super+A | Super+A |
| クリップボード履歴 | Super+V | Super+V |
| メモ | Super+N | Super+N |
| ファイルを変換 | Super+Shift+C | Super+Shift+C |
| 画面全体のスクリーンショット | Shift+Super+3 | |
| 範囲を指定したスクリーンショット | Shift+Print | Shift+Super+4 |
| ウィンドウのスクリーンショット | Alt+Print | — |
| 撮影と録画のパネル | Ctrl+Shift+Print | Shift+Super+5 |
| ログアウト | Ctrl+Alt+Delete | — |
ポインターを画面の左上隅に移動すると、ウィンドウの一覧が開きます。Superキーだけでメニューが開き、Super+Spaceなら検索ボックスにカーソルが入った状態で開きます。
apt、snap、Flatpakをすべて導入済みで、GNOME Softwareはその3つをまとめて一覧表示します。順番はsnap、Ubuntuリポジトリのパッケージ、Flathubです。.debパッケージが常に最も軽く、それ以外はFlathubがカバーします。
Snap Storeアプリ自体がsnapで、依存関係を含めると約1GBあります。メモリ2GBのパソコンを想定したイメージに入れるには大きすぎます。そこで、ストアは最初からsnapの一覧表示とインストールができるようにしておき、Snap Storeアプリ本体は接続が使えるようになった時点でサービスがダウンロードします。
設定の「アプリケーション」ページでは、何が入っているか、各アプリが3つの形式のどれで入ったか、二重にインストールされているものがないかを確認できます。
インターネットに接続していなくても、汎用デスクトップとして最初から使えるように選びました。
Firefox(Mozilla公式ビルド。uBlock Originをローカル拡張として同梱しているため、オフラインでも使えます)、Thunderbird、Geary、Transmission
LibreOffice Writer、Calc、Impress、Draw、Evince、GNOME Text Editor、Xournal++、PDF Arranger、MoonLight PDF、カレンダー、時計、天気、地図、電卓
VLC、Celluloid、Rhythmbox、GStreamer(libav、「bad」「ugly」プラグイン、VA-API付き)。H.264、H.265、AACがどのアプリでも再生できます
GIMP、Drawing、Eye of GNOME、MoonLight Export、Simple Scan、フォントビューアー、スクリーンショット
GNOME Software、システムモニター、ディスク、GParted、ディスク使用量アナライザー、Timeshift、Redshift、File Roller、Seahorse、Blueman、プリンター、MoonLight Tweaks
NetworkManager。OpenVPN、OpenConnect(Cisco AnyConnect、GlobalProtect、Fortinet)、L2TP、PPTP、SSH、WireGuardの標準対応付き
Visual Studio Code、gcc、g++、make、gdb、git、git-lfs、cmake、meson、ninja、Python 3(pip、venv、NumPy、OpenCV)、Node.jsとnpm、RustとCargo、Go、OpenJDK 21(MavenとGradle)、Docker Engine、Compose v2、Buildx、SQLite
GNOME Terminal、bash、zsh、fish、tmux、screen、Neovim、nano、ripgrep、fd、jq、yq、htop、btop、ncdu、tree、nmap、dig、whois、traceroute、httpie、socat、rsync、rclone、aria2、shellcheck、inxi、fastfetch
Wine(32ビット対応)、winetricks、DXVK(Direct3D 9〜11)、VKD3D(Direct3D 12)
linux-firmware一式、IntelとAMDのマイクロコード、ファームウェア更新用のfwupd。
IntelとAMD向けにMesa、Vulkan、VA-API、VDPAU。NVIDIAドライバーはISOに収録しているので、インターネットに接続していなくてもドライバーのページから有効にできます。
カーネルに50を超える無線ドライバーを収録。標準のドライバーではうまく動かないチップ向けに、broadcom-staとr8168をDKMSでビルドして同梱しています。
CUPSとドライバー一式、PDFへの印刷、SANE、Simple Scan。
BlueZ、Blueman、PipeWireのBluetoothコーデック。設定ページでは、Bluetoothのハードウェアがない場合にそのことをはっきり表示します。
PipeWireとWirePlumber、PulseAudio互換、10バンドのイコライザーを内蔵。
power-profiles-daemon、thermald、パネルへのバッテリー残量表示、タップでクリックとナチュラルスクロールを初期状態で有効化、WacomとSynapticsの入力対応。
VirtualBox、QEMU/SPICE、VMware向けのゲストツールを収録しているので、画面サイズが自動調整され、クリップボードも共有できます。
fprintd、libfprint、TODローダーを導入済みで、PAMと連携します。MoonLight Fingerprintがセンサーを判別し、登録の手順を案内します。
OpenCVによる顔認証を、ログイン画面、ロック画面、sudoで利用できます。自分で有効にするまで無効です。
以下はすべて、インストール済みのMoonLightOSで初期状態から有効です。
ファームウェア → Canonicalのshim → 署名済みGRUB → 署名済みカーネル。設定 → MoonLightOSについて で、お使いのパソコンで有効かどうかを確認できます。
LUKS2によるディスク全体の暗号化は、インストーラーのチェックボックス1つです。
ufwが有効です。外部からの接続は遮断し、外部への接続は許可します。
強制モードで動作します。snapも対象です。
Ubuntuのセキュリティリポジトリとpackages.mozilla.orgから毎日取得します。使われていないカーネルや依存関係は削除され、パソコンが勝手に再起動することはありません。
最初のユーザーアカウントがsudo経由でパソコンを管理します。rootパスワードは一切設定しません。
2種類の文字種を含む8文字以上。8回間違えると、アカウントを15分間ロックします。
権限のないプログラムがシステムや他のプログラムについて知りうる範囲を狭めるよう、カーネルを設定しています。カーネル内部のアドレスや起動時のメッセージは見えないようにし、他のプロセスのデバッグは禁止し、動作中に別のカーネルを読み込むこともできません。ネットワーク層は経路の詐称や接続の洪水に備えて強化し、IPv6アドレスは定期的に入れ替えます。
FireWireと、めったに使わないファイルシステムやネットワークプロトコルのモジュールは自動では読み込まれません。機器を挿したり通信を受け取ったりしただけで、このパソコンが決して使わないコードが読み込まれることはありません。
マシンIDとSSHホスト鍵は、インストールしたパソコン上で生成します。すべてのインストールで同じホスト鍵を使っていては、ホストの検証に意味がなくなります。
クラッシュや利用状況を報告するサービスはイメージに入っていません。Firefoxのテレメトリー、スタディーズ、Pocket、スポンサーコンテンツはポリシーで無効にし、トラッキング防止を有効にしています。
USBGuardを導入しているので、画面がロックされている間に挿された機器は信頼されません。初期状態では無効で、セキュリティのページのボタン1つで有効になります。
ログイン以外の動作をする2つ目のパスワードです。消去モードはディスクのLUKS鍵を破棄して電源を切り、おとりモードは空のセッションを開いて5分後に固まります。初期状態では無効で、設定には本当のパスワードが必要です。本当のパスワードと同じものは設定できません。
セキュリティのページで設定できます。再起動できる人なら、そうでなければ起動メニューを編集してrootシェルを起動できてしまうからです。
MoonLightのヘルパーにはそれぞれ名前付きのpolkitアクションがあるので、パスワードを求める画面に、何に同意するのかが表示されます。
| メモリの圧縮(zram) | メモリの半分、最大8GB、zstd圧縮、優先度100。デスクトップのメモリページでは圧縮率がおよそ3:1になります。 |
|---|---|
| スワップの調整 | カーネルの初期値60は、スワップがディスクアクセスを意味することを前提にしています。zramではメモリのコピーで済みます。 |
| メモリ不足への備え | 空きメモリ4%で動作し、2%でSIGKILLを送ります。Cinnamon、Xorg、LightDM、Nemoは決して止めず、Firefox、Thunderbird、Code、LibreOffice、コンパイラーから先に止めます。 |
| インデックス作成なし | trackerもなく、バックグラウンドでディスクを走査することもありません。 |
| グラフィックスの自動調整 | ログイン時にOpenGLレンダラーを確認します。llvmpipeなどのソフトウェアレンダラーであれば、アニメーションを切ります。後から利用者が選んだ設定を上書きすることはありません。 |
| GRUB | 控えめなグラフィックスモードを要求し、フォールバックも用意しているので、ビデオメモリの少ない仮想マシンでもメニューが表示されます。 |
| Squashfs | zstdで圧縮しているため、USBメモリからでもライブセッションが速く読み込まれます。 |
初回起動時のウィザードは、短い一覧で英語(米国と英国)、イタリア語、フランス語、ドイツ語、スペイン語、ブラジルポルトガル語、オランダ語、ポーランド語、ロシア語を提示し、それ以外のロケールは「その他の言語」から選べます。キーボードレイアウトは選んだ言語に合わせて設定されるので、次の手順はたいてい「次へ」を押すだけです。
MoonToolsの文字列は全部で774件あり、英語に加えてこの8言語に翻訳されています。訳されていない文字列が画面に出るプログラムがあると、ビルドは失敗します。イタリア語の言語パックとLibreOfficeの辞書はイメージに収録しているので、イタリアでオフラインインストールしても完全に現地語化されます。ほかの言語パックはワンクリックでダウンロードできます。
コマンドラインのツールは意図的に英語のままにしています。出力はドキュメントと見比べたり、不具合の報告に貼り付けたりするものなので、言語が1つのほうが扱いやすいからです。
手書きのテーマは、GTKにウィジェットが追加されるたびに壊れます。この方式なら上流の修正をそのまま受け取れます。
削除していなければ、Cinnamonの更新で元のページが黙って並んで復活することはなく、MoonLightOSのパッケージを削除すればきれいに元に戻ります。
インストーラーがディスクへコピーするのは、このsquashfsそのものです。ここから/bootを削ると、起動できないシステムをインストールすることになります。
Debianのdesktop-baseパッケージにmoonlightという名前のPlymouthテーマがすでにあり、更新でアニメーションが黙って置き換わってしまうからです。
addons.mozilla.orgを指すポリシーでは、Firefoxが接続できる状態で初めて起動したときにしか拡張が入りません。この拡張はイメージに含めてあり、不要なら削除もできます。
LinuxのDocker Desktopはエンジンを専用の仮想マシンの中で動かします。ノートパソコンでカーネルとメモリをもう1つ抱えることになります。
仮想マシン、PHPとデータベース、LaTeXは、ようこそからワンクリックで入ります。すべてのインストールに1GB分を背負わせる必要はありません。