Help us understand the problem. What is going on with this article?

herbstluftwmのおはなし

More than 1 year has passed since last update.

はじめに

この記事はSPC同好会 Advent Calendar 2017 18日目の記事です。

東京高専プロコンゼミ一年の塚本です。
このような記事を書く事は始めてで文章中に不自然な箇所もあるかもしれませんが、どうかよろしくお願いします。

今回はherbstluftwmのお話をさせて頂くのですが、私自身このwmを使い始めてから二ヶ月程度しか経っていないので知識不足であり、説明が一部間違っているかもしれません…
herbstluftwmはユーザーの数がかなり少なく知名度も低いので、この記事を通じて少しでも興味を持って貰えれば嬉しいです。

herbstluftwmとは

herbstluftwmはめっちゃイケてる(重要)タイル型のウィンドウマネージャです。
シンプルで軽量、コマンドライン上でウィンドウ配置を操作できるのが特徴的ですね。

インストール

archならpacman、debian系ならapt-get、redhat系ならrpmでインストールできます。
もしパッケージマネージャが使用できなくてGitHubから取ってくる必要がある場合は公式ページのtutorialに詳しいやり方が載ってるのでそれを参考にしましょう。

タイル型とフレーム

先述した通り、herbstluftwmはタイル型のウィンドウマネージャです。

herbstluftwmは他のタイル型wmなどと同様に木構造を採用していて、現在のウィンドウ構造はherbstclient layoutで確認する事ができます。

また、herbstluftwmにはフレームと呼ばれるイケてる仕組みが存在します。
フレームは内部にウィンドウを複数保持する事ができ、一つのフレームに複数のウィンドウが生成された場合は縦に並ぶ仕様になっています。

各フレームは縦または横に分割できて、もちろんリサイズする事も可能です。
モニターがいくつかのフレームに分割されていて、その中にウィンドウが生成されるようなイメージですね。

コンフィグ

コンフィグは~/.config/herbstluftwm/autostartに書き込む形になります。
lnでリンク貼ってgit管理するといろいろ捗っておすすめです。

コンフィグがデフォルトのままだとろくに使えないちょっと不便なので、好みに合わせて変えていくといいと思います。

キーバインド設定や画面色の設定、フレーム枠の太さなどいろいろ変更できるのでかなり楽しいです。
また、herbstclient spawn [コマンド]でコマンド呼び出しが可能なので、dmenuなどを適当に設定しておくといいでしょう。

表示モード

他のタイル型wmにはtabモードやfloatモードが存在するものも多いので、herbstluftwmのレイアウト表示モードについてもお話しておきます。

herbstluftwmにはtabモードが存在せず、pseudotilefloatingfullscreenモードが存在します。
また、各モードが指定したウィンドウのみに適用されるものなのか、画面全体に適用されるものなのかはモードによって異なるので覚えておくといいと思います。


pseudotileはウィンドウを(フレームの中で)適切な大きさになるように変更するモードです。
適当なターミナルを起動してpseudotileモードに設定したらこんな感じになります。

term.png

適切な大きさと言っても素の状態よりウィンドウが大きくなる事はないので、使う場面は限られると思います。


floatingはその名の通りウィンドウをフロート表示に変更するモードです。
ウィンドウをフロート表示に変更して、マウス操作やキー操作によるウィンドウ移動を可能にします。
また、この時自動的にウィンドウサイズの変更が行われるようになっています。
ワークスペース内の全ウィンドウに対して適用されたりするので、慣れてない状態で誤爆すると非常に辛いです。
かなり便利なのですが通常表示時との操作性の違いが大きいので最初はかなり戸惑うと思います。


fullscreenは指定したウィンドウをフルスクリーン表示に変更するものです。
この表示モード自体はかなり便利で使いどころも多いのですが、気をつけなければならない点もあります。
それは、画面表示がフルスクリーンになるだけで、フォーカスやウィンドウ移動は通常通り行われる事です。
例えばウィンドウAとBが表示されている状態でAに対してフルスクリーンモードを適用します。
その場合、画面を下にフォーカスした時には全画面表示されている画面Aの上に画面Bが表示されます

fullsc.png

上画像のような感じに表示されるので、フルスクリーン状態での画面フォーカスには気をつけた方がいいかもしれません。

モニターの設定

Archwikiを確認するとherbstclient detect_monitorsで自動セットアップが可能とか書かれていますが、実際そんなに便利じゃないです。
また、xrandrで--right-ofとかつければ勝手にワークスペース分割してくれるのかと言うとそうでもなく、一部手動での設定が必要になってきます。
add_monitor 1024x768+1024+0みたいな感じに入力すればモニター追加は可能なので、後述するherbstclientとかを使って自動設定用のシェルを書くのもいいかもしれません。

herbstclient

herbstluftwmにはherbstclientと呼ばれるかなりイケてる仕組みが用意されています。
これはコマンドで画面表示を操作できるもので、シェルやRuby等に組み込んでみるとかなり面白い事ができるようになっています。

herbstclient [herbstluftwmのコマンド名]でコマンド実行が可能で、例えばherbstclient closeとか打ち込んでやればシェルからウィンドウの削除ができたりします。

また、ウィンドウ操作以外にもフレームの幅変更や背景色の変更、モニターの設定までコマンドで行えて、実際すごい便利です。

適当な言語でGUIを書いてconfigで自動起動するように設定し、herbstclient split bottom 0.9とかで画面分割してやると擬似ステータスバーとか書けます。超イケてる

ステータスバーや自動モニター設定の他にも、指定したレイアウトへの変更をキー操作一つでやってくれるスクリプトが書けたりしてとんでもなく楽しいです。

使えるコマンドや変数の一覧は公式のページにまとめて載ってるので、一度見てみるといいと思います。

ちょっとした問題点

ここまでherbstluftwmについて色々話してきましたが、いくつか欠点があったりします。

まず一つ目の欠点は、ユーザーがもの凄く少ない事です。
Twitterでherbstluftwm lang:jaとか調べてみるとすごい分かりやすいのですが、ユーザーが実在を疑うレベルで少ないです。
幸いなことに公式の出しているリファレンスがしっかりしているので情報不足にはなりづらいのが救いですね…

二つ目の欠点は開発がほぼ死にかけている事です。
arch公式のリポジトリの最終更新は一年以上前、GitHubの最新の更新も三ヶ月前になっています。
また、ユーザーの少なさもあってコミュニティが壊滅状態になっています。

まとめ

いくつか欠点もありますが基本的にシンプルでできる事も多く、使っていて楽しいウィンドウマネージャです。
うちの部員にはi3wmユーザーがかなり多い気がするのですが、他のタイル型wmに触ってみるのも面白いのでぜひ使ってみてください。
また、自分のコンフィグはGitHubに上がってたりします。
以前作成したLTの資料もあるのでそちらも見ていただけると嬉しいです。

おわり

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした