fbtermの日本語表示．uim-fepとuim-anthyで日本語入力も．ついでに，vimの256色化も

fbtermの日本語表示．uim-fepとuim-anthyで日本語入力も．ついでに，vimの256色対応も
===================================
てんこ盛り過ぎたのでuim-fepとuim-anthyの使い方と設定方法に関する記事を別にしました．

[uim-fepとuim-anthyの使い方と設定方法](https://qiita.com/Pseudonym/items/9ff0e9028dfd6bad5958)

環境
===============

- Ubuntu16.04LTS
- lenovo-S21e


目的
===========
昨今のLinuxのディストリビューションは，デスクトップ環境がデフォルトでついてくるものが多い．

十分なスペックのPCであればヌルヌルと動いてくれるだろうが，貧弱なノートPCを使っているユーザーにとっては，
必要なときだけ立ち上がってくれれば十分だ．（人による）

基本は仮想コンソールで生活するのだ．
仮想コンソールとはctrl+alt+F1で移動できる正に文字だけの世界．
そのままだと日本語の表示すらできないが，ちょっと工夫してやれば画像だって表示できるのだ．

CUIで動作する素晴らしいアプリの数々に君はきっと魅了されるはずだ．
むしろ，GUIって使いにくいと思う場面が増えると思う．


そこで，普段では仮想コンソールを使用し，必要に応じてデスクトップ環境を立ち上げるようにすると，
- 省メモリ
- 省電力
- 高速化
が実現できる．

しか〜し．

この仮想コンソール．デフォルトだとすんごく使いにくい．
1. 日本語が文字化けする

```
◆◆◆◆◆◆◆
```

1. 日本語入力ができない
1. vimの256色表示ができない
	- fbterm導入時

特に三つめが致命的である．

そこで，この３つを導入し，設定ファイルを書いてやれば，上のすべての問題が解決され，素晴らしい環境が整う．

あと，uim関連の設定とか操作方法に関する記事が意外と少ないんで，書いておきます．

- 日本語表示のため
	- fbterm
- 日本語入力のため
	- uim-fep
	- uim-anthy


と，その前に
=====================
本格的にCUIに移行する人は，GUIで起動しないように設定しておこう．

通常grubを設定すればGUIの起動を止められるはずなんだけど，
ubuntuの場合別の方法を取る必要がある．
（調べたら色々あるみたい．とりあえず自分の設定を書いておく）

念のためGRUBを設定しておく．

```bash
vim /etc/default/grub.conf
```

そして，

```grub
GRUB_CMDLINE_LINUX_DEFAUT="text"
```

に書き換えておく．

(´・ω・｀)の場合これ以外だと逆に起動しないので，
そしてGRUBのアップデート

```bash
sudo update-grub
sudo update-grub2
```

次のコマンドでCUIで起動する設定になる．

```bash
sudo systemctl set-default multi-user.target
```
	
別の方法としては，`/etc/default/grub.conf`を

```grub
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unit=multi-user.target quiet nosplash"
```
または

```grub
GRUB_CMDLINE_LINUX_DEFAULT="systemd.unit=multi-user.target nosplash"
```

としてもいけるらしい．

ちょっとGUI使いたいというとき．

```bash
sudo systemctl start lightdm
```

CUIなんてもう嫌だ，GUI起動に戻したいという時．

```bash
sudo systemctl set-default graphical.target
```



caps lockをctrlに
==========================
悪名高いcaps lockをctrlにしておこう．
キーボードによってはctrl-capslockの入れ替え，もしくはcapslock ctrl化が必要だろう．

キーボードの配列を変更するには次のファイルをいじる

- /etc/default/keyboard

私の場合はこんな感じ．


```keyboard:/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）と呼ばれているものがある．

```bash
ctrl+alt+F1
```

でtty1に移動できる．

F2,F3だとtty2，tty3に移動できる．

F1-F6がttyでF7がttyS7であることが多いと思う．

そしてこのttyS7が通常のデスクトップ環境．

ちなみに，仮想コンソールに入っていれば，

```
ALT + 左右の矢印
```

で隣のttyに移動できる．

この仮想コンソールはX11を必要としない．
だからめちゃくちゃ軽い．速い．
ただし，コマンド操作しかできない．
さらには，
そのままだと日本語の表示すらできないが，ちょっと工夫してやれば画像だって表示できるのだ．

uim-fep & uim-anthyの導入
===========================
日本語入力を行うソフト達．
（fbtermの起動時にこれをオプションとして渡すので，先に．．．）

設定方法や使い方を書いてあるサイトがあんまりなかったので，ちょっとだけ詳しく書いておくよ．

uim自体はいれなくていいので．

```bash
sudo apt install uim-fep
sudo apt install uim-anthy
```

これを導入しよう．

uim-fep & uim-anthyの使い方と設定方法
------------------------

別記事に分けました．
[uim-fepとuim-anthyの使い方と設定方法](https://qiita.com/Pseudonym/items/9ff0e9028dfd6bad5958)



fbtermの導入
====================

fbtermとは，おそらくframe buffer terminalの略称であろう．

そもそもframe bufferとは何か．


/dev/fb0に関係する雑談
--------------
linuxでは各種デバイスに簡単にアクセスできる．
つまり，モニターやスピーカーはファイルと同じようにアクセスできる．

```c
int fd=open("/dev/fb0",IO_RDWR);
```
こんな風に．

なんだったら

```c
FILE* fd=fopen("/dev/fb0","rwb");
```

でもいける．違いはバッファがあるかないか．

```bash
echo test.txt >/dev/fb0
```

とかしてやれば，permissionがあれば画面上の一列になんか変なものが表示されるはず．

```bash
clear
```

で消せる．

つまり，fbtermはこれを使って画面を乗っ取り，その上で端末を動作させているのだ．

時々，カーネルが吐くメッセージが下の仮想端末に表示されて，乗っ取り返されるときがある．
こういうときはclearとか，画面全体を描画しなおす操作をすればOK．


そのうち記事を作って遊ぶと思うので，ここではここまで．


本筋に戻る
----------------------------

ではfbtermを導入しよう．

```bash
sudo apt install fbterm
```

後，画面が小さかったりフォントが気に食わないということがあるだろう．

そんなときは~/.fbtermを編集だ．

デフォルトで~/.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グループに追加しよう．

```bash
usermod -aG video <user name>
```

-aオプションをつけないと，それ以外のグループから追い出されるので注意

fbtermの自動起動
--------------------------
上の設定だけだと普通にログインした後，

```bash
fbterm
```

もしくは

```bash
fbterm -- uim-fep
```

と打たないとfbtermに入れない．面倒なので色々設定して自動ではいれるようにしておこう．

自動起動には~/.profileもしくは~/.bashrcにでも

```bash:~/.profile or ~/.bashrc
fbterm -- uim-fep
```

と書けばいいんだけれども，
実はこれだけだと上手く行かない．


256色対応にしてvimの華麗なカラースキームを味わおう
--------------------

ここはちょっと情報を探すのに苦労した．

何もしないとmolokaiなどカラースキームの色がつかない．
ついたとしても何か違う．

fbterm自体フレームバッファを乗っ取ってるから色なんて自由自在のはず．

なんで....色がおかしいんや...
molokaiが無残な配色に成り下がってしまった．

tput colorsが8のまま変わらない...

しかし，こんなことでへこたれる
(｀・ω・´)
ではない．


これは少しfbtermの自動起動とか変わってくるが．
設定ファイルにこのように書けば良い．

まずは~/.profileだ．

```bash:~/.profile
if [ "$TERM" = "linux" ]
then
	#/e]XXYYYYYY
	#XXは色識別子
	echo -en "\e]P0222222" #black
	echo -en "\e]P8222222" #darkgray
	echo -en "\e]P1803232" #darkred
	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だ．


```bash:~/.bashrc
case "$TERM" in
	linux)
		[ -n "$FBTERM" ] && export TERM=fbterm
		;;
	fbterm)
		#何もしない
		;;
	*)
		export TERM="xterm-256color"
esac
```

ちなみに仮想コンソールにログインした時に，

```bash
echo $TERM
```

と打つと，

```bash
linux
```

と表示されると思う．
つまりそういうこと．

fbtermを起動すると，$TERMをfbtermに設定しているのだ．

こうすることによってw3mのインライン画像を表示させることが可能になるのだ．

fbterm上でw3mの画像のインライン表示をさせる方法
----------------------
ここで解説しているよ．

[fbterm上でw3mのインライン画像表示を有効にする．ついでにrangerのサムネイルも](https://qiita.com/Pseudonym/items/310bc76fdbdeca76b903)


[参考文献]
=============================
- [zellio/fbterm-hacks.md](https://gist.github.com/zellio/5809852)