バイナリ・スペース・パーティショニングの説明
バイナリスペースパーティショニングは、デスクトップ上のウィンドウを完全なバイナリツリーの葉として表現する考え方です。バイナリツリーとは、階層化されたノードを用いて情報を順序付ける構造です。そのツリー内の情報は、ルートノードが常に2つのノードを含んでいる状態で、2つずつソートされます。
Bspwmはノードで動作します。実際には、空のデスクトップにウィンドウを作成すると、bspwmはそのウィンドウを配置するための1つのノードを作成します。そのノードはリーフノードと考えることができます。しかし、そのデスクトップにさらにウィンドウを作成すると、そのリーフノードがルートノードになり、bspwmはそれに付随する新しいリーフノードを2つ作成します。そして、現在のウィンドウと新しく作成されたウィンドウをそれらのリーフノードに配置します。 この後に作成される新しいウィンドウは、それらのリーフノードのどちらかに関連付けられ、それらをそれぞれのルートノードに変えます。 このようにウィンドウを並べると、デスクトップ内に明確な階層が生まれます。どのリーフノードが最初に生成され、どれが特定のルートノードのグループから生成されたものであるかが明確になります。これは、特定のウィンドウやウィンドウ レイアウトのカスタム動作ルールを作成する場合に便利です。キーバインドとステータスバー
bspwmはウィンドウを管理するだけであることに注意することが重要です。つまり、ウィンドウの管理に関係しない他の機能は bspwm パッケージに含まれません。これには、キーを関数にバインドする機能や、ステータスバーを表示する機能が含まれます。
bspwmでキーバインドを使うために、開発者はキーバインドだけを管理するSimple X Hotkey Daemon (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の動作を制御、設定できる強力なユーティリティです。実際、windowsの操作や動作の設定に使用するコマンドはすべてbspcコマンドだけです。
bspwmの設定ファイルの準備
bspwmの設定を始めるには、まず設定ファイルを作成する必要があります。これは、bspwmが最初に起動するときに実行するbspcコマンドを探す場所です。デフォルトでは、bspwmは「/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 の設定 border_width 2
bspc の window_gap 0 を設定する。
bspc コンフィグ split_ratio 0.62
bspc コンフィグ focus_follows_pointer true
bspc のポインタ修飾子 mod1 の設定
bspc の自動化スキーム spiral
bspc ルール -a Chromium desktop='^2'
bspc rule -a Gimp desktop='^8' state=floating follow=on
最初の行のshebangが示すように、この設定はBashで書かれています。最初のいくつかのコマンドは、bspwmの設定を行う前に実行したいプログラムです。
最初のxsetrootは、デフォルトのXカーソルをより親しみやすい左ポインタに変更します。2つ目はバックグラウンドでホットキーデーモンを初期化するものです。bspcの設定とbspcのルール
コンフィギュレーションにある以下のコマンドはbspcに特有のものです。bspc config` はウィンドウマネージャの一般的な設定を扱います。美的な設定と機能的な設定の両方が含まれます。
- border_width は、ウィンドウのボーダー幅の太さをピクセルで決定します。
- window_gap は、ウィンドウの周囲のギャップの量をピクセル単位で指定します。
- split_ratio は、2つのリーフノードを分割するときの比率を指定します。
- focus_follows_pointer は、マウスポインタがどのウィンドウにフォーカスを当てるかを設定する。
- pointer_modifier は、マウスを使用してウィンドウのサイズを変更するためのキーボードキーを決定します。
- automatic_scheme は、自動モードでの分割時のウィンドウのレイアウトを決定する。
一方、bspcルールは、bspwmで開いたときのプログラムの動作を扱います。
- この例の最初のルールは、Chromiumを2番目のデスクトップで実行するように強制します。
- 2番目のルールは、Gimpを8番目のデスクトップで実行するように強制します。また、Gimpをデフォルトのタイル状ではなく、フローティングの状態で実行するように強制します。最後に、Gimp を読み込むときにウィンドウのフォーカスを強制的に Gimp に合わせます。
これで、bspwmの基本的な設定ができました。しかし、bspc config
と bpsc rule
のオプションは広範囲に渡っていることに注意する必要があります。bspwmrc の微調整についてもっと知りたい場合は、Github の 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つのキーの間に “+” 記号を追加することで、キーバインドとして結合することができます。
修飾キー + 通常キー (+ {_, additional, keys})
これができたら、キーバインドの下にインデントされた行を作成するために Enter
と Tab
を押す必要があります。その後、キーバインドが押されたときに実行したいコマンドを指定する必要があります。
# sxhkd に設定ファイルを再読み込みさせる
alt + エスケープ
pkill -USR1 -x sxhkd
# bspwm を終了または再起動する
alt + shift + {q,r}
bspc {quit,wm -r}
# 新しいターミナルウィンドウを作成するか、現在のウィンドウを画面内で最も大きいウィンドウに交換する
alt + {_,shift + }Return
{st, bspc node -s biggest.local} # ウィンドウを閉じる、または殺す
# ウィンドウを閉じるか強制終了する
ALT + {_,SHIFT + }C
bspc node -{k,c}を実行します。
# ウィンドウの状態を変更する
alt + {t,ctrl + t,l,f} # ウィンドウの状態を変更する
bspc node -t {tiled,pseudo_tiled,floating,fullscreen} # ウィンドウを拡大する。
# ウィンドウの一辺を外側に移動してウィンドウを拡張する
Super + Alt + {h,j,k,l} とする。
bspc node -z {left -20 0,bottom 0 20,top 0 -20,right 20 0} # フォーカスするかウィンドウを
# 与えられたデスクトップにフォーカスを当てるか、ウィンドウを送信する
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 を押すと、
bbspc wm -r` が実行されます。
alt + {_,shift + }Return
{st, bspc node -s biggest.local} となります。
このコマンドは端末の起動を扱います。また、デスクトップ上のウィンドウを入れ替えます。最初のコマンドは Alt
+ Enter
で実行でき、2番目のコマンドは Alt
+ Shift
+ Enter
で実行することができます。
alt + {_,shift + }{1-9,0}と入力します。
bspc {desktop -f,node -d} '^{1-9,10}'.
このコマンドはデスクトップの切り替えを処理します。また、それらのデスクトップ内のウィンドウの移動も管理します。最初のコマンドは Alt
+ 1
-0
を押したときに実行され、2番目のコマンドは Shift
修飾キーで実行されます。
インストールの最終決定
これで、bspwm と sxhkd の設定に関する基本的な理解ができました。最後に必要なのは、ウィンドウマネージャとして bspwm を有効にすることです。これは Xorg から直接行うか、ディスプレイマネージャから行うことができます。
xinitrc を使って bspwm を起動する
bspwm を初期化する一番簡単な方法は .xinitrc ファイルに追記することです。もしあなたが最小限のLinuxディストリビューションを使っているなら、これはおそらくウィンドウマネージャをロードするために既に使っている方法でしょう。
これを行うには、.xinitrc の最後の行に次のように追記するだけです。exec bspwm
ディスプレイマネージャを使って bspwm を実行する
しかし、Linux Mint や Ubuntu のようなフル機能のデスクトップを使用している場合、ログイン画面で bspwm を選択する必要があるかもしれません。
例えば、私のインストールした Ubuntu では、ログイン画面の歯車アイコンをクリックし、コンテキストメニューから bspwm を選択してロードする必要があります。 おめでとうございます。これでbspwmのインストールは完了です。これで、設定ファイルをいじったり、サードパーティのドックをインストールしたりして、さらにデスクトップをカスタマイズすることができます。ここに、あなたを刺激するカスタマイズされたデスクトップがいくつかあります。よくある質問
1. 初めてログインしたときに画面が真っ黒なのはなぜですか?
デスクトップの背景が設定されていないことが原因だと思われます。これは、最小限のインストールを実行している場合によくあることです。fehなどの画像閲覧ソフトで背景のテーマを変更することができます。
2. 2. キーバインドが機能しないのはなぜですか?
これはおそらく2つの原因があります。
- sxhkdが起動していないため、キーバインドがロードされませんでした。
- sxhkdrcにシンタックスエラーがあった。sxhkd を設定する際に最もよくある間違いはインデントに関するものです。コマンドを正しく初期化するには、インデントされた行にTabスペースを挿入する必要があります。
3. 3. システムにログインすると、システムプロンプトが表示されるだけでした。
これは、いくつかの原因が考えられます。しかし、最も一般的な原因は、.xinitrc ファイルに問題があることです。bspwmがXorgがロードする最後のプログラムであること、バックグラウンドプロセスとして実行されていないことを確認する必要があります。