Hidekichi

最近色々な所で紹介されているMangoWMがDank Material Shellで使えるようになっているので早速使ってみよう

Waylandのコンポジターには色々とありますが、いいとこ取りなウィンドウマネージャーから始めるのは悪くない選択ではあると思う次第です

Mango WMとは

mango wm トップページ

Mango WM

Waylandのコンポジター(ウィンドウマネージャー)です。上記リンクにShowcaseと言うタブがあるのでサポートされている環境がすぐわかるようになっています。ここではDank Material Shellでの話で書いていきます((複数のディストリビューションに対応しているので、Showcaseには敢えて載せられていません))。

基本設定

まず、既に使用しているものと別で入れて試してみてから、良かったと感じたら既存の環境に合流させたほうが良いと思うので、例えばPlasma環境であれば、

  1. Plasmaの設定からユーザーを追加(アカウントID、パスワード)、
  2. ログアウト後、作成したユーザーでログイン
  3. ユーザーファイルは新しく作られるのでDMSのインストール時にMango WMを選択して導入

と言う流れでテスト環境を作ります。

これまでから色んなところで書いているので不要かもしれませんが念のため、インストールスクリプトを書いておくと、

curl -fsSL https://install.danklinux.com | sh

でDMSは入れられます。

既に何かしらのディストリビューションを使用していたのであれば、必要なアプリケーション(ターミナル、動画アプリ、テキストエディター)などは入っているはずですが、再確認もしておくとよいかと思います。前にも別の記事で書きましたが、DMSをインストールした後に各アプリを入れると色が対応していないとか、主に見た目で問題が出ることがあります。予め必要なものはインストールしておくようにしましょう(予め入れておいてもそれらが反映されない場合もあります)。

オススメとしては、

フォントでは、デフォルトでNotoシリーズが入っていると思いますが、

などが良いのではないかと思います。もちろんお気に入りがあればそれらを使用しても何も問題ありませんが、そのための設定が別途必要になるかも知れません。

設定(config)ファイル

~/.config/mango/config.confがあります。同じ階層にdms/...とファイルがありbind.confなどはこのディレクトリの中にあります。Dank Material Shellでは、設定ファイルで基本的なことは設定する必要がありますが、Hyprland同様にDMS設定(GUI)でほとんどのことが設定できるようにもなっています。

WMが違ってもやることは同じ

基本的にしないといけないのはこれらです。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は書いておいても良いかも知れません。これも使用するアプリによりけりなので必要であれば。thunarを使用する場合は書いておく方が良いはずです。無くても動作するのは確認済みですが、何かしらの問題が出ないとも限りません。なので予防的な意味合いで。

確認してませんが、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 + /で一覧が表示されるようになっています。操作的にはHyprlandと共通で、Mango WMの公式などに書いてあるキーの組み合わせとは異なるので、独自にMango WMと関連するアプリをArch Linuxで導入したと言う場合とは異なり、DMSでのキーの組み合わせなのでDMSでHyprlandやNiriをこれまでから使用してきた人にとってはわかりやすいと思いますが、そうでない場合は慣れるまでに時間がかかるかも知れません。

キーバインドのフォーマットは、

bind[flags]=MODIFIERS,KEY,COMMAND,PARAMETERS

このようになっていて、

などで設定していくわけですが、基本的な事はDMSに既に書いてあるので、小難しい設定は少し慣れてきてから行うとよいかと思います。例えば、Hyprlandで言うワークスペースはMangoではtagと言いますが、tag毎にレイアウトを変えたり、ルールを設定することでそのtagでアプリが開いたり、もしくはtag1とtag2を合体させて表示することも可能です。

ここまでの設定をしてあればひとまずは使用に困るようなことはないかと思います。後は、より便利に改善していくと言う感じです。

Mango WMの面白い所

DMSでの方法で言うとSUPER + ALT + Jで現在のtag(ワークスペース)のレイアウトを瞬時に変更できます。これもそれぞれのレイアウトをキーバインドとして登録しても良いんだろうと思いますが、SUPER + ALT + Jで、tile、scroller、monocle、grid……と順番に切り替わるようになっています。

サポートされているレイアウト

Mango WMに行くと、トップページにどういうものかがわかるレイアウトの見本があります。

これらはDMSというわけではなくMango WMでサポートされているレイアウトです。以下レイアウトがズレる場合はブラウザのChrome系で言う固定幅フォントをConsolasCourier New、もしくはBizin Gothic NFMoralerspace Neon HWNFなどを選択すればズレはなくなると思います。等幅でも厳密な等幅のルール(1:2の比率)を満たしていない場合があり、Bizin Gothic NFなどのNF(No Futokoro:ふところ調整版)や、一般的に「1:2の文字幅に固定・最適化された版」を使用すればズレません。Moralerspace Neon HWNFHWは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比率のバリエーションです。

┌─────────┬─────┐
│         │  2  │
│    1    ├─────┤
│ (Master)3  │
│         ├─────┤
│         │  4  │
└─────────┴─────┘
┌────┬────┬────┬───123...
└────┴────┴────┴───
┌─────────────────┐
│                 │
│        1        │
│   (Fullscreen)  │
│                 │
└─────────────────┘
# 4 windows:
┌──────┬──────┐
│  12   │
├──────┼──────┤
│  34   │
└──────┴──────┘

# 5 windows:
┌─────┬─────┬─────┐
│  123  │
├─────┴─────┼─────┤
│     45  │
└───────────┴─────┘
┌─────────┬─┐
│         │█│   Stack indicators
│    1    │█│
│ (Focus) │█│
│         │█│
└─────────┴─┘
┌───┬─────────┬───┐
│ 3 │         │ 2 │
├───┤    1    ├───┤
│ 5(Master)4 │
├───┤         ├───┤
│ 7 │         │ 6 │
└───┴─────────┴───┘
┌─────────────────┐
│        1        │
│    (Master)     │
├─────┬─────┬─────┤
│  234  │
└─────┴─────┴─────┘
┌─────┬─────────┐
│  2  │         │
├─────┤    1    │
│  3(Master)│
├─────┤         │
│  4  │         │
└─────┴─────────┘
┌────────┐
│   1    │
├────────┤
│   2    │
├────────┤
│   3        

tag1とtag2を合体させることができると前述しましたが、これはtag1とtag2のウィンドウを集めるということなので表示がそれぞれバラバラになるわけではなく、いずれかのレイアウトでウィンドウが集められます。

上記レイアウトからもわかるように、HyprlandとNiriのレイアウトも使用でき、また独特なレイアウトもあるのでどれが使いやすいかとケースバイケースですが、center_tileで周囲のウィンドウと切り替えて使用するとか、Gridで使用したり、Hyprlandと同様にdwindle(開いたウィンドウがフィボナッチ的に半分になっていく)で使用するのが使い勝手が良かったかなと思います。

例えばNiriであれば、ワークスペースと組み合わせて無限に広がるスクロールウィンドウで管理できるのが良い部分ですが、そんなにウィンドウを広げることがあるだろうかと考えると、Hyprlandでもよいですが、レイアウトの豊富さを考えるとMango WMは確かにいいとこ取りな感じはします。またHyprlandよりは軽量にも思います。

また、一部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の選択は悪くなくむしろ便利だとも言えます。慣れももちろんありますが完成度としてはhyprlandの方が高いようにも思えますし、Niriの方が広大な領域を縦横無尽にウィンドウが配置できる自由さがあります。これらは一日の長と言うか、問題点があればすぐに報告が来て、それらを修正すると言う積み重ねですから有利なのには違いありません。その分、後から登場したものは良いところだけを吸収できるという利点もあるわけです。

いずれにしてもWaylandのコンポジターを、DMSから使用すると言うことにおいてはどれでも一緒のような気もします。

Hyprlandではdwindleの配置で、

┌─────┬─────┬─────────┐
│  23  │         │
│     │     │    1    │
│─────┴─────┤ (Master)│
│     4     │         │
│           │         │
└───────────┴─────────┘

という配置が可能で、これはNiriでは設定すればできるのでしょうが通常はできません。Niriでは左側が上から2、3、4とウィンドウがMangoと同じように並ぶのです。例えば、2~3は4の位置で、4は2~3の位置と上下が逆転しているとして、左上にブラウザ、右側にダウンロードアプリ、左下にも右側のダウンロードアプリでダウンロードできなかった「タイトルが長い動画」があった場合、それらがダウンロードできる別のアプリを開いたりと言う配置が1つのワークスペースで可能です。Niriでもできますが、ウィンドウが縦に並ぶため、ウィンドウの下部にあるボタンなどがウィンドウを移動させないと操作できない事などがあるわけです。

こういった時に、HyprlandでNiriでとはセッションを変えないといけなかったりNiriではSUPER + [だったでしょうか、ウィンドウをひとまとめに表示するなどを行わねばならず一長一短がありましたが、MangoではSUPER + ALT + Jで済むわけですからこれは便利です。しかしそれだけなのです。

私はここらから思うに、レイアウトの優劣はあるけれどもたいして大きな問題ではないと考えています。どれでも同じようなことはできるので好きなコンポジター(ウィンドウマネージャー)を使えばいいと思います。

他に、同じDMSでもHyprlandではPC画面の輝度やボリュームなどをノートPCで言うファンクションキーで操作ができましたが、Mangoではその設定がないのか何も反応がありませんでした。画面右上からGUIで操作ができるためこれも問題はないと言えばそうですが、まだ細かな部分までは手が入っていないとも感じました。

DMSを介してWM(ウィンドウマネージャー)を変えたとしても

DMSの設定が同じで、ウィンドウマネージャーだけが変わったとしても「うぉぉぉこれは凄い!」とはなりにくく、率直な感想としては「ほーん」と言うぐらいのものでした。唯一便利かもと思ったのはサークルレイアウトであり、私には既に設定してあるHyprlandで機能的には十分だったので、今から変更しようという感じにはならなかったというのが正直な感想です。しかし、これは私のように既にHyprland(あるいはNiri)を使用している場合はと言う事で、初めてこれらに触れる人にはめちゃくちゃ斬新だと感じるはずです。WindowsにもMacにもないウィンドウ操作は始めてしばらくは難しいと感じるかも知れませんが、慣れた頃にはスタックしてある(重なっている)ウィンドウを見ると「あぁ面倒くさい」と思うようになるかも知れません。これは好みや、操作を覚える気のある無しで変わる部分だと思いますが、たいていは良い方向に行くのではないかと思います。

別件で

以前からWaylandのコンポジター(Hyprland、Niri、Mango WMも含む)で、←矢印、バックスペース、SUPER(Windowsキー/⌘キー)らがスリープから復帰の時に機能しない時があると言っていましたが、どうも色々触っていく中でFcitx5臭いです。

fcitx5を起動せずに使用した場合、スリープからの復帰では「これらは起こらない」、あるいは「ほとんど気にならない」という感じでした。ただ原因が特定できたわけではなく、fcitx5を起動せず操作した場合は何も起こらないということは、fcitx5の何かしらがキーを横どっているのではと思ったわけです。一応、インプットの項に、キーのrepeat_delayrepeat_rateを明示的に書いたというのもありますが、おそらくはこれらは問題(関係)ないと思っています。

もし同様に←矢印、バックスペース、SUPER(Windowsキー/⌘キー)等に問題が出ているとすれば、中国語入力でも問題は出ているはずですが見た限りそういう報告はほとんど無く、これらは特に日本語でよく使用するキーとも言えるので、どこに問題があるのだろうかとずっと考えていました。環境変数が何かしら必要なのかと、

# Hyprland
hl.env("XMODIFIERS", "@im=fcitx")

# mango
env = XMODIFIERS,@im=fcitx

は、念のため書くようにしましたが、これも不要そうにも思うものの何かしらで効く可能性があるので入れているという感じです。

fcitx5の設定の中に「アドオン」というのがあり、その中に「wayland」の設定で「システムXKB設定の上書きを許可する(KDEとGNOMEのみサポート)」のチェックを外す、これが一番効いていそうな気がします。

blogカテゴリ内のタグ一覧