fbtermの日本語表示.uim-fepとuim-anthyで日本語入力も.ついでに,vimの256色対応も
- lenovo-S21e
- Ubuntu16.04LTS
昨今のLinuxのディストリビューションは,デスクトップ環境がデフォルトでついてくるものが多い.
十分なスペックのPCであればヌルヌルと動いてくれるだろうが,貧弱なノートPCを使っているユーザーにとっては,
必要なときだけ立ち上がってくれれば十分だ.(人による)
基本は仮想コンソールで生活するのだ.
仮想コンソールとはctrl+alt+F1で移動できる正に文字だけの世界.
そのままだと日本語の表示すらできないが,ちょっと工夫してやれば画像だって表示できるのだ.
CUIで動作する素晴らしいアプリの数々に君はきっと魅了されるはずだ.
むしろ,GUIって使いにくいと思う場面が増えると思う.
そこで,普段では仮想コンソールを使用し,必要に応じてデスクトップ環境を立ち上げるようにすると,
- 省メモリ
- 省電力
- 高速化
が実現できる.
しかーし.
この仮想コンソール.デフォルトだとすんごく使いにくい.
1. 日本語が文字化けする
◆◆◆◆◆◆◆
- 日本語入力ができない
- vimの256色表示ができない
特に三つめが致命的である.
そこで,この3つを導入し,設定ファイルを書いてやれば,上のすべての問題が解決され,素晴らしい環境が整う.
- 日本語表示のため
- fbterm
- 日本語入力のため
- uim-fep
- uim-anthy
caps lockをctrlに
悪名高いcaps lockをctrlにしておこう.
キーボードによってはctrl-capslockの入れ替え,もしくはcapslock ctrl化が必要だろう.
キーボードの配列を変更するには次のファイルをいじる
/etc/default/keyboard
私の場合はこんな感じ.
# KEYBOARD CONFIGURATION FILE
# Consult the keyboard(5) manual page.
XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"
BACKSPACE="guess"
ここにも書いてある通りman keyboardを見ると設定方法が書かれている.
もし,日本語配列のキーボードを使っているならUS配列として認識させておこう.
ブラケットやカッコの入力とってもしやすくなる.
ついでにバックスラッシュはUS配列よりも打ちやすくなる.
実は日本語配列のキーボードはTeXユーザーにとって,とっても親切な設計なのだ.
仮想コンソール
仮想コンソールあるいはtty(teletypewriter)と呼ばれているものがある.
ctrl+alt+F1
でtty1に移動できる.
F2,F3だとtty2,tty3に移動できる.
F1-F6がttyでF7がttyS7であることが多いと思う.
そしてこのttyS7が通常のデスクトップ環境.
ちなみに,仮想コンソールに入っていれば,
ALT + 左右の矢印
で隣のttyに移動できる.
この仮想コンソールはX11を必要としない.
だからめちゃくちゃ軽い.速い.
ただし,コマンド操作しかできない.
さらには,
そのままだと日本語の表示すらできないが,ちょっと工夫してやれば画像だって表示できるのだ.
uim-fep & uim-anthy で日本語入力.
日本語入力を行うソフト達.
fbtermの起動時にこれをオプションとして渡すので,先に書いておいた.
uim自体はいれなくていいので.
sudo apt install uim-fep
sudo apt install uim-anthy
これを導入しよう.
日本語入力と直接入力の切り替え方法の設定
日本語と英語との入力切替をctrl-spaceに設定するには,
- ~/.uim
をいじれば良い.
デフォルトでは
- /usr/share/uim/generic-key-custom.scm
が読み込まれるらしい.
ctrl + space で切り替えを行うには次のように~/.uimに書けばよい.
(define default-im-name 'anthy)
(define-key generic-on-key? '("<Control> "))
(define-key generic-off-key? '("<Control> "))
ちなみに,この設定ファイルのコメントは
セミコロンで始まる行だ.
;;;
一つでいいのかどうかは確かめていない.
句読点をピリオドとコンマにしたい
そんな時は~/.uimにこう書けばよい.
(require "japanese.scm")
(define ja-rk-rule
(append '(
(((",") . ()) ("," "," ","))
(((".") . ()) ("." "." "."))
)
ja-rk-rule))
どうやらキーに直接割り当てているよう.
だから,普通の句読点が打てなくなってしまう.
fbtermの導入
fbtermとは,おそらくframe buffer terminalの略称であろう.
そもそもframe bufferとは何か.
/dev/fb0に関係する雑談
linuxでは各種デバイスに簡単にアクセスできる.
つまり,モニターやスピーカーはファイルと同じようにアクセスできる.
int fd=open("/dev/fb0",IO_RDWR);
こんな風に.
なんだったら
FILE* fd=fopen("/dev/fb0","rwb");
でもいける.違いはバッファがあるかないか.
echo test.txt >/dev/fb0
とかしてやれば,permissionがあれば画面上の一列になんか変なものが表示されるはず.
clear
で消せる.
つまり,fbtermはこれを使って画面を乗っ取り,その上で端末を動作させているのだ.
時々,カーネルが吐くメッセージが下の仮想端末に表示されて,乗っ取り返されるときがある.
こういうときはclearとか,画面全体を描画しなおす操作をすればOK.
そのうち記事を作って遊ぶと思うので,ここではここまで.
本筋に戻る
ではfbtermを導入しよう.
sudo apt install fbterm
後,画面が小さかったりフォントが気に食わないということがあるだろう.
そんなときは~/.fbtermを編集だ.
デフォルトで~/.fbtermが作成されるから,それを見ながら適宜いじればよいと思う.
個人的には
font-names=Ubuntu mono
font-size=20
color-foreground=7
color-background=0
cursor-shape=1
ambiguous-wide=yes
こう設定している.
Ubuntu monoっていいよね.
特に0が...
サ・レ・オ・ツ って感じ〜〜 キャピッ
ただし,これだけだと日本語の表示が可能になるだけで,入力ができない.
sudoでないと起動できないよ
そういえば,/dev/fb0って所有者がrootで所有グループがvideoだったりする.
だからfbtermはsudoでないと実行できない.
/dev/fb0の権限を変えたりしてもいいが,自分のユーザーアカウントをvideoグループに追加しよう.
usermod -aG video <user name>
-aオプションをつけないと,それ以外のグループから追い出されるので注意
fbtermの自動起動
上の設定だけだと普通にログインした後,
fbterm
もしくは
fbterm -- uim-fep
と打たないとfbtermに入れない.面倒なので色々設定して自動ではいれるようにしておこう.
自動起動には~/.profileもしくは~/.bashrcにでも
fbterm -- uim-fep
と書けばいいんだけれども,
実はこれだけだと上手く行かない.
256色対応にしてvimの華麗なカラースキームを味わおう
ここはちょっと情報を探すのに苦労した.
何もしないとmolokaiなどカラースキームの色がつかない.
ついたとしても何か違う.
fbterm自体フレームバッファを乗っ取ってるから色なんて自由自在のはず.
なんで....色がおかしいんや...
molokaiが無残な配色に成り下がってしまった.
tput colorsが8のまま変わらない...
しかし,こんなことでへこたれる
(`・ω・´)
ではない.
これは少しfbtermの自動起動とか変わってくるが.
設定ファイルにこのように書けば良い.
まずは~/.profileだ.
if [ "$TERM" = "linux" ]
then
#/e]XXYYYYYY
#XXは色識別子
echo -en "\e]P0222222" #black
echo -en "\e]P8222222" #darkgray
echo -en "\e]P1803232" #darkgray
echo -en "\e]P9982b2b" #red
echo -en "\e]P25b762f" #darkgreen
echo -en "\e]PA89b83f" #green
echo -en "\e]P3aa9943" #brown
echo -en "\e]PBefef60" #yellow
echo -en "\e]P4324c80" #darkblue
echo -en "\e]PC2b4f98" #blue
echo -en "\e]P5706c9a" #darkmagenta
echo -en "\e]PD826ab1" #magenta
echo -en "\e]P692b19e" #darkcyan
echo -en "\e]PEa1cdcd" #cyan
echo -en "\e]P7ffffff" #lightgray
echo -en "\e]PFdedede" #white
FBTERM=1 exec fbterm -- uim-fep
fi
お次は~/.bashrcだ.
case "$TERM" in
linux)
[ -n "$FBTERM" ] && export TERM=fbterm
;;
fbterm)
#何もしない
;;
*)
export TERM="xterm-256color"
esac
ちなみに仮想コンソールにログインした時に,
echo $TERM
と打つと,
linux
と表示されると思う.
つまりそういうこと.
fbtermを起動すると,$TERMをfbtermに設定しているのだ.
こうすることによってw3mのインライン画像を表示させることが可能になるのだ.
fbterm上でw3mの画像のインライン表示をさせる方法
ここで解説しているよ.