Mango WMとは

Waylandのコンポジター(ウィンドウマネージャー)です。上記リンクにShowcaseと言うタブがあるのでサポートされている環境がすぐわかるようになっています。
基本設定
まず、既に使用しているものと別で入れて試してみてから、良かったと感じたら既存の環境に合流させたほうが良いと思うので、例えばPlasma環境であれば、
- Plasmaの設定からユーザーを追加(アカウントID、パスワード)、
- ログアウト後、作成したユーザーでログイン
- ユーザーファイルは新しく作られるのでDMSのインストール時にMango WMを選択して導入
と言う流れでテスト環境を作ります。
これまでから色んなところで書いているので不要かもしれませんが念のため、インストールスクリプトを書いておくと、
curl -fsSL https://install.danklinux.com | sh
でDMSは入れられます。
既に何かしらのディストリビューションを使用していたのであれば、必要なアプリケーション(ターミナル、動画アプリ、テキストエディター)などは入っているはずですが、再確認もしておくとよいかと思います。
オススメとしては、
- ターミナル:Ghostty
- ファイルマネージャー:thunar
- 動画アプリ:MPV
フォントでは、デフォルトでNotoシリーズが入っていると思いますが、
- Biz UDP ゴシック
- Bizin Gothic NF
などが良いのではないかと思います。もちろんお気に入りがあればそれらを使用しても何も問題ありませんが、そのための設定が別途必要になるかも知れません。
設定(config)ファイル
~/.config/mango/にconfig.confがあります。同じ階層にdms/...とファイルがありbind.confなどはこのディレクトリの中にあります。
WMが違ってもやることは同じ
- 日本語のキーボードを使用できるようにする
- fcitx5を使えるようにする
- バインドの設定
基本的にしないといけないのはこれらです。DMSが基本的な設定はしてありますのでこれらを設定すればすぐに使用できるようになります。
日本語(配列)キーボードを使用できるようにする
config.confを開いて、
xkb_rules_layout=jp
とする必要がありますが、この記述の内_と=が設定が完了するまでたいていは英語配列のキーボードなので、
| 入力したいキー Shiftなし/Shiftあり |
キーボード印字 | 入力できるキー |
|---|---|---|
| - / _ | 「- (ほ)」キー | 「0」の右 |
| = / + | 「^ (へ)」キー | 「0」の2つ右 |
このような対応になっています。xkb_rules_layout=jpを入力して保存したらすぐに日本語配列になります。
fcitx5を使えるようにする
上の方に同じような記載があると思うので、そこの下に、
exec-once=fcitx5 -d
とだけ書きます。公式ドキュメントでは、
env=QT_IM_MODULES,wayland;fcitx
env=XMODIFIERS,@im=fcitx
であったり、
env=GTK_IM_MODULE,fcitx
env=QT_IM_MODULE,fcitx
env=QT_IM_MODULES,wayland;fcitx
env=SDL_IM_MODULE,fcitx
env=XMODIFIERS,@im=fcitx
env=GLFW_IM_MODULE,ibus
等と書いてありますが、基本は不要です。exec-once=fcitx5 -dだけ書いてあれば通常は使用できますが、これもHyprlandと同様に環境変数は必要に迫ってから必要な項目を追記する方向で大丈夫です。env=XMODIFIERS,@im=fcitxは書いておいても良いかも知れません。これも使用するアプリによりけりなので必要であれば。
確認してませんが、CachyOSのPlasma環境でDMSをインストールして試してみた結果なので、CachyOSのPlasma環境には既に必要な環境変数が書いてあるのかもしれません(多分書いていない)。fcitx5が常駐プロセス(デーモン)として起動してあれば、fcitx5が動くことは確認しています。それがexec-once=fcitx5 -dです。
バインドの設定
これらもほとんどがDMSに設定してありますし、DMS設定(GUI:SUPER + ,)でキーボードショートカットをGUI的に設定できるようにもなっているので、それらで編集してもよいわけですが、直に書いても大したことではないので、日本語配列にキーボードを設定できた今となっては直接書いてもいいと思います。
bind=SUPER,B,spawn,firefox
bind=SUPER,E,spawn,thunar
これだけです。SUPER(Windowsキー/⌘キー)とBを押せば、firefoxが起動すると言うことと、SUPER + Eでファイルマネージャーのthunarが起動するようにする設定です。もしショートカットで何が登録されているのかがわからない時は、SUPER + /で一覧が表示されるようになっています。
キーバインドのフォーマットは、
bind[flags]=MODIFIERS,KEY,COMMAND,PARAMETERS
このようになっていて、
- Modifiers:
SUPER,CTRL,ALT,SHIFT,NONE - key: キーの名前かキーコードが使用できます
- flags
l: 画面がロックされていても動作します。s: バインドにキーコードではなく、キーシンボルを使用します- 例えばキー配列が異なっていても同じキーが押された場合に反応するなどということです
r: キーを離した時に作動しますp: キーイベントをクライアントにも伝える- F12(開発者ツール起動)+ WMの自動拡大・レイアウト変更など、mangoにもFirefoxにも伝えることができます
- もし
pフラグがないとMangoがF12を横取りしてFirefoxに届かないことがあります
などで設定していくわけですが、基本的な事はDMSに既に書いてあるので、小難しい設定は少し慣れてきてから行うとよいかと思います。tagと言いますが、tag毎にレイアウトを変えたり、ルールを設定することでそのtagでアプリが開いたり、もしくはtag1とtag2を合体させて表示することも可能です。
ここまでの設定をしてあればひとまずは使用に困るようなことはないかと思います。後は、より便利に改善していくと言う感じです。
Mango WMの面白い所
DMSでの方法で言うとSUPER + ALT + Jで現在のtag(ワークスペース)のレイアウトを瞬時に変更できます。SUPER + ALT + Jで、tile、scroller、monocle、grid……と順番に切り替わるようになっています。
サポートされているレイアウト
Mango WMに行くと、トップページにどういうものかがわかるレイアウトの見本があります。
これらはDMSというわけではなくMango WMでサポートされているレイアウトです。Consolas、Courier New、もしくはBizin Gothic NF、Moralerspace Neon HWNFなどを選択すればズレはなくなると思います。Bizin Gothic NFなどのNF(No Futokoro:ふところ調整版)や、一般的に「1:2の文字幅に固定・最適化された版」を使用すればズレません。Moralerspace Neon HWNFのHWはHalf-Widthを意味しているので、これらが含まれるフォントを使用すると良いということになります。
Bizin Gothic NFとは
ユニバーサルデザインフォントの BIZ UDゴシック と、英文フォントの Inconsolata を合成した、プログラミング向けフォントです。BIZ UDゴシックの目に優しく馴染む字形と Inconsolata の癖がなく美しい字形を違和感無く組み合わせることを目指しています。 とGithubの概要欄に説明があります。
Moralerspaceとは
欧文フォント Monaspace と日本語フォント IBM Plex Sans JP などを合成したプログラミング向けフォントです。文字幅比率が 半角3:全角5、ゆとりのある半角英数字と、半角1:全角2 幅のバリエーションもあり HWと付くのが1:2比率のバリエーションです。
- tile
┌─────────┬─────┐
│ │ 2 │
│ 1 ├─────┤
│ (Master)│ 3 │
│ ├─────┤
│ │ 4 │
└─────────┴─────┘
- scroller(横スクロール並列)
┌────┬────┬────┬───→
│ 1 │ 2 │ 3 │ ...
└────┴────┴────┴───→
- monocle(単一・全画面重ね)
┌─────────────────┐
│ │
│ 1 │
│ (Fullscreen) │
│ │
└─────────────────┘
- grid(均等格子)
# 4 windows:
┌──────┬──────┐
│ 1 │ 2 │
├──────┼──────┤
│ 3 │ 4 │
└──────┴──────┘
# 5 windows:
┌─────┬─────┬─────┐
│ 1 │ 2 │ 3 │
├─────┴─────┼─────┤
│ 4 │ 5 │
└───────────┴─────┘
- deck(デッキ配置)
┌─────────┬─┐
│ │█│ ← Stack indicators
│ 1 │█│
│ (Focus) │█│
│ │█│
└─────────┴─┘
- center_tile(中央マスター)
┌───┬─────────┬───┐
│ 3 │ │ 2 │
├───┤ 1 ├───┤
│ 5 │ (Master)│ 4 │
├───┤ ├───┤
│ 7 │ │ 6 │
└───┴─────────┴───┘
- vertical_tile(縦スプリット)
┌─────────────────┐
│ 1 │
│ (Master) │
├─────┬─────┬─────┤
│ 2 │ 3 │ 4 │
└─────┴─────┴─────┘
- right_tile(右マスター)
┌─────┬─────────┐
│ 2 │ │
├─────┤ 1 │
│ 3 │ (Master)│
├─────┤ │
│ 4 │ │
└─────┴─────────┘
- vertical_scroller(縦スクロール)
┌────────┐
│ 1 │
├────────┤
│ 2 │
├────────┤
│ 3 │
↓ ↓
- vertical_grid
- vertical_deck
- dwindle
- 新しく開いたウィンドウを半分に分割していくHyprlandのような配置です
- fair
- vertical_fair
tag1とtag2を合体させることができると前述しましたが、これはtag1とtag2のウィンドウを集めるということなので表示がそれぞれバラバラになるわけではなく、いずれかのレイアウトでウィンドウが集められます。
上記レイアウトからもわかるように、HyprlandとNiriのレイアウトも使用でき、また独特なレイアウトもあるのでどれが使いやすいかとケースバイケースですが、center_tileで周囲のウィンドウと切り替えて使用するとか、Gridで使用したり、Hyprlandと同様にdwindle(開いたウィンドウがフィボナッチ的に半分になっていく)で使用するのが使い勝手が良かったかなと思います。
例えばNiriであれば、ワークスペースと組み合わせて無限に広がるスクロールウィンドウで管理できるのが良い部分ですが、そんなにウィンドウを広げることがあるだろうかと考えると、Hyprlandでもよいですが、レイアウトの豊富さを考えるとMango WMは確かにいいとこ取りな感じはします。
また、一部Youtubeの動画で、DMSで言うSUPER + ALT + Jのサークルレイアウト(次々にレイアウトを変えられる)と言うのが自分の好きなものに設定できないという紹介がありましたが、そんなことはなく、
circle_layout=grid,scroller,tile
などと、設定したいレイアウトを順番にbind.confに書けばその順番でレイアウトが変わります。
circle_layout=grid, scroller, tile
などと半角スペースを入れると機能しませんでしたので、連続で書く必要があります。サポートされているレイアウトは上記から名称を参照するか公式のLayoutからもわかります。それら見本は公式トップページでグラフィカルに確認もできます。
まとめ
たくさんのコンポジター(ウィンドウマネージャー)があって、どれを選べば良いのかを迷ってしまうのはあるあるな状況で、本来であればHyprlandでもそれ単体では他に入れるものもたくさんあり、導入に戸惑ってしまいます。DMSのようなシェルがそれらを簡単にさせているとも言えます。
しかし、HyprlandかNiriかMangoか、あるいはSwayなど色んなものがあってどれかを使うべきか困っていると言う状況であればMango WMの選択は悪くなくむしろ便利だとも言えます。
いずれにしてもWaylandのコンポジターを、DMSから使用すると言うことにおいてはどれでも一緒のような気もします。
Hyprlandではdwindleの配置で、
┌─────┬─────┬─────────┐
│ 2 │ 3 │ │
│ │ │ 1 │
│─────┴─────┤ (Master)│
│ 4 │ │
│ │ │
└───────────┴─────────┘
という配置が可能で、これはNiriでは設定すればできるのでしょうが通常はできません。Niriでは左側が上から2、3、4とウィンドウがMangoと同じように並ぶのです。
こういった時に、HyprlandでNiriでとはセッションを変えないといけなかったりNiriではSUPER + [だったでしょうか、ウィンドウをひとまとめに表示するなどを行わねばならず一長一短がありましたが、MangoではSUPER + ALT + Jで済むわけですからこれは便利です。しかしそれだけなのです。
私はここらから思うに、レイアウトの優劣はあるけれどもたいして大きな問題ではないと考えています。どれでも同じようなことはできるので好きなコンポジター(ウィンドウマネージャー)を使えばいいと思います。
他に、同じDMSでもHyprlandではPC画面の輝度やボリュームなどをノートPCで言うファンクションキーで操作ができましたが、Mangoではその設定がないのか何も反応がありませんでした。画面右上からGUIで操作ができるためこれも問題はないと言えばそうですが、まだ細かな部分までは手が入っていないとも感じました。
DMSを介してWM(ウィンドウマネージャー)を変えたとしても
DMSの設定が同じで、ウィンドウマネージャーだけが変わったとしても「うぉぉぉこれは凄い!」とはなりにくく、率直な感想としては「ほーん」と言うぐらいのものでした。
別件で
以前からWaylandのコンポジター(Hyprland、Niri、Mango WMも含む)で、←矢印、バックスペース、SUPER(Windowsキー/⌘キー)らがスリープから復帰の時に機能しない時があると言っていましたが、どうも色々触っていく中でFcitx5臭いです。
fcitx5を起動せずに使用した場合、スリープからの復帰では「これらは起こらない」、あるいは「ほとんど気にならない」という感じでした。ただ原因が特定できたわけではなく、fcitx5を起動せず操作した場合は何も起こらないということは、fcitx5の何かしらがキーを横どっているのではと思ったわけです。repeat_delayとrepeat_rateを明示的に書いたというのもありますが、おそらくはこれらは問題(関係)ないと思っています。
もし同様に←矢印、バックスペース、SUPER(Windowsキー/⌘キー)等に問題が出ているとすれば、中国語入力でも問題は出ているはずですが見た限りそういう報告はほとんど無く、これらは特に日本語でよく使用するキーとも言えるので、どこに問題があるのだろうかとずっと考えていました。
# Hyprland
hl.env("XMODIFIERS", "@im=fcitx")
# mango
env = XMODIFIERS,@im=fcitx
は、念のため書くようにしましたが、これも不要そうにも思うものの何かしらで効く可能性があるので入れているという感じです。
fcitx5の設定の中に「アドオン」というのがあり、その中に「wayland」の設定で「システムXKB設定の上書きを許可する(KDEとGNOMEのみサポート)」のチェックを外す、これが一番効いていそうな気がします。