自作ウィンドウマネージャ「nowm」で我が道をゆく

はじめに

こんにちは、野村です。

今回は、自作のウィンドウマネージャ「nowm」を紹介します。
C言語は入門者レベルです。でも必要と好奇心で作ってみました。

なぜこれを作ったのか

2017年7月までシングルコアCPUのPCにUbuntuを入れて使っていました。
なので当時、スペックに合致した軽量なウィンドウマネージャを探していたのですよ。

そこで目をつけたのが、tinywmです。

軽量の極み。50行あまりのC言語で書かれたウィンドウマネージャ。
これを数日使ってみて、ひとつ気になる点があったのです。

それは「ウィンドウの移動や、大きさを変えるためにマウスを使わなくてはいけない」ということ。
ここまでシンプルな環境を実現したのなら、マウスレスにして欲しかった。

ウィンドウというものは、いったん配置を決めてしまえば変更の必要はほぼないはず。
一時的に広くしたいときは、全画面に切り替えれば済むこと。

ならば、あらかじめ使用するウィンドウの配置パターンを決めておき、ホットキーで切り替えるようにすればいいのではないか?

というわけで、いっそのこと自分でウィンドウマネージャを作ってみようと思い立ったのですよ。

特徴

・ウィンドウの移動や大きさの変更はできません。
・その代わり、ホットキーを用いてウィンドウの配置を切り替えることができます。
・ウィンドウにタイトルバーはありません。必要ないからです。
・Ubuntu16.4とDebian9.1で動作を確認しています。
・C言語の入門者が作成しました。ソースコードについてのツッコミは喜んで受け入れます。

インストール

・ビルドする環境が必須です。gccやmakeなどの導入方法は割愛します。
・ビルドにはxorg-devというパッケージが必要です。debian系の場合、管理ユーザになって、コマンド「apt install xorg-dev」でインストールして下さい。
・ソースコードは、githubにアップしてあります。ダウンロードして下さい。

俺的なデスクトップを作るプロジェクト. Contribute to no-project development by creating an account on GitHub.
・ダウンロードした中には、「nopanel」と「nowm」という2つのデレクトリがあるはずです。このうち使用するのは「nowm」だけです。「nopanel」については、興味がなければデレクトリごと捨てて下さい。
・デレクトリ「nowm」の中に入り、makeをして下さい。
・makeして生成されたファイル「nowm」をパスの通ったデレクトリに移動して下さい。

インストールは以上です。

起動と終了

起動

~/.xinitrcを以下のように書き換えてstartxしてください。

nowm &  
xterm

・必ず.xinitrcからターミナルエミュレータを起動させて下さい。
・必ずnowmの後にターミナルエミュレータが起動するようにして下さい。

終了

ターミナルエミュレータからxinitをkillallして下さい。

$ killall xinit

ホットキー

「Mod4」というのはウィンドウキーのことです。

Alt+Tab アクティブなウィンドウを切り替える
Shift+Mod4+c ウィンドウを閉じる
Shift+Mod4+f ウィンドウを全画面に配置
Shift+Mod4+j ウィンドウを画面の左半分に配置
Shift+Mod4+h ウィンドウを画面の右半分に配置
Shift+Mod4+u ウィンドウを画面の左上に配置
Shift+Mod4+i ウィンドウを画面の右上に配置
Shift+Mod4+o ウィンドウを画面の左下に配置
Shift+Mod4+p ウィンドウを画面の右下に配置
Mod4+h ウィンドウを再背面へ
Mod4+u 左上のウィンドウをアクティブにする
Mod4+i 右上のウィンドウをアクティブにする
Mod4+o 左下のウィンドウをアクティブにする
Mod4+p 右下のウィンドウをアクティブにする

最後に

Linuxって、アプリケーションのソースコードが基本的に公開されてますよね。
今回、たまたま「tinywm」のソースコード見たことで、「自分にも作れそうだな」と思って実行に移したわけです。

Linuxを使ってなければ「作ろう」っていう発想はなかったな。

それはそれとして、いつまでも素人丸出しのソースコードを公開しているわけにもいかない。
C言語の勉強を続けねば。日々精進です。

というわけで、今回はこれにて。