Skip to content
L Luka Piplica
linux bspwm dotfiles customization nord

洗練されたNordicデスクトップの構築:Pop!_OSでのBSPWMカスタマイズ

Pop!_OS上でBSPWM、Polybar、Picom、ZSHを使用し、エレガントなNordカラーを基調としたミニマルで高性能なタイル型ウィンドウマネージャ環境を構築する徹底ガイド。

L

Luka Piplica

5 分で読めます
ヴィンテージもののコンピュータケースが開き、内蔵されたメカニカルキーボードが現れて展開する様子を描いたアイソメトリックGIFアニメーション。

タイル型ウィンドウマネージャ(WM)は、その軽量さ、圧倒的なカスタマイズ性、そして効率性の高さから、Unixコミュニティで非常に高く評価されています。従来のデスクトップ環境をキーボード駆動型のウィンドウ管理に置き換えることで、開発者は高度に最適化されたワークフローを実現できます。

本ガイドでは、Pop!_OSBSPWM(Binary Space Partitioning Window Manager)をベースにした、カスタムデスクトップ環境の構築手順をステップ・バイ・ステップで詳しく解説します。人気のNordicカラーパレットを基調としたこのセットアップは、ミニマリズムの美学と強力な実用性を兼ね備えています。


ワークスペースの紹介

以下は、カスタマイズされた様々なシステムユーティリティや端末ユーティリティが動作している、完成した環境のビジュアル概要です:

カスタマイズされたNordicデスクトップ環境の統合ビュー


コアシステムアーキテクチャ

この環境を再現するために、Pop!_OSの標準のGNOMEデスクトップを、個別のユーティリティで構成されたモジュール式のセットアップに置き換えます。下表は、この環境の技術仕様の一覧です:

コンポーネントソフトウェア / プロジェクト説明
オペレーティングシステムPop!_OSDebian/Ubuntuベースの安定したLinuxディストリビューション
ウィンドウマネージャBSPWM二分木空間分割(Binary space partitioning)タイル型ウィンドウマネージャ
ホットキーデーモンSxhkdシンプルなX用ホットキーデーモン
ステータスバーPolybar高速で使いやすいステータスバー作成ツール
XコンポジトPicom (ibhagwanフォーク版)角丸やDual-Kawaseぼかしに対応したコンポジタ
アプリランチャーRofiウィンドウ切り替え、アプリランチャー、dmenuの代替ツール
端末エミュレータAlacrittyGPUアクセラレーション対応の端末エミュレータ
シェル & テーマZsh + Powerlevel10k高性能なインタラクティブ・シェル環境
ビジュアルテーマNordic Dark GTK北極の色調にインスパイアされたクリーンなダークGTKテーマ
アイコン & カーソルFlattery Dark & Oreo Blueフラットなアイコンと洗練されたモダンなカーソルポインタ
プライマリフォントSource Code Proコードの読みやすさに最適化された等幅フォント

ステップ・バイ・ステップのインストールとコンパイル

このチュートリアルは、Pop!_OSのクリーンインストールから始めることを想定しています。依存関係を完全に制御し、最適なパフォーマンスを確保するために、いくつかのコアコンポーネントはソースから直接コンパイルします。

1. リポジトリとシステムパッケージの同期

依存関係をダウンロードする前に、ローカルのパッケージデータベースが最新であることを確認し、ベースとなるシステムプログラムをすべて完全にアップグレードしておきます:

sudo apt update
sudo apt upgrade -y

2. BSPWMのインストールと設定

BSPWMは、ウィンドウを完全二分木の葉(リーフ)として表現する、軽量なタイル型ウィンドウマネージャです。

コア依存関係の取得

必要なXCBおよびシステムライブラリをインストールし、BSPWMを安全にコンパイルおよび実行できるようにします:

sudo apt install -y build-essential git vim xcb libxcb-util0-dev libxcb-ewmh-dev libxcb-randr0-dev libxcb-icccm4-dev libxcb-keysyms1-dev libxcb-xinerama0-dev libasound2-dev libxcb-xtest0-dev libxcb-shape0-dev

ソースからのコンパイル

公式リポジトリをクローンし、バイナリをコンパイルして、システム全体へのインストールを行います:

cd ~/Downloads
git clone https://github.com/baskerville/bspwm.git
cd bspwm
make
sudo make install

設定ファイルの初期化

設定ディレクトリの構造を作成し、デフォルトの初期化スクリプトをコピーします:

mkdir -p ~/.config/bspwm
cp examples/bspwmrc ~/.config/bspwm/
chmod +x ~/.config/bspwm/bspwmrc
cd ..

3. Simple X Hotkey Daemon (sxhkd) のセットアップ

他のタイル型ウィンドウマネージャとは異なり、BSPWMはキーボード入力を直接処理しません。その代わりに、sxhkdという独立したデーモンを利用して、キーの入力をコマンドへとバインドします。

sxhkdのコンパイル

git clone https://github.com/baskerville/sxhkd.git
cd sxhkd
make
sudo make install

キーバインドの設定

設定ディレクトリを作成し、サンプルのホットキー定義を配置します:

mkdir -p ~/.config/sxhkd
cp ../bspwm/examples/sxhkdrc ~/.config/sxhkd/
cd ..

設定に関する注意: ~/.config/sxhkd/sxhkdrc を変更する場合は、定義されている端末エミュレータが正しいか確認してください。移行前に標準のGNOMEシェル環境内でテストを行う場合は、デフォルトの端末コマンドブロックを gnome-terminal を起動するように調整してください。


4. ステータス表示用Polybarのコンパイル

Polybarは、洗練されたカスタマイズ可能なステータスバーを生成する、高度にモジュール化されたツールです。

ビルド依存関係の取得

sudo apt install -y cmake cmake-data pkg-config python3-sphinx libcairo2-dev libxcb1-dev libxcb-util0-dev libxcb-randr0-dev libxcb-composite0-dev python3-xcbgen xcb-proto libxcb-image0-dev libxcb-ewmh-dev libxcb-icccm4-dev libxcb-xkb-dev libxcb-xrm-dev libxcb-cursor-dev libasound2-dev libpulse-dev libjsoncpp-dev libmpdclient-dev libcurl4-openssl-dev libnl-genl-3-dev

コンパイルとインストール

git clone --recursive https://github.com/polybar/polybar
cd polybar
mkdir build
cd build
cmake ..
make -j$(nproc)
sudo make install
cd ../..

5. 実験的バックエンドに対応したPicomのコンパイル

標準的なデスクトップ環境では、コンポジットシステムを使用してウィンドウを管理します。BSPWMでは、滑らかなDual-Kawaseぼかし、アクティブウィンドウの透過、そしてエレガントなウィンドウの角丸に対応した、Picomのカスタムフォーク版(ibhagwan氏メンテ版)を使用します。

依存関係の取得

sudo apt install -y meson libxext-dev libxcb1-dev libxcb-damage0-dev libxcb-xfixes0-dev libxcb-shape0-dev libxcb-render-util0-dev libxcb-render0-dev libxcb-randr0-dev libxcb-composite0-dev libxcb-image0-dev libxcb-present-dev libxcb-xinerama0-dev libpixman-1-dev libdbus-1-dev libconfig-dev libgl1-mesa-dev libpcre2-dev libevdev-dev uthash-dev libev-dev libx11-xcb-dev

Ninjaによるバイナリの生成

git clone https://github.com/ibhagwan/picom.git
cd picom
git submodule update --init --recursive
meson --buildtype=release . build
ninja -C build
sudo ninja -C build install
cd ..

6. コアデスクトップコンポーネント:Rofi & Alacritty

コアとなるウィンドウ管理アーキテクチャのインストールが完了したら、アプリケーションメニューとメインの端末環境を取得します:

sudo apt install -y rofi alacritty

カスタム設定のセットアップ

あらかじめ設定済みのdotfilesリポジトリをプルし、調整済みの設定ファイルを展開します:

git clone https://github.com/lukapiplica/nordic-bspwm-dotfiles
mkdir -p ~/.config/alacritty
cp nordic-bspwm-dotfiles/alacritty/alacritty.yml ~/.config/alacritty/

ハードウェアアクセラレーションに関するヒント: 古いグラフィックボードや仮想環境において GLSL 3.30 is not supported というエラーが発生した場合は、Alacrittyのデスクトップ設定ファイルを変更し、強制的にソフトウェアラスタライズを実行してください:

sudo nano /usr/share/applications/com.alacritty.Alacritty.desktop

Exec=alacritty の行を Exec=bash -c "LIBGL_ALWAYS_SOFTWARE=1 alacritty" に置き換えます。


インターフェースのブラッシュアップと環境の微調整

ここからは、Nordicワークスペースの美学を一体化させるために、ZSH、テーマ、フォント、壁紙、およびロック画面の設定を行います。

1. タイポグラフィとフォントキャッシュ

記号や端末のグリフが正しくレンダリングされるように、メインのコーディング用等幅フォントを導入します:

sudo cp -r ~/Downloads/nordic-bspwm-dotfiles/Source_Code_Pro /usr/share/fonts/
fc-cache -fv

2. Fehによる壁紙の設定

ログイン時にプログラムから壁紙の配置を制御するため、コマンドラインユーティリティである feh をインストールします:

sudo apt install feh -y
mkdir -p ~/Wall
cp -r ~/Downloads/nordic-bspwm-dotfiles/Wallpapers/ ~/Wall/

ウィンドウマネージャの初期化時に実行されるよう、バックグラウンド起動コマンドを bspwmrc に挿入します:

echo 'feh --bg-fill $HOME/Wall/Wallpapers/wallpaper2.jpeg &' >> ~/.config/bspwm/bspwmrc

3. カスタムPolybarテーマの有効化

カスタマイズ済みのPolybarセットアップを書き出し、ステータスバーのアイコンを表示するために必要なTrueTypeフォントをコピーします:

mkdir -p ~/.config/polybar
cp -r ~/Downloads/nordic-bspwm-dotfiles/polybar/* ~/.config/polybar/
echo '~/.config/polybar/./launch.sh &' >> ~/.config/bspwm/bspwmrc
sudo cp ~/.config/polybar/fonts/* /usr/share/fonts/truetype/
fc-cache -fv

4. インタラクティブシェルの最適化 (ZSH & Powerlevel10k)

デフォルトのシェル環境を標準のBashからZSHへと切り替え、Oh-My-ZSH フレームワークをダウンロードします:

sudo apt install zsh -y
sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Powerlevel10kプロンプトの適用

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-$HOME/.oh-my-zsh/custom}/themes/powerlevel10k

環境設定を変更します:

  1. 端末のプロファイルを開きます(nano ~/.zshrc)。
  2. アクティブなテーマの行を ZSH_THEME="powerlevel10k/powerlevel10k" に設定します。
  3. 保存して閉じます。source ~/.zshrc を実行するか、p10k configure と入力して、ビジュアルセットアップアシスタントのステップを進めます。

5. Vimでの開発:Nordicテーマの統合

NordicカラーマトリクスをVimに移植し、美しいステータスユーティリティである Vim-Airline をインストールします:

mkdir -p ~/.vim/colors
cp ~/Downloads/nordic-bspwm-dotfiles/nord.vim ~/.vim/colors/

Airline拡張機能をクローンします:

git clone https://github.com/vim-airline/vim-airline.git ~/Downloads/vim-airline
cp -r ~/Downloads/vim-airline/* ~/.vim/

エディタのプロファイル(設定ファイル)で設定ルールを有効化します:

echo 'colorscheme nord' >> ~/.vimrc
echo "let g:airline_theme='base16'" >> ~/.vimrc

6. Rofiアプリケーションメニューのカスタマイズ

Nordテーマファイルをコピーし、プライマリインターフェースとして設定します:

mkdir -p ~/.config/rofi/themes
cp ~/Downloads/nordic-bspwm-dotfiles/nord.rasi ~/.config/rofi/themes/
rofi-theme-selector

テーマの有効化: セレクター内で Nord theme に移動し、Enter を押してプレビューを確認したあと、Alt + a を入力してグローバルに適用します。

Rofiをデフォルトのアプリケーションランチャーとして紐付けるために、キーバインドを更新します:

nano ~/.config/sxhkd/sxhkdrc

アプリケーション起動用のキー組み合わせを dmenu_run から rofi -show drun に変更します。


ワークスペースの生産性とCLIユーティリティ

完全に機能する開発用ワークステーションを構築するために、カスタマイズしたワークスペースを彩るいくつかのコマンドラインプログラムやビジュアルユーティリティをインストールします。

高度なシステムモニターとビジュアライザを表示するNordicカスタマイズデスクトップ

カスタムCLIスイートのインストール

標準のパッケージリポジトリを使用して、最新のビジュアライザ、システムハードウェアモニター、およびファイルマネージャーをインストールします:

# システムモニター (Htop)
sudo apt install htop -y

# マトリックス・レイン画面エフェクト (Cmatrix)
sudo apt install cmatrix -y

# ミニマルな画像ビューア (Sxiv)
sudo apt install sxiv -y

# ターミナルベースのファイルナビゲーター (Ranger)
sudo apt install ranger -y

# デジタルターミナルクロック (Tty-clock)
sudo apt install tty-clock -y

高度なビジュアライザとシステム情報エンジン

CAVA (Console-based Audio Visualizer)

ALSAやPulseAudioの入力信号に基づいてリアルタイムでバー形式のビジュアライザを生成するために、CAVAをコンパイルします:

sudo add-apt-repository ppa:hsheth2/ppa -y
sudo apt update
sudo apt install cava -y

pfetch (ミニマルなシステム情報フェッチャー)

git clone https://github.com/dylanaraps/pfetch.git ~/Downloads/pfetch
sudo install ~/Downloads/pfetch/pfetch /usr/local/bin/

Chafa (ターミナルキャラクターアートエンジン)

Chafaは標準的な画像を解析し、ターミナル上でレンダリングされる高精細なキャラクターアート(アスキーアート/ブロックアート)に変換します:

git clone https://github.com/hpjansson/chafa.git ~/Downloads/chafa
cd ~/Downloads/chafa
./autogen.sh
make
sudo make install
cd ~

Snake (ターミナルで再現するクラシックゲーム)

python-pygameライブラリを使用して、あのクラシックなNokiaのヘビゲームを再現します:

sudo apt install python3-pip -y
python3 -m pip install -U pygame --user
git clone https://github.com/Unixado/Snake.git ~/Downloads/Snake

ターミナルセッションからゲームを直接実行します:

python3 ~/Downloads/Snake/src/game.py

カスタマイズされた環境内で実行されているターミナル用Snakeゲーム

Lollypop (モダンなデスクトップオーディオプレーヤー)

sudo add-apt-repository ppa:gnumdk/lollypop -y
sudo apt update
sudo apt install lollypop -y

GTKとFirefoxの意匠カスタマイズ

オペレーティングシステムのインターフェースに統一感を持たせるためには、アプリケーションとウェブブラウザの両方で同じカラーパレットを共有する必要があります。

1. Lxappearanceによるデスクトップインターフェースの統合

軽量なウィンドウマネージャー上でカスタムウィジェットのスタイル、アイコンパック、カーソルを読み込んで割り当てるために、LXAppearanceをインストールします:

sudo apt install lxappearance -y

lxappearance を開き、ダウンロードしたNordicデザインアセットを選択して適用します:

2. ミニマルなブラウザテーマ設定 (Firefox & Minimal Functional Fox)

標準のタイトルバーを削除し、ウェブ要素を中央に配置し、ブラウザの境界線をNordicのカラーパレットに一致させるために、カスタムのミニマルなuserChromeセットアップをダウンロードします:

sh -c "$(curl -fsSL https://raw.githubusercontent.com/mut-ex/minimal-functional-fox/master/install.sh)"
cp -r ~/Downloads/nordic-bspwm-dotfiles/.firefoxthemes ~/
  1. Firefox を起動します。
  2. 設定 > ホーム(Preferences > Home)に移動します。
  3. ホームページと新しいウィンドウ(Homepage and new windows)を見つけ、カスタム URL(Custom URLs)を選択し、ローカルのスタートページを指すターゲットパスを入力します: file:///home/<YOUR_USERNAME>/.firefoxthemes/startpage/Startpage/index.html
  4. アプリケーションを再起動して、レイアウトの変更を初期化します。

キーボードショートカットとデスクトップナビゲーション

タイル型ウィンドウマネージャーは、手をキーボードのホームポジションに置いたままにできるようにすることで、生産性を最適化します。Windows/Superキー(super)がプライマリ修飾キーとして設定されています。

以下は、デフォルトおよびカスタムのデスクトップホットキーの標準リファレンスリストです:

キーの組み合わせ対象となるイベント / アクション
super + EnterGPUアクセラレーションに対応したAlacrittyターミナルインスタンスを起動する
super + SpaceRofiアプリケーションメニューを開き、GUIツールを起動する
super + Escapesxhkdの補正ルールを即座に再読み込みする
super + Alt + rBSPWMウィンドウマネージャーを再起動する
super + wフォーカスされているアクティブなウィンドウを破棄/閉じる
super + [1-0]ワークスペース1から10の間を移動する
super + gフォーカスされているウィンドウをメインのマスターフレームと入れ替える
super + mフルスクリーンレイアウトの拡大/縮小を切り替える
super + [h,j,k,l]ウィンドウのフォーカスを方向ごとに移動する(左、下、上、右)
super + Alt + [h,j,k,l]フォーカスされているウィンドウの境界を外側に拡張する
super + Alt + Shift + [h,j,k,l]フォーカスされているウィンドウの境界を内側に縮小する
super + s選択したウィンドウのフローティングモードを切り替える
super + Ctrl + [矢印キー]フローティングウィンドウを座標間で移動する

結論と専門的な振り返り

モジュール化されたCLIユーティリティからデスクトップ環境を再構築することは、Linuxベースのシステムの柔軟性と奥深さを証明しています。洗練され、ミニマルなNordicデザインだけでなく、このBSPWMとPop!_OSのワークスペースは、大幅なパフォーマンスの利点をもたらします。CPUやメモリのオーバーヘッドの削減、ホットキーマッピングの絶対的な制御、そして高度なソフトウェア開発ワークフローに合わせて調整された非常にレスポンシブなワークスペースです。

開発者、システム管理者、あるいはLinux愛好家であるかを問わず、自分自身のキーボード駆動型ワークスペースを作り上げることは、日々の開発体験と業務効率向上への非常に価値ある投資となるでしょう。

ブログに戻る
シェア:

フォローする

最新記事、考察、アップデート情報をお見逃しなく。