はじめに
こんにちは、野村です。
今回は、自作のウィンドウマネージャ「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にアップしてあります。ダウンロードして下さい。
・デレクトリ「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言語の勉強を続けねば。日々精進です。
というわけで、今回はこれにて。