Help us understand the problem. What is going on with this article?

Debian noroot 環境に ratpoison を導入する

More than 1 year has passed since last update.

はじめに

Debian noroot とは、 Android OS 上において root 権限を取ることなく Debian 環境を構築するためのアプリケーションです。
CPU の性能とメモリ容量が潤沢にある Android OS 端末であれば、 Debian noroot の導入によって Android OS 端末上で非常に軽快な Debian 環境を実現することが出来ます。

ここで、 Debian noroot 環境を 5 インチから 6 インチ未満程度の小画面の Android OS 搭載のスマートフォン端末上で動作させると、 Debian noroot 環境で動作するソフトウェアの視覚的なインターフェースについて視認性が悪くなる問題があります。

また、小画面の Android OS 端末上における Debian noroot 環境上で動作するソフトウェアでは、ソフトウェアキーボード及び画面のタッチパネルを用いたソフトウェアの操作が著しく困難である問題も発生します。

そこで、 Debian noroot 環境に、軽量なタイル型ウィンドウマネージャである ratpoison を導入することにより、小画面の Android OS 端末においても、 Debian noroot 環境のソフトウェアを全画面で起動することで視覚的なインターフェイスの視認性を高めることが可能となりました。

そして、 ratpoisonGNU screen 及び tmux 等の端末多重化ソフトウェアに影響を受けた物理キーボードによるユーザインターフェイスを持っているため、 ratpoison の導入によって、 Debian noroot 環境において、物理キーボードに基づく軽快で快適な操作性を実現することが可能となりました。

本稿では、 Debian noroot 環境における ratpoison を導入手法について述べます。

まず最初に、 "ratpoison の導入" の章において、 Debian noroot 環境に軽量なタイル型ウィンドウマネージャである ratpoison 等のインストール手法について述べます。

次に、 "ratpoison の設定" の章において、 ratpoison を使用する為に必要となる ratpoison のキーバインド等の設定及び ratpoison を起動する為の設定の手法について述べます。

そして、 "ratpoison の起動" の章において、 Debian noroot 環境における ratpoison の起動手法について述べます。

最後に、 "結論" の章において、本稿の結論について述べます。

なお、本稿においては、予め "Debian noroot 環境で日本語環境を導入する" の投稿に基づいて、 Debian noroot 環境に日本語環境を導入した状態から ratpoison を導入するものとします。

また、 "$HOME/.ratpoisonrc の作成" の節において後述する設定のキーバインドに関して特に説明するものを除き、デフォルトの ratpoison のキーバインド等の詳細については割愛致します。

ratpoison のデフォルトのキーバインド及び使用法の詳細については、下記の web ページ等を参照して下さい。

ratpoison の導入

本章では、 Debian noroot 環境に ratpoison 等をインストールする手法について述べます。

軽量のタイル型ウィンドウマネージャ ratpoison は、コマンドライン上から apt-get コマンドを用いて、以下のようにして導入することが出来ます。

  $ sudo apt-get install ratpoison

なお、追加のソフトウェアとして、コピーアンドペーストの管理を容易に行う為に、クリップボード管理を行うソフトウェアである clipit も同時にインストールする事を御勧め致します。

  $ sudo apt-get install clipit

ratpoison の設定

本章では、 ratpoison を使用する為に必要となる ratpoison のキーバインド及び、 ratpoison の起動直後に実行するコマンド等の設定及び Debian noroot 環境において ratpoison を起動する為の設定の手法について述べます。

まず最初に、 "$HOME/.ratpoisonrc の作成" の節において、 ratpoison のキーバインド等を指定する為の設定ファイルである $HOME/.ratpoisonrc の作成手法について述べます。

次に、 "$HOME/.ratpoisonrc の概要" の節において、前節で作成した $HOME/.ratpoisonrc において行った設定の概要について述べます。

最後に、 "/startx.sh の修正" の節において、前々節及び前節の設定が完了した後、 Debian noroot 環境において ratpoison を起動するための設定手法について述べます。

$HOME/.ratpoisonrc の作成

まず、 ratpoison のキーバインド及び ratpoison の起動直後に実行するコマンド等を指定する為の設定ファイルである .ratpoisonrc をユーザのホームディレクトリ上に下記の内容で作成します。

なお、 $HOME/. ratpoisonrc における設定の詳細については、後節にて後述します。

$HOME/.ratpoisonrc
# $HOME/.ratpoison -- ratpoison の設定ファイルの一例。

# Debian noroot 環境関連の環境変数の設定。
# 日本語環境に関する変数等の設定を行う。

setenv TZ Asia/Tokyo
setenv LANG ja_JP.UTF-8
setenv LC_ALL ja_JP.UTF-8
setenv LANGUAGE ja
setenv XMODIFIERS @im=fcitx
setenv GTK_IM_MODULE fcitx
setenv QT_IM_MODULE fcitx
setenv QT4_IM_MODULE fcitx
setenv CLUTTER_IM_MODULE fcitx
setenv VTE_CJK_WIDTH 1

# ratpoison の起動直後に起動するソフトウェアを指定。
# xmodmap によるキーバインドと fcitx の起動及び端末エミュレータ mlterm 等の起動。

exec /usr/bin/xmodmap /xmodmap
exec fcitx
exec clipit
exec mlterm -w 26 --bg black --fg green --im=fcitx --pic=/home/user/Pictures/wall-papers/dolphin.jpg --ac 2 -e /bin/bash -l

# ratpoison のフォントの指定。

set font "Ume Gothic-8"
set border 0
set padding 2 2 2 2

## ratpoison のメッセージウィンドウに関する設定。

set barborder 1
set bargravity southwest
set barpadding 2 2 2 2
set inputwidth 500

set winname title
set winfmt [%n]: %30t%s 
set wingravity southwest
set winliststyle column

# プレフィックスキーを ctrl-t に設定。

escape C-t

# 追加のキーバインドの設定。
# ctrl-t - で画面の水平分割。 ctrl-t | で画面の垂直分割。
# ctrl-t ctrl-[0-9] で指定された番号の画面に切り替え。

bind bar hsplit
bind minus split

bind C-0 select 0
bind C-1 select 1
bind C-2 select 2
bind C-3 select 3
bind C-4 select 4
bind C-5 select 5
bind C-6 select 6
bind C-7 select 7
bind C-8 select 8
bind C-9 select 9

# alt-x を直接入力して、 ratpoison のコマンド入力。
# ctrl-alt-x を直接入力して、シェルスクリプトのコマンド入力。

definekey top M-x colon
definekey top C-M-x exec

unbind s
unbind C-s
unbind S
unbind C-S

# マウス関連の設定。
# alt-矢印キー等でマウスカーソルの移動等。
# alt-return で左マウスボタンのクリック等。

ratwarp 0 0

# alt-矢印キーでマウスカーソルを上下左右に 10 ピクセル分移動。

definekey top M-Up ratrelwarp 0 -10
definekey top M-Down ratrelwarp 0 10
definekey top M-Left ratrelwarp -10 0
definekey top M-Right ratrelwarp 10 0

# shift-alt-矢印キーでマウスカーソルを 50 ピクセル分移動。

definekey top S-M-Up ratrelwarp 0 -50
definekey top S-M-Down ratrelwarp 0 50
definekey top S-M-Left ratrelwarp -50 0
definekey top S-M-Right ratrelwarp 50 0

# ctrl-alt-矢印キーでマウスカーソルを 100 ピクセル分移動。

definekey top C-M-Up ratrelwarp 0 -100
definekey top C-M-Down ratrelwarp 0 100
definekey top C-M-Left ratrelwarp -100 0
definekey top C-M-Right ratrelwarp 100 0

# alt-1, alt-2, alt-3 で左・中央・右のマウスボタンをそれぞれクリック。

definekey top M-1 exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "ratclick 1"
definekey top M-2 exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "ratclick 2"
definekey top M-3 exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "ratclick 3"

# alt-, (or alt-Return), alt-/, alt-. で左・中央・右のマウスボタンをそれぞれクリック。

definekey top M-comma exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "ratclick 1"
definekey top M-Return exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "ratclick 1"
definekey top M-slash exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "ratclick 2"
definekey top M-period exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "ratclick 3"

# shift-alt-, (or shift-alt-Return), shift-alt-/, ashift-alt-. で左・中央・右のマウスボタンをドラッグ。

definekey top S-M-comma exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "rathold down 1"
definekey top S-M-Return exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "rathold down 1"
definekey top S-M-slash exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "rathold down 2"
definekey top S-M-period exec ratpoison -c "rathold up 1" -c "rathold up 2" -c "rathold up 3" -c "rathold down 3"

# 各種アプリケーション起動用キーマップの定義。
# キーマップ appskey に各種アプリケーションを起動する為のキーバインドを定義。
# ctrl-x にキーマップ appskey のプレフィックスを割り当て。

newkmap appskey
definekey top C-x readkey appskey

# ctrl-x c (or ctrl-c) で sakura が起動。
# ctrl-x m (or ctrl-m) で mlterm が起動。
# ctrl-x f (or ctrl-f) で Firefox が起動。
# ctrl-x l (or ctrl-l) で LibreOffice が起動。
# ctrl-x g (or ctrl-g) で geany が起動。
# ctrl-x s (or ctrl-s) で Sylpheed が起動。

definekey appskey c exec sakura
definekey appskey m exec mlterm -w 26 --bg black --fg green --im=fcitx --pic=/home/u0_a135/Pictures/wall-papers/dolphin.jpg --ac 2 -e /bin/bash -l
definekey appskey f exec firefox
definekey appskey l exec libreoffice
definekey appskey g exec geany
definekey appskey s exec sylpheed

definekey appskey C-c exec sakura
definekey appskey C-m exec mlterm -w 26 --bg black --fg green --im=fcitx --pic=/home/u0_a135/Pictures/wall-papers/dolphin.jpg --ac 2 -e /bin/bash -l
definekey appskey C-f exec firefox
definekey appskey C-l exec libreoffice
definekey appskey C-g exec geany
definekey appskey C-s exec sylpheed

# ctrl-x 自体を入力するには ctrl-x を2回連続して入力する。

definekey appskey C-x meta C-x

# ヘルプ表示用キーマップの定義。
# キーマップ helpkey に各キーマップのヘルプを表示する為の
# キーバインドを定義。
# ctrl-? (or ctrl-/) にキーマップ helpkey のプレフィックスを
# 割り当て。

newkmap helpkey
definekey top C-question readkey helpkey
definekey top C-slash readkey helpkey

# ctrl-? r (or ctrl-r) で通常のプレフィックスに続くキーバインドのヘルプ表示。
# ctrl-? t (or ctrl-t) で直接キー押し下げによるキーバインドのヘルプ表示。
# ctrl-? a (or ctrl-a) で各種アプリケーション起動用キーバインドのヘルプ表示。
# ctrl-? h (or ctrl-h) でヘルプ表示用のキーバインドのヘルプ表示。

definekey helpkey r help root
definekey helpkey t help top
definekey helpkey a help appskey
definekey helpkey h help helpkey
definekey helpkey question help helpkey

definekey helpkey C-r help root
definekey helpkey C-t help top
definekey helpkey C-a help appskey
definekey helpkey C-h help helpkey
definekey kelpkey C-slash help helpkey
definekey helpkey C-question help helpkey

$HOME/.ratpoisonrc の概要

本節では、前節で作成した $HOME/.ratpoisonrc において行った設定の概要について述べます。

なお、 前節で作成した $HOME/.ratpoisonrcratpoison における設定の一例ですので、キーバインド等の設定は、 ratpoison の公式 web ページ内の ratpoison のマニュアルページ等を参照して適宜変更することを御勧めします。 (但し、キーバインドの設定は、 Android OS 端末及び Debian noroot 環境における他のアプリケーションのキーバインドと衝突しないように注意する必要があります。)

環境変数の設定

設定ファイル .ratpoisonrc において、 setenv <varname> <value> コマンドによって、 ratpoison の起動時に環境変数を設定できます。

上記の $HOME/.ratpoisonrc では、環境変数 TZ, LANG, LC_ALL, LANGUAGE, XMODIFIERS 等の、主に Debian noroot 環境における日本語環境に関する環境変数を中心に設定しています。

ratpoison 起動時に実行するプロセスの設定

設定ファイル .ratpoisonrc において、 exec <command> [<arg1> [<arg2> ...]] コマンドによって、 ratpoison の起動時に実行するプログラムを指定出来ます。

上記の $HOME/.ratposonrc では、 X server でのキーバインドの設定を行うための xmodmap や日本語入力メソッドに関するプログラムである fcitx 及び前章で述べたクリップボード管理を行うソフトウェアである clipit と端末エミュレータ mlterm を起動しています。

フォントの設定

設定ファイル .ratpoisonrc において、変数 font にフォント名を設定することにより、 ratpoison において使用するフォントを指定することが出来ます。

即ち、 set font <fontname> コマンドによって、フォント指定を行うことが出来ます。

なお、上記の $HOME/.ratpoisonrc のように font に日本語フォントを指定することで、 ratpoison のメッセージウィンドウに日本語を表示させることが出来ます。

追加のキーバインドの設定

設定ファイル .ratpoisonrc において、 escape <key> コマンドによって、 <key>ratpoison で使用するプレフィックスキーを割り当てることが出来ます。

また、 bind <key> <command> [<arg1> [<arg2> ...]] コマンドで、プレフィックスキーに続いて押し下げられるキー <key> に対応して実行されるコマンド <command> [<arg1> [<arg2> ...]] を指定出来ます。

上記の $HOME/.ratpoisonrc では、プレフィックスキーはデフォルトと同じく ctrl-t を指定しています。また、 ctrl-t - 及び ctrl-t | のキーを押し下げることによって、画面の水平及び垂直方向の分割を行います。

そして、 ctrl-t 0 (or 1 ... 9) を押し下げることによって、指定された番号の画面に移動します。

設定ファイル .ratpoisonrc において、 definekey top <key> <command> [<arg1> [<arg2> ...]] コマンドによって、 ratpoison でのプレフィックスキーを押し下げること無しに直接押し下げられるキー <key> に対応して実行されるコマンド <command> [<arg1> [<arg2> ...]] を指定出来ます。

上記の $HOME/.ratpoisonrc では、 alt-x を直接押し下げることによって、メッセージウィンドウに ratpoison のコマンド入力プロンプトを表示させ、 ctrl-alt-x を直接押し下げることによって、シェルスクリプトを実行するための入力プロンプトを表示させます。

矢印キーによるマウスカーソルの移動の設定

設定ファイル .ratpoisonrc において、 ratrelwarp <xdelta> <ydelta> コマンドによって、画面のマウスカーソルの位置を相対的に水平方向に <xdelta> ピクセル数分、垂直方向に <ydelta> ピクセル数分それぞれ移動させることが出来ます。

上記の $HOME/.ratpoisonrc では、 alt-矢印キー を直接押し下げることによって、マウスカーソルが上下左右に 10 ピクセル数分移動します。

また、 shift-alt-矢印キー を直接押し下げることによって、マウスカーソルが 50 ピクセル数分移動し、 ctrl-alt-矢印キー を直接押し下げることによって、マウスカーソルが 100 ピクセル数分移動します。

設定ファイル .ratpoisonrc において、 ratclick 1, ratclick 2 及び ratclick 3 コマンドによって、左、中央及び右のマウスボタンのクリック動作を行うことが出来ます。

上記の $HOME/.ratpoisonrc では、 alt-, 若しくは alt-return でマウスボタンを左クリックの、 alt-. でマウスボタンを右クリックの、 alt-/ でマウスボタンを中央クリックの動作をそれぞれ行います。

また、 rathold down 1, rathold down 2 及び rathold down 3 コマンドによって、左、中央及び右のマウスボタンをドラッグする動作を行うことが出来ます。

そして、 rathold up 1, rathold up 2 及び rathold up 3 コマンドによって、左、中央及び右のマウスボタンをドラッグした状態から離す動作を行うことが出来ます。

上記の $HOME/.ratpoisonrc では、 shift-alt-, 若しくは shift-alt-return でマウスボタンを左ドラッグの、 shift-alt-. でマウスボタンを右ドラッグの、 shift-alt-/ でマウスボタンを中央ドラッグの動作をそれぞれ行うことが出来ます。

なお、 $HOME/.ratpoisonrcbind <key> <command> [<arg1> [<arg2> ...]] コマンド及び definekey top <key> <command> [<arg1> [<arg2> ...]] コマンド等において、 ratpoison のコマンドを複数個連続して実行するように指定する場合は、 exec ratpoison -c "<command1> ..." -c "<command2> ..." ... のように、シェルスクリプトから ratpoison コマンドを -c オプションを複数個指定して実行させる必要がある事に注意して下さい。

以上で述べた ratpoison のマウスに関する設定によって、キーボード操作に基づくマウスカーソル移動ソフトウェアである keynav とほぼ同等の機能を持ったマウス操作の設定を行うことが出来ます。

各種アプリケーション起動用のキーバインドの設定

設定ファイル .ratpoisonrc では、 newkmap <keymap> コマンドによって新たなユーザ定義用のキーマップを生成することが出来ます。

また、 definekey <keymap> <key> <command> [<arg1> [<arg2> ...]] コマンドによって、ユーザ定義キーマップ <keymap> について、キー <key> に対応して実行されるコマンド <command> [<arg1> [<arg2> ...]] を指定出来ます。

そして、 readkey <keymap> コマンドによって、ユーザ定義キーマップが ratpoison に取り込まれ、次に押されたキーによって、キーマップ <keymap> に対応を定義づけられたコマンドの実行を行うことが出来ます。

従って、 definekey top <userprefixkey> readkey <keymap> コマンドによって、ユーザ定義キーマップ <keymap> に対応するユーザ定義のプレフィックスキー <userprefixkey> を指定することが出来ます。

上記の $HOME/.ratpoisonrc では、 ctrl-x c (or ctrl-c) を押し下げることによって、端末エミュレータ sakura が起動し、 ctrl-x m (or ctrl-m) を押し下げることによって、端末エミュレータ mlterm が起動し、 ctrl-x f (or ctrl-f) を押し下げることによって、ウェブブラウザ Firefox が起動するなど、ユーザ定義プレフィックスキー ctrl-x に続いてキーマップ appskey に定義したキーを押し下げることによって、各種アプリケーションを実行することが出来ます。

/startx.sh の修正

前々節及び前節の通りに、 ratpoison の設定ファイルである $HOME/. ratpoisonrc を作成した後は、以下のように、Debian noroot 環境の起動スクリプトである /startx.sh において、 xfce-session コマンドを起動している行を ratpoison コマンドを起動するように書き換えます。

なお、 /startx.sh の修正に際しては、予め "Debian noroot 環境 に障害復旧用の環境を導入する" を参照の上で、障害復旧用の環境を構築する事を強く御勧め致します。

/startx.sh
...()...

sleep 1
#dbus-launch --exit-with-session sh -c 'xfce4-session ; setsid sh -c "cd /proc/ ; for f in [0-9]* ; do [ \$f = \$\$ ] || kill -9 \$f ; done"' &
dbus-launch --exit-with-session sh -c 'ratpoison ; setsid sh -c "cd /proc/ ; for f in [0-9]* ; do [ \$f = \$\$ ] || kill -9 \$f ; done"' & wait

...()...

ratpoison の起動

そして、前章の通りに $HOME/.ratpisonrc の作成及び /startx.sh の変更を行った後に Debian noroot 環境を再起動すると、下記に示す画像のように、 ratpoison の起動と共に、端末エミュレータである mlterm が全画面で起動し、 ratpoison が使用出来るようになります。

(start of ratpoison)

また、上記の画面から ctrl-t のプレフィックスキーの後に ? キーを押すと、下記に示す画像のようなヘルプ画面が表示されます。

(help of ratpoison)

そして、 ctrl-alt-p キーの押し下げを行うと、以下の画像のように、クリップボード管理を行うソフトウェアである clipit のメニューが表示されます。

(menu of ClipIt)

結論

本稿では、 "ratpoison の導入" の章において、まず最初に、 Debian noroot 環境において、 Debian パッケージ管理システムより軽量なタイル型ウィンドウマネージャである ratpoison 及びクリップボード管理を行うソフトウェアである clipit 等を導入しました。

次に、前々章において、 ratpoison のキーバインド等の設定ファイルである $HOME/.ratpoisonrc を作成し、 Debian noroot 環境の起動スクリプトの一つである /startx.sh の修正を行いました。

そして、前章において Debian noroot 環境を再起動することにより、デフォルトの統合デスクトップ環境の Xfce4 に代えて Debian noroot 環境の起動時に ratpoison を起動させることが可能となりました。

また、 ratpoison の設定ファイルである $HOME/.ratpoisonrc において、マウスカーソルの移動及びクリック操作に関するキーバインドと各種アプリケーションを起動するためのキーバインドの設定を行うことで、 Debian noroot 環境におけるデスクトップ環境の操作を物理キーボードのみで完結させることが可能となりました。

以上で述べた、 Debian noroot 環境におけるタイル型ウィンドウマネージャ ratpoison の導入によって、小型の Android OS 端末において、 Debian noroot 環境での視覚的なインターフェイスの視認性を高め、物理キーボードに基づいた軽快で快適な操作性を実現することが可能となりました。

謝辞

本稿の記述に当たって、 Android OS 端末上で非常に軽快な Debian 環境を実現することを可能にした Debian noroot 環境の開発者である pelya 氏に心より感謝致します。

まず最初に、タイル型ウィンドウマネージャである ratpoison の開発者である Shawn Betts 氏に心より感謝致します。

また、 ratpoison の設定に関しては、 ArchLinux の開発コミュニティによる wiki における ratpoison の記事を参考にしました。 ArchLinux の開発コミュニティの各氏に心より感謝致します。

最後に、 Debian noroot 環境Android OS 及び Debian 環境の全ての事に関わる全ての皆様に心より感謝致します。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away