Linuxでbspwmをインストールして設定する方法【初心者向け完全ガイド】
Binary Space Partitioning Window Manager(bspwm)は、Linux向けの強力かつミニマルなウィンドウマネージャーです。高度なカスタマイズ性を備え、革新的なウィンドウ管理アプローチを提唱しています。bspwmはC言語で書かれており、設定ファイルは任意のプログラミング言語で記述できます。ウィンドウマネージャーにおけるユーザーカスタマイズの極致とも言えるbspwmは、自分だけの独自ワークフローを構築したいパワーユーザーやカスタマイズ好きなユーザーにとって魅力的な選択肢となっています。
バイナリスペースパーティショニングとは
バイナリスペースパーティショニング(BSP)とは、デスクトップ上のウィンドウを「完全二分木」の葉ノードとして表現するという考え方です。完全二分木とは、情報を階層的なノード構造で整理する仕組みであり、ツリー内のすべての情報は2つずつに分割され、ルートノードは常に2つのノードを持つという特徴があります。
bspwmはこのノード単位で動作します。実際に、空のデスクトップ上で新しいウィンドウを作成すると、bspwmはそのウィンドウを配置するための単一ノードを生成します。これは葉ノードと考えることができます。さらに同じデスクトップにもう1つウィンドウを作成すると、元の葉ノードはルートノードへと変化し、bspwmはそれに接続された2つの新しい葉ノードを作成します。そして現在のウィンドウと新しく作成したウィンドウが、それぞれの葉ノードに配置されるのです。
その後作成される新しいウィンドウも、いずれかの葉ノードに関連付けられ、その葉ノード自体がそれぞれのルートノードへと変わっていきます。
このようにウィンドウを配置することで、デスクトップ内に明確な階層構造が生まれます。どの葉ノードが先に生成され、どのノードが特定のグループに属しているのかが一目瞭然になります。これは特定のウィンドウやレイアウトに対するカスタム動作ルールを作成する際に非常に役立ちます。
キーバインドとステータスバー
重要なポイントとして、bspwmはあくまで「ウィンドウの管理のみ」を行うソフトウェアであることを理解しておきましょう。つまり、ウィンドウ管理以外の機能はbspwmパッケージには含まれていません。具体的には、キーの割り当て(キーバインド)機能やステータスバーの表示機能などが該当します。
bspwmでキーバインドを使用するには、開発者が提供している別プログラム「Simple X Hotkey Daemon(sxhkd)」を利用します。sxhkdはキーバインド専用のデーモンです。ステータスバーについては、polybarやlemonbarなど、さまざまなサードパーティ製アプリケーションから好みのものを選んでインストールできます。
bspwmとsxhkdのインストール
bspwmとsxhkdのインストールは比較的簡単です。どちらも主要なLinuxディストリビューションのリポジトリで入手可能です。
DebianやUbuntuの場合はaptを使用します:
sudo apt install bspwm sxhkd
Arch Linuxの場合はpacmanを使用します:
sudo pacman -Syu bspwm sxhkd
Fedoraの場合はdnfを使用します:
sudo dnf install bspwm sxhkd
Void Linuxの場合はxbpsを使用します:
sudo xbps-install bspwm sxhkd
本記事ではVoid Linux環境にインストールするため、XBPSを使用しています。
bspc:bspwmの万能コントローラー
bspwmを操作するために必要なプログラムは「bspc」ただ1つです。bspcはbspwmの動作を制御・設定できる強力なユーティリティであり、ウィンドウの操作や設定変更に使用するすべてのコマンドは、実質的にbspcコマンドだと言えます。
bspwm用設定ファイルの準備
bspwmの設定を始めるには、まず設定ファイルを作成する必要があります。bspwmは起動時にこのファイルを読み込み、そこに書かれたbspcコマンドを実行します。デフォルトでは「/home/$USER/.config/bspwm/bspwmrc」というファイルが参照されます。以下のコマンドでファイルを作成しましょう:
mkdir -p /home/$USER/.config/bspwm && touch /home/$USER/.config/bspwm/bspwmrc
このコマンドにより、「/home/$USER/.config/」内にbspwmフォルダが作成され、その中にbspwmrcファイルが生成されます。
bspwmrcファイルは、実行可能であれば任意の言語で記述できます。そのため、まずファイルに実行権限を付与する必要があります。次のコマンドを実行してください:
sudo chmod 774 /home/$USER/.config/bspwm/bspwmrc
これにより、自分自身と同じユーザーグループのメンバーがこのファイルを実行できるようになります。
続いて、bspwmrcファイルを開きます。ここではvimを使って編集します:
vim /home/$USER/.config/bspwm/bspwmrc
空のファイルが開くので、ここに設定を書き込んでいきます。
bspwmの設定
bspwmの基本的な設定は以下のようになります:
#!/bin/bash xsetroot -cursor_name left_ptr sxhkd & bspc config border_width 2 bspc config window_gap 0 bspc config split_ratio 0.62 bspc config focus_follows_pointer true bspc config pointer_modifier mod1 bspc config automatic_scheme spiral bspc rule -a Chromium desktop='^2' bspc rule -a Gimp desktop='^8' state=floating follow=on
1行目のシェバン(#!)が示すように、この設定はBashで記述されています。最初の数行のコマンドは、bspwmの設定を行う前に実行したいプログラムです。
1つ目のxsetrootは、デフォルトのXカーソルを見慣れた左向きポインタに変更します。2つ目はホットキーデーモン(sxhkd)をバックグラウンドで起動するコマンドです。
bspc config と bspc rule
以降のコマンドはbspc固有のものです。bspc configはウィンドウマネージャーの全般的な設定を担当し、見た目に関する設定と機能に関する設定の両方が含まれます。
- border_width: ウィンドウの枠線の太さをピクセル単位で指定します。
- window_gap: ウィンドウ周囲の余白(ギャップ)の大きさをピクセル単位で指定します。
- split_ratio: ノード分割時の2つの葉ノード間の比率を決定します。
- focus_follows_pointer: マウスカーソルの位置によってフォーカスされるウィンドウを切り替えるかどうかを設定します。
- pointer_modifier: マウスでウィンドウをリサイズする際に使用する修飾キーを指定します。
- automatic_scheme: 自動モードでの分割時のウィンドウレイアウト方式を決定します。
一方、bspc ruleは、bspwm上でアプリケーションを起動した際の挙動を制御します。
- 例の設定における1つ目のルールは、Chromiumを必ず2番目のデスクトップで起動させるものです。
- 2つ目のルールは、Gimpを8番目のデスクトップで起動させます。さらに、デフォルトのタイリング状態ではなくフローティング状態で起動させ、読み込み時にGimpへフォーカスを移すよう指定しています。
以上でbspwmの基本設定は完了です。ただし、bspc configとbspc ruleで利用できるオプションは非常に豊富です。bspwmrcをさらに細かくチューニングしたい場合は、GitHub上の公式ドキュメントで全設定項目の一覧を確認することをおすすめします。
sxhkd:bspwm用キーバインドユーティリティ
sxhkdはシンプルなプログラムです。キーボードの入力イベントを常時監視し、押されたキーに応じてコマンドを実行します。複数キーの同時入力(コーディング)にも対応しており、直感的で分かりやすい設定ファイルが特徴です。
sxhkd用設定ファイルの準備
sxhkdの設定ファイル準備手順は、bspwmrcの場合とほぼ同じです。まず、sxhkd用の設定フォルダとファイルを作成します:
mkdir -p /home/$USER/.config/sxhkd/ && touch /home/$USER/.config/sxhkd/sxhkdrc
次に、sxhkdrcファイルに実行権限を付与します:
sudo chmod 774 /home/$USER/.config/sxhkd/sxhkdrc
これで、すべてのキーバインドを記述するためのsxhkd設定ファイルが整いました。
sxhkdの設定
sxhkdは特定のパターンでキーバインドを認識します。まず修飾キー(Alt、Super、Hyper、Controlのいずれか)を指定し、次に通常のキーを組み合わせます。2つのキーの間に「+」記号を挟むことで、キーバインドとして定義されます。
したがって、sxhkdのキーバインドの一般的な形式は以下の通りです:
modifier key + normal key (+ {_, additional, keys})
キーバインドを記述したら、Enterを押してからTabでインデントした行を作成し、その下に実行したいコマンドを指定します。
sxhkdの設定ファイルの例は以下のようになります:
# make sxhkd reload its configuration files
alt + Escape
pkill -USR1 -x sxhkd
# quit or restart bspwm
alt + shift + {q,r}
bspc {quit,wm -r}
# create a new terminal window or swap the current one to the biggest one in the screen
alt + {_,shift + }Return
{st, bspc node -s biggest.local}
# close or kill a window
alt + {_,shift + }c
bspc node -{k,c}
# change the window state
alt + {t,ctrl + t,l,f}
bspc node -t {tiled,pseudo_tiled,floating,fullscreen}
# expand a window by moving one of its side outward
super + alt + {h,j,k,l}
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0}
# focus or send a window to the given desktop
alt + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
キーバインド構文の解説
前述の通り、sxhkdのキーバインド構文は比較的シンプルです。さらにsxhkdは、キーバインドをグループ化したり、波括弧({})を使った分岐コマンドを実行したりすることもできます。
例えば、上記の設定では多くのコマンドが波括弧を活用しています。これにより、類似のキーバインドに複数の機能を割り当てることが可能です。設定内の以下のコマンドを見てみましょう:
alt + shift + {q,r}
bspc {quit, wm -r}
このコマンドはbspwmの終了と再起動を扱います。キーバインド側の波括弧は、コマンド側の波括弧と対応しています。つまり、Alt+Shift+Qを押すとbspc quitが実行され、Alt+Shift+Rを押すとbspc wm -rが実行されます。
また、分岐時に追加のキー入力を省略することもできます。次の例を見てください:
alt + {_,shift + }Return
{st, bspc node -s biggest.local}
このコマンドはターミナルの起動と、デスクトップ上のウィンドウ入れ替えを扱います。Alt+Enterで1つ目のコマンドが、Alt+Shift+Enterで2つ目のコマンドが実行されます。
これは、アンダースコア(_)がキーバインドのパススルー(通過)として機能するためです。これにより、あるコマンドのデフォルトキーバインドを維持しつつ、別のコマンド用の「修飾付き」キーバインドも定義できます。
最後に、sxhkdは単一の分岐に限定されません。以下の例を見てみましょう:
alt + {_,shift + }{1-9,0}
bspc {desktop -f,node -d} '^{1-9,10}'
このコマンドはデスクトップの切り替えと、デスクトップ間でのウィンドウ移動を扱います。Alt+1〜0で1つ目のコマンドが、Shiftキーを加えた組み合わせで2つ目のコマンドが実行されます。
ここでは2つの波括弧を使用して、パススルーキーとデスクトップ番号を定義しています。これら2つの要素は、その下のコマンド内の2つの波括弧に対応しています。
インストールの最終確認
これでbspwmとsxhkdの設定方法の基本はマスターできました。最後に残る作業は、bspwmをウィンドウマネージャーとして有効化することです。Xorgから直接起動する方法と、ディスプレイマネージャー経由で起動する方法の2通りがあります。
xinitrcでbspwmを起動する
bspwmを初期化する最も簡単な方法は、.xinitrcファイルに追記することです。最小構成のLinuxディストリビューションを使用している場合、おそらく既にこの方法でウィンドウマネージャーを読み込んでいるはずです。
.xinitrcの最終行に以下を追記するだけでOKです:
exec bspwm
ディスプレイマネージャーでbspwmを起動する
一方、Linux MintやUbuntuのようなフル機能のデスクトップ環境を使用している場合は、ログイン画面でbspwmを選択する必要があるかもしれません。
例えばUbuntuの場合、ログイン画面の歯車アイコンをクリックし、コンテキストメニューからbspwmを選択することで起動できます。
おめでとうございます!これでbspwmが正常に動作する環境が整いました。今後は設定ファイルの調整やサードパーティ製ドックの導入など、デスクトップをさらにカスタマイズしていきましょう。インスピレーションを得るために、他のユーザーのカスタマイズ済みデスクトップ例を参考にしてみるのもおすすめです。
よくある質問
1. 初回ログイン時に画面が真っ黒になるのはなぜ?
デスクトップの壁紙がまだ設定されていないことが原因と考えられます。最小構成でインストールした場合によく発生する症状です。fehなどの画像ビューアープログラムを使えば、背景テーマを変更できます。
2. キーバインドが動作しないのはなぜ?
主に以下の2つの原因が考えられます:
- sxhkdが起動していないため、キーバインドが読み込まれていない。
- sxhkdrcに構文エラーがある。sxhkd設定で最も多いミスはインデント related の問題です。コマンドを正しく初期化するには、インデント行に必ずTab文字を挿入する必要があります。
3. ログインするとシステムプロンプトに戻されてしまうのはなぜ?
いくつかの原因が考えられますが、最も多いのは.xinitrcファイルの問題です。bspwmがXorgが読み込む最後のプログラムになっていること、またバックグラウンドプロセスとして実行されていないことを確認してください。
-
Kali Linuxのインストール方法を徹底解説!USBメモリ作成から初期設定まで
多くのLinuxディストリビューションは一般ユーザー向けに設計されていますが、Kali Linuxはその例外です。Debianベースのこのディストリビューションは、ホワイトハットハッキングやシステムテストに必要なツールを求めるセキュリティ専門家や、好奇心旺盛な愛好家にとって理想的な環境を提供します。Kali Linuxには、セキュリティテスト用のプログラムが600以上もプリインストールされています。Aircrack-ngからJohn the Ripperまで、業界最高峰のツールが最初から使える状態で揃っています。この記事では、自分のPCにKali Linuxをインストールする手順を詳しく解説し
-
LinuxにKodiをインストールする方法|Ubuntu・Debian・Fedora・Arch対応ガイド
メディアストリーミングの分野で、Kodiに勝るプレイヤーは存在しません。映画やドラマのボックスセットコレクションからライブTVまで、あらゆるコンテンツを再生できます。初代Xbox向けアプリとして誕生した頃とは別物と言えるほど進化しました。クロスプラットフォーム対応のため、Linux PCへのインストールも難しくありません。一部のLinuxリポジトリにはKodiが標準で含まれていますが、すべてのディストリビューションでそうとは限りません。本記事では、主要なLinuxディストリビューションそれぞれにKodiをインストールする手順を詳しく解説します。UbuntuにKodiをインストールする最近のUb