Mir 1.0リリース
2018年9月21日、「Mir」の発表から5年以上の時を経て、ついに「Mir 1.0(Mir 1.0.0)」がリリースされました。「Mir 1.0」は「Mir」にとって、初のメジャーリリースとなります。
Mirとは
「Mir」は次世代のディスプレイサーバーです。デスクトップやモバイルデバイス、そしてIoTまで、幅広い分野をサポートするディスプレイサーバーです。
デスクトップPCから見れば、既存のXサーバーを置き換えるソフトウェアになります。
「Mir」に関する詳細は、以下を参照してください。
- 公式サイト:Mir Display Server
- ユーザー向けドキュメント:Getting and Using Mir
- 開発者向けドキュメント:Welcome to Mir
- GitHub:MirServer/mir
- コミュニティー:Mir category
紆余曲折の歩み
「Mir」の発表から5年以上の時間が経ちましたが、その間「Mir」にとって様々な出来事がありました。元々「Canonical」は、次世代のディスプレイサーバーである「Wayland」を支持していました。
しかし(当時の)「Wayland」では、いくつか不満を感じる点があり、独自のディスプレイサーバーである「Mir」の構想及び開発へと移りました。
この時点で「Wayland」と「Mir」はお互いに互換性はなく、またお互いに競合するソフトウェアでした。
モバイルデバイスでは、デスクトップよりも先に「Ubuntu Touch」に「Mir」と「Unity 8」を採用し、「Ubuntu Phone」や「Ubuntu Tablet」が市販されました。
デスクトップデバイスでは、「Mir」は次期「Unity」の「Unity 8」と共に、デフォルトのデスクトップ環境として採用される予定でした。
しかし記憶にも新しいですが、その後「Canonical」は「Unity」及び「Ubuntu Touch」から撤退し、「Ubuntu Touch」と「Unity」の開発は、コミュニティーが引き継ぐことになりました。
また「Mir」はこれに伴いデスクトップやモバイルから撤退し、IoTデバイス向けのディスプレイサーバーとして提供され、その開発規模は大きく縮小されました。
それでも「Mir」の開発者は撤退した分野での活路を見出すため、「Mir」の開発方針を変更し、継続的に開発を行ってきました。
その方針変更とは、「Wayland」の実装です。
「Mir」は「Wayland」コンポジターとして実装されています。
このような紆余曲折の中、ついに「Mir 1.0」のリリースに至りました。
一度は撤退したデスクトップ分野では、「Ubuntu MATE」が「Mir」の採用を検討したり、「Lubuntu」が将来「Mir」の採用を計画しています。
もちろん「Ubuntu Touch」も引き続き「Mir」を採用し、将来最新の「Mir」を採用する計画を立てています。
高速で軽量、そしてセキュアなディスプレイサーバー
「Mir」は高速で軽量、そしてセキュアなディスプレイサーバーです。デバイスやデスクトップ向けのシェルを開発するなら、「Mir」は最適な選択肢になるでしょう。
「Mir」のグラフックスタックは、異なるグラフックプラットフォームやデバイスモデルでも横断的に動作し、キオスク(マルチメディアステーション)やデジタルサイネージ(電子掲示板や電子ポスターなど)、スマートデバイスなど、グラフィックが必要なデバイスと簡単にそして柔軟に統合できます。
GTK3/4、Qt5、SDL2アプリのサポート
GTK3/4、Qt5、SDL2で開発されたアプリや、直接「Wayland」にアクセスできるアプリなら、「Mir」との組み合わせでも動作するでしょう。Mir 1.0.0の利用
「Mir 1.0.0」の利用に関する情報です。IoTデバイス向け
「Mir」はライブラリーの集合体であり、それ自体エンドユーザー向けのアプリケーションではありません。しかしそのサンプルとして、「Mir」上で動作する「mir-kiosk」が提供されています。
現在「mir-kiosk」は、「Mir 1.0.0」上で動作するようになっています。
「mir-kiosk」の詳細は、以下を参照してください。
Mir上で動作するシェルの開発
「Mir」上で動作するシェルを開発する場合、「Mir」はデフォルトの基本的な振る舞いと、振る舞いをカスタマイズするシンプルなAPIを提供しています。高度なカスタマイズを行うAPIはまだ提供されていません。
「Mir」のパッケージは、「Ubuntu」「Fedora」「Arch」で提供されています。
また近々「Debian」でも提供される予定です。
「Ubuntu」で最新版の「Mir」を利用するには、「Mir team’s "Release PPA2」を利用してください。
Wayland拡張プロトコル
「Wayland」には、ある特定の機能を実現する様々なWayland拡張プロトコルが存在します。Wayland拡張プロトコルは文字通りWaylandの機能を拡張するプロトコルであり、誰でも新しい拡張プロトコルの定義や実装が可能です。
そのため「Mir」がそれらすべての拡張プロトコルをサポートすることは困難です。
「Mir」ではプロジェクトにとって重要な拡張プロトコルを選別し、拡張プロトコルの実装を引き続き行っていきます。
「Mir 1.0.0」では、以下の拡張プロトコルをサポートしています。
- wayland
- xdg_shell_unstable_v6
- xdg_shell
デスクトップ及びIoTアプリケーションにとって、これら拡張プロトコルのサポートで大部分の要件を満たします。
デスクトップ向け
「Mir」は「Wayland」ベースのデスクトップ環境やシェルをサポートしています。Mir 1.0.0の入手
「Mir 1.0.0」の入手方法です。Ubuntu Coreにmir-kioskをインストールするには
「Ubuntu Core」に「mir-kiosk」をインストールするには、以下のコマンドを実行します。
sudo snap install mir-kiosk
Classic Ubuntuでは、現状「--devmode」オプションの指定が必要です。
Mir開発向けライブラリーやサンプルをインストールするには
「Mir」の開発向けライブラリーやサンプルをインストールするには、以下のPPAを追加します。
sudo add-apt-repository ppa:mir-team/release
また将来、「Ubuntu 16.04/18.04/18.10」のリポジトリーから利用できるようになる予定です。
egmdeをインストールするには
サンプルのシェルである「egmde」をインストールするには、以下のコマンドを実行します。
sudo snap install --classic --beta egmde
ソースコードを入手するには
「Mir 1.0.0」のソースコードは、以下から入手できます。Mir 1.0.0の変更点
「Mir 1.0.0」の変更点です。
- ABI summary:
. mirclient ABI unchanged at 9
. miral ABI unchanged at 3
. mirserver ABI unchanged at 47
. mircommon ABI unchanged at 7
. mirplatform ABI unchanged at 16
. mirprotobuf ABI unchanged at 3
. mirplatformgraphics ABI unchanged at 15
. mirclientplatform ABI unchanged at 5
. mirinputplatform ABI unchanged at 7
. mircore ABI unchanged at 1
. mircookie ABI unchanged at 2
- Enhancements:
. [Wayland] A configuration mechanism to select the Wayland extensions
. [Wayland] Support XDG shell stable
. [Wayland] Improve protocol scanner
. [libmiral] Display configuration file support
. [libmiral] Make the pid of external clients available
. [libmiral] Add DisplayConfiguration
. [console] Ensure the_console_services() is constructed only once
. [console] An option to select the ConsoleServices provider
. [mir-demos] Move legacy binaries out of mir-demos package
. [mir-test-tools] Drop internal test binaries from mir-test-tools package
. [X11] Experimental X11 support via Xwayland
- Bugs fixed:
. [Wayland] creating a shell_surface should associate a role immediately.
(Fixes #512)
. [Wayland] Default for positioner gravity
. [Wayland] Use miral test framework for wlcs tests
. [Wayland] Send popup configure events
. [Wayland] When setting the pointer cursor apply it. (Fixes #555)
. [Wayland] Hook the OutputManager into display reconfiguration
notifications. (Fixes #585)
. [Wayland] Remove hard coded values for output geometry (screen
orientation and pixel arrangement). (Fixes #601)
. [miral-kiosk] Don't allow apps to specify size of "maximized" windows.
(Fixes #454)
. [Mir-on-X] Fixed keyboard grab issue on Arch. (Fixes #549)
. [eglstream-kms] Platform re-enabled, but no GL client support
. [console] Fix VT switching with LinuxVirtualTerminal. (Fixes #499)
. [console] Avoid breaking X11 desktops that have not claimed the VT from
logind. (Fixes #535, #539)
. [console] LogindConsoleServices: Support VT switching. (Fixes #459)
. [libmiral] Parents of the active window also have focus. (Fixes #522)
. Fix "sanitize" builds
. Racy shutdown in miral-tests and miral_wlcs_tests. (Fixes #543)
. Fix a locale initialization crash on musl
. [mesa] Use both id and drm_fd as output identifier for cursor buffer
as we're not sure of the uniqueness of either. (Fixes #556)
. [mesa] Disconnected hardware has no modes: invent a (slow) refresh rate.
(Fixes #587)
. [input] Guess output for touchscreen (works with one of each).
(Fixes #605)
. mirclient ABI unchanged at 9
. miral ABI unchanged at 3
. mirserver ABI unchanged at 47
. mircommon ABI unchanged at 7
. mirplatform ABI unchanged at 16
. mirprotobuf ABI unchanged at 3
. mirplatformgraphics ABI unchanged at 15
. mirclientplatform ABI unchanged at 5
. mirinputplatform ABI unchanged at 7
. mircore ABI unchanged at 1
. mircookie ABI unchanged at 2
- Enhancements:
. [Wayland] A configuration mechanism to select the Wayland extensions
. [Wayland] Support XDG shell stable
. [Wayland] Improve protocol scanner
. [libmiral] Display configuration file support
. [libmiral] Make the pid of external clients available
. [libmiral] Add DisplayConfiguration
. [console] Ensure the_console_services() is constructed only once
. [console] An option to select the ConsoleServices provider
. [mir-demos] Move legacy binaries out of mir-demos package
. [mir-test-tools] Drop internal test binaries from mir-test-tools package
. [X11] Experimental X11 support via Xwayland
- Bugs fixed:
. [Wayland] creating a shell_surface should associate a role immediately.
(Fixes #512)
. [Wayland] Default for positioner gravity
. [Wayland] Use miral test framework for wlcs tests
. [Wayland] Send popup configure events
. [Wayland] When setting the pointer cursor apply it. (Fixes #555)
. [Wayland] Hook the OutputManager into display reconfiguration
notifications. (Fixes #585)
. [Wayland] Remove hard coded values for output geometry (screen
orientation and pixel arrangement). (Fixes #601)
. [miral-kiosk] Don't allow apps to specify size of "maximized" windows.
(Fixes #454)
. [Mir-on-X] Fixed keyboard grab issue on Arch. (Fixes #549)
. [eglstream-kms] Platform re-enabled, but no GL client support
. [console] Fix VT switching with LinuxVirtualTerminal. (Fixes #499)
. [console] Avoid breaking X11 desktops that have not claimed the VT from
logind. (Fixes #535, #539)
. [console] LogindConsoleServices: Support VT switching. (Fixes #459)
. [libmiral] Parents of the active window also have focus. (Fixes #522)
. Fix "sanitize" builds
. Racy shutdown in miral-tests and miral_wlcs_tests. (Fixes #543)
. Fix a locale initialization crash on musl
. [mesa] Use both id and drm_fd as output identifier for cursor buffer
as we're not sure of the uniqueness of either. (Fixes #556)
. [mesa] Disconnected hardware has no modes: invent a (slow) refresh rate.
(Fixes #587)
. [input] Guess output for touchscreen (works with one of each).
(Fixes #605)