Slackware 向け日本語環境構築スクリプト群

#　無　保　証　で　す
[当方執筆の技術情報に関するライセンス、免責事項、禁止事項](https://qiita.com/EarthSimilarityIndex/items/6b9bb2ccacb38aae15b1)
本記事記載スクリプト群の対応バージョン :　Slackware 14.2 x86_64

# 用途・目的別 Slackware 系ディストリビューション紹介
Slackware らしさを受け継ぎつつ**充実した日本語環境・ドキュメントを有する** Linux が使いたい
→ [Plamo Linux](https://www.plamolinux.org/)

GUI の各種管理ツールが付属するシンプル[^one_application_per_task] な Slackware **互換** Linux が使いたい[^vbox]
→ [Salix OS](https://salixos.org/)

[^vbox]: VirtualBox で Salix OS をゲスト OS として利用し、かつ GuestAdditions を導入する場合、モジュールのコンパイル時に kernel-headers パッケージのみでは足りず、稼働中のカーネルに対応する kernel-source パッケージを slapt-get で入れる必要があった。

[^one_application_per_task]: 一つの用途に対して採用されるアプリは一つ。

インストール直後から快適に使えるようチューニングされ、TUI/GUI 向けに各種管理ツールが追加されたシンプル[^one_application_per_task] な Slackware **互換** Linux が使いたい[^Zenwalk]
→ [Zenwalk](http://zenwalkgnulinux.blogspot.com/)

[^Zenwalk]: In 2019 :  Zenwalk is a 64 bits "pure" Slackware system with added post-install configurations, optimizations and out of the box tweaks, with a ready to use polished desktop environment, with added graphical system tools, added office and multimedia applications, and striped to keep just "one application per task"!（Zenwalk 公式サイトより引用）

TUI/GUI 双方で動作する[**シンプルな統合システム管理ツール**](https://vectorlinux.readthedocs.io/en/latest/manuals/vasm.html)を有する Slackware 系 Linux が使いたい
→ [VectorLinux](http://www.vectorlinux.com/)

軽量かつ**キュート**な Slackware 系 Linux が使いたい
→ [Slacko Puppy Linux](http://www.slacko.eezy.xyz/index.php)

軽さを追及した**ポータブル**な[^cd・usb] Slackware 系 Linux が使いたい
→ [Porteus](http://www.porteus.org/)

[^cd・usb]: USB フラッシュメモリ等からの高速起動にフォーカスしている。

ゆるい Linux が使いたい
→ [Slackware Linux](http://www.slackware.com/)

# こちらもどうぞ
[Slackware 14.2 インストールの流れ／cgdisk による TUI パーティショニング／pkgtool によるシステムの再セットアップ](https://qiita.com/EarthSimilarityIndex/items/2b88d7f4d00d4b2d027b)

[Slackware で SlackBuilds.org を利用する／SlackBuilds.org や公式リポジトリの更新通知を受けとる](https://qiita.com/EarthSimilarityIndex/items/0bbd1cea3425fe0f6a66)

# デフォルトランレベル変更ツール
Slackware のデフォルトランレベルを対話的に変更する。

[TUI](https://ja.wikipedia.org/wiki/%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%83%A6%E3%83%BC%E3%82%B6%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%95%E3%82%A7%E3%83%BC%E3%82%B9)による対話的再設定スクリプト
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/blob/master/fa-defaultrunlevel
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-defaultrunlevel
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-defaultrunlevel && chmod +x $(pwd)/fa-defaultrunlevel && su -l -c $(pwd)/fa-defaultrunlevel
```

<details><summary>スクリーンショット</summary><div>

![VirtualBox_Slackware64_17_08_2019_17_44_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/aeb64ea4-e4b8-01f1-b5bf-aa6e3c03d160.png)
![VirtualBox_Slackware64_17_08_2019_17_45_59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/649b69b1-a595-519d-b46e-95d4154cd1f2.png)
![VirtualBox_Slackware64_17_08_2019_17_46_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/5f4d92f1-b409-064c-e191-951ac16e70cd.png)

</div></details>

# コンソールのキーマップ再設定ツール
Linux コンソールのキーマップを対話的に再設定する。

TUIによる対話的再設定スクリプト
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/blob/master/fa-keyboardreconfig
https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-keyboardreconfig
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/fluidagate-toolbox/raw/master/fa-keyboardreconfig && chmod +x $(pwd)/fa-keyboardreconfig && su -l -c $(pwd)/fa-keyboardreconfig
```

<details><summary>スクリーンショット</summary><div>

![VirtualBox_Slackware64_20_08_2019_19_19_30.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/90d7c069-1cc1-43f0-7ccf-19ff13f554f1.png)
![VirtualBox_Slackware64_20_08_2019_19_20_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/e72a3ff5-c1a6-a084-ba9d-1f4850317584.png)
![VirtualBox_Slackware64_20_08_2019_19_20_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/fc099d42-815d-cdc6-8085-a4d17e393fc0.png)
![VirtualBox_Slackware64_20_08_2019_19_21_00.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/b5e45062-0a17-6463-fc45-662c46c8a287.png)

</div></details>

# xwmconfig 用日本語環境[ラッパー](https://wa3.i-3-i.info/word191.html)
ラッパーファイルを生成し、xwmconfig に日本語環境設定機能を加える。
切り替え可能なインプットメソッドフレームワークは [SCIM](https://github.com/scim-im/scim), [IBus](https://github.com/ibus/ibus/wiki), [Fcitx](http://fcitx-im.org), [uim](https://github.com/uim/uim) 。

TUIによる対話的再設定スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/xwmconfiglocalize
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/xwmconfiglocalize
ダウンロードしたスクリプトを /usr/local/**bin** 等に置いて実行権限を付与。
使用時は**一般ユーザー権限で**実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/xwmconfiglocalize && chmod +x $(pwd)/xwmconfiglocalize && $(pwd)/xwmconfiglocalize
```

<details><summary>スクリーンショット</summary><div>

![VirtualBox_Slackware64_26_07_2019_17_38_04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/7d374dfe-d249-da1a-55d7-62eaf6ea36f3.png)
![VirtualBox_Slackware64_26_07_2019_17_43_02.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/194fd572-71f3-9fdf-709c-24f5d5940a22.png)
![VirtualBox_Slackware64_20_08_2019_18_16_24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/f82bee86-4637-95c7-4fe4-0f73d238703b.png)
![VirtualBox_Slackware64_26_07_2019_17_40_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/94d41041-1475-02a4-be5f-930ba659edce.png)
![VirtualBox_Slackware64_26_07_2019_17_40_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/2aecdb78-32b8-bbfc-f0cf-484800c4ef13.png)
![VirtualBox_Slackware64_26_07_2019_17_40_56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/eef358c4-b23e-795e-f7bc-4d485c5075d6.png)
![VirtualBox_Slackware64_26_07_2019_17_41_06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/b0b85b4b-3631-fced-dd15-bdd467e24d9a.png)
![VirtualBox_Slackware64_21_08_2019_16_11_26.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/2bd3781d-e941-8eac-7224-e39200cc230a.png)
![VirtualBox_Slackware64_21_08_2019_16_11_51.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/2b5979f9-23bf-1fca-8f71-7b736909c008.png)
![VirtualBox_Slackware64_21_08_2019_16_12_19.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/8cfe8ea3-e47e-0e26-caf8-9bf6e65e592f.png)
![VirtualBox_Slackware64_26_07_2019_17_41_39.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/75c1a994-cb5a-4700-efe7-c04cb9674d6a.png)

</div></details>

# [SlackBuilds.org](https://slackbuilds.org/) 向け各種フロントエンドの導入
## sbopkg の導入
[公式サイト](https://sbopkg.org/)から最新版をダウンロードしインストール。

```sh:2019/08/20時点
wget https://github.com/sbopkg/sbopkg/releases/download/0.38.1/sbopkg-0.38.1-noarch-1_wsr.tgz && su -l -c "upgradepkg $(pwd)/sbopkg-0.38.1-noarch-1_wsr.tgz" || su -l -c "installpkg $(pwd)/sbopkg-0.38.1-noarch-1_wsr.tgz"
```
## sbotools 導入スクリプト
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_sbotools-2.7.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sbotools-2.7.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sbotools-2.7.sh && chmod +x $(pwd)/install_sbotools-2.7.sh && su -l -c $(pwd)/install_sbotools-2.7.sh
```

## sboui（通知機能無し版）導入スクリプト
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_sboui-2.0.1.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sboui-2.0.1.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_sboui-2.0.1.sh && chmod +x $(pwd)/install_sboui-2.0.1.sh && su -l -c $(pwd)/install_sboui-2.0.1.sh
```

#日本語表示環境の整備

## 各種日本語フォント導入ツール
指定されたフォントをダウンロードし ~/.fonts 以下に配置しフォントキャッシュを更新する。

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/modify-jfonts
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify-jfonts
ダウンロードしたスクリプトを /usr/local/**bin** 等に置いて実行権限を付与。
使用時は**一般ユーザー権限で**実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify-jfonts && chmod +x $(pwd)/modify-jfonts && $(pwd)/modify-jfonts
```

<details><summary>スクリーンショット</summary><div>
![VirtualBox_Slackware64_19_08_2019_16_37_45.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/2be51342-75d1-bf16-3e21-3daf25d4bdeb.png)
![VirtualBox_Slackware64_19_08_2019_16_48_16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/ba1bd3bf-9e13-45bf-81af-3357bc621211.png)

</div></details>

対応フォント
[HackGen](https://github.com/yuru7/HackGen)
[IPA](https://ipafont.ipa.go.jp/index.html)
[Kochi-substitute](https://ja.osdn.net/projects/efont/releases/p1357)
[Migu](https://mix-mplus-ipa.osdn.jp/migu/)
[Monapo](http://linuxplayers.g1.xrea.com/modified_fonts_01.html#monapo)
[M+](https://mplus-fonts.osdn.jp/about.html)
[Noto CJK JP](https://www.google.com/get/noto/)
[Ricty Diminished](https://www.rs.tus.ac.jp/yyusa/ricty_diminished.html)
[Sazanami](https://ja.osdn.net/projects/efont/releases/p2547)
[Ume](https://ja.osdn.net/projects/ume-font/wiki/FrontPage)
[UmePlus](http://linuxplayers.g1.xrea.com/modified_fonts_01.html#umeplus)
[VL Gothic](http://vlgothic.dicey.org/)

[serif](https://ja.wikipedia.org/wiki/%E3%82%BB%E3%83%AA%E3%83%95_(%E6%96%87%E5%AD%97)), [sans-serif](https://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%B3%E3%82%BB%E3%83%AA%E3%83%95), [monospace](https://ja.wikipedia.org/wiki/%E7%AD%89%E5%B9%85%E3%83%95%E3%82%A9%E3%83%B3%E3%83%88) のフォールバック先については /etc/fonts/conf.avail/65-nonlatin.conf に記載有り。

<details><summary>65-nonlatin.conf</summary><div>

```
<?xml version="1.0"?>
<!DOCTYPE fontconfig SYSTEM "fonts.dtd">
<fontconfig>
	<alias>
		<family>serif</family>
		<prefer>
			<family>Artsounk</family> <!-- armenian -->
			<family>BPG UTF8 M</family> <!-- georgian -->
			<family>Kinnari</family> <!-- thai -->
			<family>Norasi</family> <!-- thai -->
			<family>Frank Ruehl</family> <!-- hebrew -->
			<family>Dror</family>  <!-- hebrew -->
			<family>JG LaoTimes</family>  <!-- lao -->
			<family>Saysettha Unicode</family>  <!-- lao -->
			<family>Pigiarniq</family> <!-- canadian syllabics -->
			<family>B Davat</family> <!-- arabic (fa) -->
			<family>B Compset</family>  <!-- arabic (fa) -->
			<family>Kacst-Qr</family> <!-- arabic (ar) -->
			<family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
			<family>Raghindi</family> <!-- devanagari -->
			<family>Mukti Narrow</family> <!-- bengali -->
			<family>malayalam</family> <!-- malayalam -->
			<family>Sampige</family> <!-- kannada -->
			<family>padmaa</family> <!-- gujarati -->
			<family>Hapax Berbère</family> <!-- tifinagh -->
			<family>MS Mincho</family> <!-- han (ja) -->
			<family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
			<family>PMingLiu</family> <!-- han (zh-tw) -->
			<family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
			<family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
			<family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
			<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
			<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
			<family>HanyiSong</family> <!-- han (zh-cn,zh-tw) -->
			<family>MgOpen Canonica</family>
			<family>Sazanami Mincho</family>
			<family>IPAMonaMincho</family>
			<family>IPAMincho</family>
			<family>Kochi Mincho</family>
			<family>AR PL SungtiL GB</family>
			<family>AR PL Mingti2L Big5</family>
 			<family>AR PL Zenkai Uni</family>
			<family>ＭＳ 明朝</family>
 			<family>ZYSong18030</family>
			<family>NanumMyeongjo</family> <!-- hangul (ko) -->
			<family>UnBatang</family> <!-- hangul (ko) -->
			<family>Baekmuk Batang</family> <!-- hangul (ko) -->
 			<family>KacstQura</family>
 			<family>Frank Ruehl CLM</family>
			<family>Lohit Bengali</family>
 			<family>Lohit Gujarati</family>
 			<family>Lohit Hindi</family>
			<family>Lohit Marathi</family>
			<family>Lohit Maithili</family>
			<family>Lohit Kashmiri</family>
			<family>Lohit Konkani</family>
			<family>Lohit Nepali</family>
			<family>Lohit Sindhi</family>
 			<family>Lohit Punjabi</family>
 			<family>Lohit Tamil</family>
			<family>Meera</family>
			<family>Lohit Malayalam</family>
 			<family>Lohit Kannada</family>
 			<family>Lohit Telugu</family>
 			<family>Lohit Oriya</family>
 			<family>LKLUG</family>
		</prefer>
	</alias>
	<alias>
		<family>sans-serif</family>
		<prefer>
			<family>Nachlieli</family> <!-- hebrew -->
			<family>Lucida Sans Unicode</family>
			<family>Yudit Unicode</family>
			<family>Kerkis</family> <!-- greek -->
			<family>ArmNet Helvetica</family> <!-- armenian -->
			<family>Artsounk</family> <!-- armenian -->
			<family>BPG UTF8 M</family> <!-- georgian -->
			<family>Waree</family> <!-- thai -->
			<family>Loma</family> <!-- thai -->
			<family>Garuda</family> <!-- thai -->
			<family>Umpush</family> <!-- thai -->
			<family>Saysettha Unicode</family> <!-- lao? -->
			<family>JG Lao Old Arial</family> <!-- lao -->
			<family>GF Zemen Unicode</family> <!-- ethiopic -->
			<family>Pigiarniq</family> <!-- canadian syllabics -->
			<family>B Davat</family> <!-- arabic (fa) -->
			<family>B Compset</family> <!-- arabic (fa) -->
			<family>Kacst-Qr</family> <!-- arabic (ar) -->
			<family>Urdu Nastaliq Unicode</family> <!-- arabic (ur) -->
			<family>Raghindi</family> <!-- devanagari -->
			<family>Mukti Narrow</family> <!-- bengali -->
			<family>malayalam</family> <!-- malayalam -->
			<family>Sampige</family> <!-- kannada -->
			<family>padmaa</family> <!-- gujarati -->
			<family>Hapax Berbère</family> <!-- tifinagh -->
			<family>MS Gothic</family> <!-- han (ja) -->
			<family>UmePlus P Gothic</family> <!-- han (ja) -->
			<!-- chinese fonts are actually serifed -->
			<family>SimSun</family> <!-- han (zh-cn,zh-tw) -->
			<family>PMingLiu</family> <!-- han (zh-tw) -->
			<family>WenQuanYi Zen Hei</family> <!-- han (zh-cn,zh-tw) -->
			<family>WenQuanYi Bitmap Song</family> <!-- han (zh-cn,zh-tw) -->
			<family>AR PL ShanHeiSun Uni</family> <!--han (ja,zh-cn,zh-tw) -->
			<family>AR PL New Sung</family> <!-- han (zh-cn,zh-tw) -->
			<family>MgOpen Modata</family>
			<family>VL Gothic</family>
			<family>IPAMonaGothic</family>
			<family>IPAGothic</family>
			<family>Sazanami Gothic</family>
			<family>Kochi Gothic</family>
			<family>AR PL KaitiM GB</family>
			<family>AR PL KaitiM Big5</family>
 			<family>AR PL ShanHeiSun Uni</family>
 			<family>AR PL SungtiL GB</family>
 			<family>AR PL Mingti2L Big5</family>
			<family>ＭＳ ゴシック</family>
			<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
			<family>TSCu_Paranar</family> <!-- tamil -->
			<family>NanumGothic</family> <!-- hangul (ko) -->
			<family>UnDotum</family> <!-- hangul (ko) -->
			<family>Baekmuk Dotum</family> <!-- hangul (ko) -->
 			<family>Baekmuk Gulim</family> <!-- hangul (ko) -->
 			<family>KacstQura</family>
			<family>Lohit Bengali</family>
 			<family>Lohit Gujarati</family>
 			<family>Lohit Hindi</family>
			<family>Lohit Marathi</family>
			<family>Lohit Maithili</family>
			<family>Lohit Kashmiri</family>
			<family>Lohit Konkani</family>
			<family>Lohit Nepali</family>
			<family>Lohit Sindhi</family>
 			<family>Lohit Punjabi</family>
 			<family>Lohit Tamil</family>
			<family>Meera</family>
 			<family>Lohit Malayalam</family>
 			<family>Lohit Kannada</family>
 			<family>Lohit Telugu</family>
 			<family>Lohit Oriya</family>
 			<family>LKLUG</family>
		</prefer>
	</alias>
	<alias>
		<family>monospace</family>
		<prefer>
			<family>Miriam Mono</family> <!-- hebrew -->
			<family>VL Gothic</family>
			<family>IPAMonaGothic</family>
			<family>IPAGothic</family>
			<family>Sazanami Gothic</family>
			<family>Kochi Gothic</family>
			<family>AR PL KaitiM GB</family>
			<family>MS Gothic</family> <!-- han (ja) -->
			<family>UmePlus Gothic</family> <!-- han (ja) -->
			<family>NSimSun</family> <!-- han (zh-cn,zh-tw) -->
			<family>MingLiu</family> <!-- han (zh-tw) -->
			<family>AR PL ShanHeiSun Uni</family> <!-- han (ja,zh-cn,zh-tw) -->
			<family>AR PL New Sung Mono</family> <!-- han (zh-cn,zh-tw) -->
			<family>HanyiSong</family> <!-- han (zh-cn) -->
			<family>AR PL SungtiL GB</family>
			<family>AR PL Mingti2L Big5</family>
			<family>ZYSong18030</family> <!-- han (zh-cn,zh-tw) -->
			<family>NanumGothicCoding</family> <!-- hangul (ko) -->
			<family>NanumGothic</family> <!-- hangul (ko) -->
			<family>UnDotum</family> <!-- hangul (ko) -->
			<family>Baekmuk Dotum</family> <!-- hangul (ko) -->
			<family>Baekmuk Gulim</family> <!-- hangul (ko) -->
			<family>TlwgTypo</family> <!-- thai -->
			<family>TlwgTypist</family> <!-- thai -->
			<family>TlwgTypewriter</family> <!-- thai -->
			<family>TlwgMono</family> <!-- thai -->
			<family>Hasida</family> <!-- hebrew -->
			<family>Mitra Mono</family> <!-- bengali -->
			<family>GF Zemen Unicode</family> <!-- ethiopic -->
			<family>Hapax Berbère</family> <!-- tifinagh -->
			<family>Lohit Bengali</family>
			<family>Lohit Gujarati</family>
			<family>Lohit Hindi</family>
			<family>Lohit Marathi</family>
			<family>Lohit Maithili</family>
			<family>Lohit Kashmiri</family>
			<family>Lohit Konkani</family>
			<family>Lohit Nepali</family>
			<family>Lohit Sindhi</family>
			<family>Lohit Punjabi</family>
			<family>Lohit Tamil</family>
			<family>Meera</family>
			<family>Lohit Malayalam</family>
			<family>Lohit Kannada</family>
			<family>Lohit Telugu</family>
			<family>Lohit Oriya</family>
			<family>LKLUG</family>
		</prefer>
	</alias>
</fontconfig>

```

</div></details>

## [FontForge](http://fontforge.github.io) ＆ [Ricty](https://www.rs.tus.ac.jp/yyusa/ricty.html) 導入スクリプト

### FontForge 導入スクリプト
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_fontforge-20190317.sh
https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_fontforge-20190317.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/raw/master/install_fontforge-20190317.sh && chmod +x $(pwd)/install_fontforge-20190317.sh && su -l -c $(pwd)/install_fontforge-20190317.sh
```

### Ricty 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fonts-ttf-ricty-4.1.1.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fonts-ttf-ricty-4.1.1.sh
ダウンロードしたスクリプトを /usr/local/**bin** 等に置いて実行権限を付与。
使用時は**一般ユーザー権限で**実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fonts-ttf-ricty-4.1.1.sh && chmod +x $(pwd)/install_fonts-ttf-ricty-4.1.1.sh && $(pwd)/install_fonts-ttf-ricty-4.1.1.sh
```

## lv 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_lv-4.51-7.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_lv-4.51-7.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_lv-4.51-7.sh && chmod +x $(pwd)/install_lv-4.51-7.sh && su -l -c $(pwd)/install_lv-4.51-7.sh
```

## nkf の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/system/nkf/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall nkf"
```

## sl の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/games/sl/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall sl"
```

## manpage の日本語表示の適正化スクリプト
/etc/man.conf を編集することで /usr/man/ja 以下のマニュアルアーカイブに対して読み込み時に nkf を用いた UTF-8 への文字コード自動変換を行う「しかけ」を追加する。 

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/modify_etc_manconf_for_Japanese_Environment.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify_etc_manconf_for_Japanese_Environment.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/modify_etc_manconf_for_Japanese_Environment.sh && chmod +x $(pwd)/modify_etc_manconf_for_Japanese_Environment.sh && su -l -c $(pwd)/modify_etc_manconf_for_Japanese_Environment.sh
```

### 迷子の manpage について
/usr/man/jp/ や /usr/man/ja.UTF-8/ 以下に参照されない日本語 manpage が存在する場合、/usr/man/ja/ 以下の適切な場所にシンボリックリンクを作成すると良い。

```sh:例1（　cd-paranoia.1.gz　cdparanoia.1.gz　lha.1.gz　）
su -l -c "ln -s /usr/man/jp/man1/* /usr/man/ja/man1/"
```

```sh:例2（　sl.1.ja.gz　）
su -l -c "ln -s /usr/man/ja.UTF-8/man1/* /usr/man/ja/man1/"
```

## 日本語 manpage の導入

[JM Project](https://linuxjm.osdn.jp/) から最新のマニュアルアーカイブを入手し導入。
Slackware のマニュアルアーカイブのディレクトリ配置は /usr/share/man ではなく /usr/man である点に注意。

<details><summary>スクリーンショット</summary><div>
![VirtualBox_Slackware64_20_08_2019_09_30_33.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/e253ed8e-6231-b19b-b814-0489c614c98d.png)
</div></details>

日本語マニュアルアーカイブをインストールしたにも関わらず読み込まれない場合、環境変数 LANG の値と日本語マニュアルアーカイブのインストール先のフォルダ名（ja_JP.utf8 や ja_JP.UTF-8 など）を一致させることで表示可能だった。

### 日本語マニュアルアーカイブのダウンロード
https://linuxjm.osdn.jp/download.html

### アーカイブの README ファイル
https://linuxjm.osdn.jp/README.html

### アーカイブの INSTALL ファイル
https://linuxjm.osdn.jp/INSTALL.html

# 日本語入力環境の構築

## [G-HAL さん Patch](http://www.fenix.ne.jp/~G-HAL/soft/nosettle/im.html#anthy) 適用済み Anthy 9100h 導入スクリプト

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh && chmod +x $(pwd)/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh && su -l -c $(pwd)/install_Anthy-9100h-G-HAL-patch13-release-2019406.sh
```

## [SKK 辞書](https://skk-dev.github.io/dict/)（SKK-JISYO.L）導入スクリプト
/usr/share/skk/ に [SKK-JISYO.L](https://skk-dev.github.io/dict/SKK-JISYO.L.gz) をインストールする。

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_skk-jisyo.l.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_skk-jisyo.l.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_skk-jisyo.l.sh && chmod +x $(pwd)/install_skk-jisyo.l.sh && su -l -c $(pwd)/install_skk-jisyo.l.sh
```

## ibus の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/misc/ibus/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall ibus"
```

### [ibus-fep](https://github.com/ueno/ibus-fep) 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_ibus-fep-1.4.4.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_ibus-fep-1.4.4.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_ibus-fep-1.4.4.sh && chmod +x $(pwd)/install_ibus-fep-1.4.4.sh && su -l -c $(pwd)/install_ibus-fep-1.4.4.sh
```

### ibus-qt の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/misc/ibus-qt/)
ibus と Qt アプリの連携に。

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall ibus-qt"
```

### ibus-anthy の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/misc/ibus-anthy/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall ibus-anthy"
```

### ibus-skk の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/misc/ibus-skk/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall ibus-skk"
```

### ibus-mozc の導入
[fcitx-mozc](https://slackbuilds.org/repository/14.2/misc/fcitx-mozc/) の SlackBuild スクリプトを書き換え構築する。

## fcitx の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/misc/fcitx/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall fcitx"
```

### fcitx-configtool
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/misc/fcitx-configtool/)
GUI の fcitx 設定ツール。

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall fcitx-configtool"
```

### [fcitx-anthy](https://gitlab.com/fcitx/fcitx-anthy) 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fcitx-anthy-0.2.3.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-anthy-0.2.3.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-anthy-0.2.3.sh && chmod +x $(pwd)/install_fcitx-anthy-0.2.3.sh && su -l -c $(pwd)/install_fcitx-anthy-0.2.3.sh
```

### [fcitx-skk](https://gitlab.com/fcitx/fcitx-skk) 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fcitx-skk-0.1.3.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-skk-0.1.3.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-skk-0.1.3.sh && chmod +x $(pwd)/install_fcitx-skk-0.1.3.sh && su -l -c $(pwd)/install_fcitx-skk-0.1.3.sh
```

### fcitx-mozc の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/misc/fcitx-mozc/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall fcitx-mozc"
```

## [uim](https://github.com/uim/uim-doc-ja/wiki) 導入スクリプト
クリーンインストール直後のシステムにおいて uim のソースのみでビルド出来ることをビルドオプション選択の目安としました。

<details><summary>Configure Result :</summary><div>

```
Configure Result :

   Anthy           : yes
   Anthy (UTF-8)   : yes
   Canna           : no
   Mana            : no
   PRIME           : no
   SJ3             : no
   SKK             : yes
   Wnn             : no
   m17n-lib        : yes
   cURL            : yes
   expat           : yes
   OpenSSL         : yes
   SQLite3         : yes
   ffi             : yes
   GTK+2           : yes
   GNOME2 Applet   : no
   GTK+3           : yes
   GNOME3 Applet   : no
   Qt3             : no
   Qt3 immodule    : no
   Qt4             : yes
   Qt4 immodule    : yes
   Qt4 Qt3Support  : yes
   Qt5             : no
   Qt5 immodule    : no
   KDE3 Applet     : no
   KDE4 Applet     : yes
   FEP             : yes
   Emacs           : yes
   XIM             : yes
   Pref            : yes
   DICT            : yes
   EB              : no
   OSX dictionary  : no
   libedit         : no
   notify          : stderr libnotify knotify4 
   Default toolkit : gtk
```

</div></details>

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_uim-1.8.8.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_uim-1.8.8.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_uim-1.8.8.sh && chmod +x $(pwd)/install_uim-1.8.8.sh && su -l -c $(pwd)/install_uim-1.8.8.sh
```

### uim-mozc の導入
macuim に含まれる uim-mozc を slackware 向けにリビルドする。
https://code.google.com/archive/p/macuim/
https://github.com/e-kato/macuim/
[Uim を使って日本語を入力 - ArchWiki](https://wiki.archlinux.jp/index.php/Uim_%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%A6%E6%97%A5%E6%9C%AC%E8%AA%9E%E3%82%92%E5%85%A5%E5%8A%9B#Mozc)

# フレームバッファ及び KMS/DRM コンソールにおける日本語の表示と入力

Kernel Mode Setting (KMS) — The Linux Kernel documentation
https://www.kernel.org/doc/html/latest/gpu/drm-kms.html

Kernel Mode Setting - ArchWiki
https://wiki.archlinux.jp/index.php/Kernel_Mode_Setting

Frame Buffer — The Linux Kernel documentation
https://www.kernel.org/doc/html/latest/fb/

JF: Linux Kernel 2.6 Documentation: framebuffer.txt
http://archive.linux.or.jp/JF/JFdocs/kernel-docs-2.6/fb/framebuffer.txt.html

※ 非 X 環境、Linux コンソール上では半角/全角キーや変換キー、無変換キー等がインプットメソッドの ON/OFF に使えないかもしれません。その場合は Ctrl+Space などの無難なキーの組み合わせをインプットメソッドの ON/OFF や、かな漢字変換の ON/OFF に割り当てておくと良いでしょう。

## kmscon の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/system/kmscon/)
kmscon では[マウスカーソルは使えない](https://github.com/dvdhrm/kmscon/issues/99)ようである。

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall kmscon"
```

### /etc/inittab で呼び出す

https://linuxjm.osdn.jp/html/SysVinit/man5/inittab.5.html
https://www.atmarkit.co.jp/ait/articles/0204/02/news002.html

以下は /bin/login の代わりに /sbin/agetty を使い、tty6 で kmscon を動かす場合の設定例。

```/etc/kmscon/kmscon.conf``` の ```#login=/sbin/agetty 38400 -- - linux``` をアンコメントし、```/etc/inittab``` の ```c6:12345:respawn:/sbin/agetty 38400 tty6 linux``` を ```c6:12345:respawn:/usr/bin/kmscon``` と変更する。

<details><summary>/etc/kmscon/kmscon.conf</summary><div>

```sh:/etc/kmscon/kmscon.conf
# Config file for kmscon.
# Any long option listed in "man kmscon" can be used here.

# As shipped, all the options in this file are commented out.

# Use agetty for logging in.
# By default, kmscon spawns "/bin/login -p", which works fine but
# isn't as nice (or as familiar) as using agetty.
# If you plan to spawn kmscon from /etc/inittab, you probably want to
# uncomment this.

login=/sbin/agetty 38400 -- - linux


# Enable DRM 2D acceleration. 3D accel won't work unless you have
# GL/ES support (which Slackware doesn't ship with, and isn't available
# on SBo either).

drm


# Font size, in points (not pixels). Don't set too large, you want
# at least 80x25 character cells. 'echo $COLUMNS $LINES' should show
# at least 80 columns and 25 lines.

#font-size=15


# Enable shortcut keys for multiple sessions on the same
# virtual terminal.

#session-control


# Keyboard repeat delay is in milliseconds. Repeat rate is *also* in
# milliseconds (unlike "xset r", which uses repeats-per-second).

#xkb-repeat-delay=200
#xkb-repeat-rate=12


# Keyboard Layout, Variant, Options
xkb-layout=jp
xkb-variant=OADG109A
```

</div></details>

<details><summary>/etc/inittab</summary><div>

```sh:/etc/inittab
#
# inittab	This file describes how the INIT process should set up
#		the system in a certain run-level.
#
# Version:	@(#)inittab		2.04	17/05/93	MvS
#                                       2.10    02/10/95        PV
#                                       3.00    02/06/1999      PV
#                                       4.00    04/10/2002      PV
#                                      13.37    2011-03-25      PJV
#
# Author:	Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified by:	Patrick J. Volkerding, <volkerdi@slackware.com>
#

# These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11 with KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

# Default runlevel. (Do not set to 0 or 6)
id:3:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -r now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails.
pf::powerfail:/sbin/genpowerfail start

# If power is back, cancel the running shutdown.
pg::powerokwait:/sbin/genpowerfail stop

# These are the standard console login getties in multiuser mode:
c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
#c6:12345:respawn:/sbin/agetty 38400 tty6 linux
c6:12345:respawn:/usr/bin/kmscon

# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100

# Dialup lines:
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
# Display managers are preferred in this order:  gdm, kdm, xdm
x1:4:respawn:/etc/rc.d/rc.4

# End of /etc/inittab

```

</div></details>


### /etc/rc.d/rc.4 から呼び出す

以下はグラフィカルログインマネージャを kmscon で乗っ取る場合の設定例。```/etc/inittab``` でデフォルトランレベルを 4 に設定し、```/etc/rc.d/rc.4``` を編集してログインマネージャの代わりに kmscon が起動するよう変更する。

具体的には、```/etc/inittab``` の ```id:3:initdefault:``` を ```id:4:initdefault:``` とし、```/etc/rc.d/rc.4``` の gdm の呼び出し行の上に kmscon の呼び出し行を書く。

<details><summary>/etc/inittab</summary><div>

```sh:/etc/inittab
#
# inittab	This file describes how the INIT process should set up
#		the system in a certain run-level.
#
# Version:	@(#)inittab		2.04	17/05/93	MvS
#                                       2.10    02/10/95        PV
#                                       3.00    02/06/1999      PV
#                                       4.00    04/10/2002      PV
#                                      13.37    2011-03-25      PJV
#
# Author:	Miquel van Smoorenburg, <miquels@drinkel.nl.mugnet.org>
# Modified by:	Patrick J. Volkerding, <volkerdi@slackware.com>
#

# These are the default runlevels in Slackware:
#   0 = halt
#   1 = single user mode
#   2 = unused (but configured the same as runlevel 3)
#   3 = multiuser mode (default Slackware runlevel)
#   4 = X11 with KDM/GDM/XDM (session managers)
#   5 = unused (but configured the same as runlevel 3)
#   6 = reboot

# Default runlevel. (Do not set to 0 or 6)
id:4:initdefault:

# System initialization (runs when system boots).
si:S:sysinit:/etc/rc.d/rc.S

# Script to run when going single user (runlevel 1).
su:1S:wait:/etc/rc.d/rc.K

# Script to run when going multi user.
rc:2345:wait:/etc/rc.d/rc.M

# What to do at the "Three Finger Salute".
ca::ctrlaltdel:/sbin/shutdown -t5 -r now

# Runlevel 0 halts the system.
l0:0:wait:/etc/rc.d/rc.0

# Runlevel 6 reboots the system.
l6:6:wait:/etc/rc.d/rc.6

# What to do when power fails.
pf::powerfail:/sbin/genpowerfail start

# If power is back, cancel the running shutdown.
pg::powerokwait:/sbin/genpowerfail stop

# These are the standard console login getties in multiuser mode:
c1:12345:respawn:/sbin/agetty --noclear 38400 tty1 linux
c2:12345:respawn:/sbin/agetty 38400 tty2 linux
c3:12345:respawn:/sbin/agetty 38400 tty3 linux
c4:12345:respawn:/sbin/agetty 38400 tty4 linux
c5:12345:respawn:/sbin/agetty 38400 tty5 linux
c6:12345:respawn:/sbin/agetty 38400 tty6 linux

# Local serial lines:
#s1:12345:respawn:/sbin/agetty -L ttyS0 9600 vt100
#s2:12345:respawn:/sbin/agetty -L ttyS1 9600 vt100

# Dialup lines:
#d1:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS0 vt100
#d2:12345:respawn:/sbin/agetty -mt60 38400,19200,9600,2400,1200 ttyS1 vt100

# Runlevel 4 also starts /etc/rc.d/rc.4 to run a display manager for X.
# Display managers are preferred in this order:  gdm, kdm, xdm
x1:4:respawn:/etc/rc.d/rc.4

# End of /etc/inittab
```

</div></details>

<details><summary>/etc/rc.d/rc.4</summary><div>

```sh:/etc/rc.d/rc.4
#! /bin/sh
#
# rc.4		This file is executed by init(8) when the system is being
#		initialized for run level 4 (XDM)
#
# Version:	@(#)/etc/rc.d/rc.4	2.00	02/17/93
#
# Author:	Fred N. van Kempen, <waltje@uwalt.nl.mugnet.org>
# At least 47% rewritten by:  Patrick J. Volkerding <volkerdi@slackware.com>
#

# Tell the viewers what's going to happen...
echo "Starting up X11 session manager..."

# KMSCON
if [ -x /usr/bin/kmscon ]; then
  exec /usr/bin/kmscon
fi

# Try to use GNOME's gdm session manager.  This comes first because if
# gdm is on the machine then the user probably installed it and wants
# to use it by default:
if [ -x /usr/bin/gdm ]; then
  exec /usr/bin/gdm -nodaemon
fi

# Someone thought that gdm looked prettier in /usr/sbin,
# so look there, too:
if [ -x /usr/sbin/gdm ]; then
  exec /usr/sbin/gdm -nodaemon
fi

# Not there?  OK, try to use KDE's kdm session manager:
if [ -x /opt/kde/bin/kdm ]; then
  exec /opt/kde/bin/kdm -nodaemon
elif [ -x /usr/bin/kdm ]; then
  exec /usr/bin/kdm -nodaemon
fi

# Look for SDDM as well:
if [ -x /usr/bin/sddm ]; then
  exec /usr/bin/sddm
fi

# If all you have is XDM, I guess it will have to do:
if [ -x /usr/bin/xdm ]; then
  exec /usr/bin/xdm -nodaemon
elif [ -x /usr/X11R6/bin/xdm ]; then
  exec /usr/X11R6/bin/xdm -nodaemon
fi

# error
echo
echo "Hey, you don't have KDM, GDM, or XDM.  Can't use runlevel 4 without"
echo "one of those installed."
sleep 30

# All done.
```

</div></details>

### キーボードレイアウトを適正化する

```/etc/kmscon/kmscon.conf``` に、
日本語 106/109 キーボードなら例えば
```xkb-layout=jp```
と指定する。variant や options も指定可能 [^options] 。詳しくは kmscon の manpage を閲覧のこと。

[^options]: kbd-options で複数のオプションを指定する場合はカンマで区切る必要があった。

また、環境変数 COLORTERM=kmscon が設定されるので、.profile 等の記述を工夫することで kmscon 下では ja_JP.UTF-8 、Linux コンソールでは en_US.UTF-8 といった切り替えを自動化出来る。

#### kmscon 用キーボードレイアウト設定ツール
kmsconconfig と命名したものの、現在キーボードレイアウト編集設定機能のみ搭載。```/etc/kmscon/kmscon.conf``` を編集しキーボードレイアウト・ヴァリアント[^ヴ]・オプションを選択・設定する。

[^ヴ]: 「ヴ」には厨二心をくすぐられる。

https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/kmsconconfig
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/kmsconconfig
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/kmsconconfig && chmod +x $(pwd)/kmsconconfig && su -l -c $(pwd)/kmsconconfig
```

### kmscon における日本語入力
いずれかの[FEP](https://ja.wikipedia.org/wiki/%E3%83%95%E3%83%AD%E3%83%B3%E3%83%88%E3%82%A8%E3%83%B3%E3%83%89%E3%83%97%E3%83%AD%E3%82%BB%E3%83%83%E3%82%B5)が必要。

- [uim-fep](https://github.com/uim/uim-doc-ja/wiki/UimFep)
- [ibus-fep](https://github.com/ueno/ibus-fep)
- [scim-console](https://github.com/scim-im/scim-console) (未検証)

#### ibus-fep を使う場合
ibus-daemon が稼働中、かつ適切なインプットメソッドエンジンが選択されている必要がある。

#####例:

```
$ ibus-daemon -dr
$ ibus engine anthy
$ ibus-fep
```

#### uim-fep を使う場合
kmscon 上では uim-fep のみを起動すると描画が乱れるが、screen や tmux もしくは [byobu](https://slackbuilds.org/repository/14.2/system/byobu/) 上で実行することにより、描画を崩壊させることなく日本語入力を行えた。

#### 上記以外の日本語入力
vim や emacs 等独自の日本語入力フレームワークを持つものを日本語入力時に使用する。

## mlterm のフレームバッファ仕様（mlterm-fb）の導入
・[日本語入力への対応が簡単。](https://qiita.com/arakiken/items/a67fc7dfadc09f02ea28)
・[libsixel により画像データも表示可能。](https://qiita.com/arakiken/items/3e4bc9a6e43af0198e46)
・マウスポインタもサポート [^mlterm-mouse] 。
・GNU Screen や tmux 、あるいはタイル型ウィンドウマネージャのような感覚でスクリーンを分割可能。
・オプションを渡せば縦書き表示にも対応。
・現在も活発に開発が続いている。

このように良いこと尽くめであるが、フレームバッファ仕様でビルドした mlterm（ mlterm-fb ）は動作がやや鈍いと感じた。また、mlterm-fb は X 上では動作しない。

なお、ビルド後に ```make install``` ではなく、 ```make install-fb``` としてやることで、通常版 mlterm 導入済みの環境で mlterm-fb を共存させられる。

[^mlterm-mouse]: gpm が有効である場合 mlterm-fb の描画が崩れるので、 ```chmod -x /etc/rc.d/rc.gpm``` しておく必要がある。

### libsixel の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/libraries/libsixel/)
mlterm 構築前にあらかじめこちらを導入しておくことで SixelGraphics 対応版を生成出来る。 

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall libsixel"
```

### mlterm の導入
[SlackBuilds.org から導入可能。](https://slackbuilds.org/repository/14.2/system/mlterm/)
非 X 環境で日本語入力を行いたい場合は先に各種 Input Method を導入しておくこと。

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall mlterm"
```

### mlterm-fb 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_mlterm-fb-3.8.8.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-fb-3.8.8.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-fb-3.8.8.sh && chmod +x $(pwd)/install_mlterm-fb-3.8.8.sh && su -l -c $(pwd)/install_mlterm-fb-3.8.8.sh
```

### mlterm-sdl2 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_mlterm-sdl2-3.8.8.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-sdl2-3.8.8.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_mlterm-sdl2-3.8.8.sh && chmod +x $(pwd)/install_mlterm-sdl2-3.8.8.sh && su -l -c $(pwd)/install_mlterm-sdl2-3.8.8.sh
```

Linux コンソールから起動する場合、mlterm-fb に比べ少し動作が軽いように思う。また、GPMをOFFにする必要がない。ただし非 X 環境で用いる際は、```chmod g-s /usr/bin/mlterm-sdl2``` した上でユーザーを input グループに加えておく必要があった。**前述の対処を行わない場合、SDL2 の仕様により非 X 環境ではキーボード及びマウスからの入力が全て取り上げられ操作不能におちいる**ので注意すること。

※ ```chmod g-s /usr/bin/mlterm-sdl2``` の後に ```chown root:root``` して ```chmod u+s /usr/bin/mlterm-sdl2``` で [SUID](https://ja.wikipedia.org/wiki/Setuid) しておけば utmp/[wtmp](https://wa3.i-3-i.info/word13285.html) 関連の動作は root:utmp で [SGID](https://ja.wikipedia.org/wiki/Setuid) な状態と同じになると思われる。

####参考とした文献

mlterm(Multi Lingual TERMinal emulator) / [Mlterm-dev-ja] utmp support for linux glibc
https://sourceforge.net/p/mlterm/mailman/message/3285553/

SDL 2.0 日本語リファレンスマニュアル
http://sdl2referencejp.osdn.jp/index.html

SDL_envvars - SDL Documentation Wiki
https://sdl.beuc.net/sdl.wiki/SDL_envvars

Can we now use SDL2 without X11? - SDL Development - Simple Directmedia Layer
https://discourse.libsdl.org/t/can-we-now-use-sdl2-without-x11/23421

linux - Keyboard and mouse in SDL2 app without X11 on Raspberry Pi - Stack Overflow
https://stackoverflow.com/questions/56423753/keyboard-and-mouse-in-sdl2-app-without-x11-on-raspberry-pi

Filesystem Capability Bits - SlackBuilds.org
https://www.slackbuilds.org/caps/

SDL2 で明示的に KMS/DRM を使いたい場合、環境変数で "SDL_VIDEODRIVER=kmsdrm" などとしてやると良さそう。

```sh:実行例
SDL_VIDEODRIVER=kmsdrm mlterm-sdl2
```

## fbterm の導入
[SlackBuilds.org から導入可能。](https://www.slackbuilds.org/repository/14.2/system/fbterm/)

```sh:導入例（sbotools利用時）
su -l -c "/usr/sbin/sboinstall fbterm"
```

### fbterm における日本語入力
各種 fep の他、fcitx-fbterm が利用可能だった。

#### fcitx-fbterm 導入スクリプト
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/blob/master/install_fcitx-fbterm-0.2.0.sh
https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-fbterm-0.2.0.sh
ダウンロードしたスクリプトを /usr/local/**sbin** 等に置いて実行権限を付与。
使用時は **root** で実行。

```sh:使用例
wget https://gitlab.com/earthsimilarityindex/liquidmelon-cjk-toybox/raw/master/install_fcitx-fbterm-0.2.0.sh && chmod +x $(pwd)/install_fcitx-fbterm-0.2.0.sh && su -l -c $(pwd)/install_fcitx-fbterm-0.2.0.sh
```

##### 起動例
Linux コンソールで fcitx-fbterm-helper を実行する。fcitx-fbterm-helper が自動的に fcitx 及び fbterm を起動する。

```例
$ /usr/bin/fcitx-remote -e
$ /usr/bin/fcitx-fbterm-helper -l
```

※ ```fcitx-fbterm-helper -h``` で使い方が表示される。

# 素材
## SBoからのダウンロード＆ビルド自動化スクリプトのテンプレート
![88x31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/410379/bfaf087e-89bb-c17f-c7a8-88a2bbc50053.png)

以下のテンプレートは[CC0](https://creativecommons.org/share-your-work/public-domain/cc0/)でリリースしておきます。ご自由にお使い下さい。

<details><summary>テンプレート1：初期型。ハードコーディングだらけ。</summary><div>

 - md5sum のハッシュ値とファイル名の間は半角スペースが二つ入ります。
 - [SlackBuilds.org の公開鍵](https://slackbuilds.org/GPG-KEY)をインポート済みであれば関連する行をアンコメントすることで SlackBuilds.org からダウンロードした tar.gz ファイルの検証を行えます。

```sh:テンプレート1
#!/bin/sh

MD5SUM_BAR_000="d41d8cd98f00b204e9800998ecf8427e  /root/Downloads/bar/bar-0.0.0.tar.gz"

checksum_md5sum () {
	timestamp=$(date +%Y%m%d%H%M%S%N)
	rm -f /tmp/md5sum-$1.$timestamp
	echo $2 >/tmp/md5sum-$1.$timestamp
	chmod go-r /tmp/md5sum-$1.$timestamp
	md5sum -c /tmp/md5sum-$1.$timestamp || exit
	rm /tmp/md5sum-$1.$timestamp || exit
	unset timestamp
}

if test ! $USER = root ; then
	echo "Run this script as root, bye."
	exit
else
	cd /root || exit
	. /etc/profile
	test -d /root/Downloads || mkdir /root/Downloads
	cd /root/Downloads
	if test -f /var/log/packages/bar-0.0.0-x86_64-1_SBo ; then
		echo "Bar 0.0.0 is already installed."
	else
		test -d /root/Downloads/bar && rm -r /root/Downloads/bar
		wget https://slackbuilds.org/slackbuilds/14.2/foo/bar.tar.gz || exit
#		wget https://slackbuilds.org/slackbuilds/14.2/foo/bar.tar.gz.asc || exit
#		gpg --verify /root/Downloads/bar.tar.gz.asc /root/Downloads/bar.tar.gz || exit
		tar zxf /root/Downloads/bar.tar.gz
		cd /root/Downloads/bar
		wget http://www.foo.baz/bar-0.0.0.tar.gz || exit
		checksum_md5sum bar000 "$MD5SUM_BAR_000"
		/root/Downloads/bar/bar.SlackBuild
		upgradepkg /tmp/bar-0.0.0-x86_64-1_SBo.tgz ||
			installpkg /tmp/bar-0.0.0-x86_64-1_SBo.tgz
		ldconfig
		cp /tmp/bar-0.0.0-x86_64-1_SBo.tgz /root/Downloads/
		cd /root/Downloads
		less /usr/doc/bar-0.0.0/README
	fi
fi
```

</div></details>

<details><summary>テンプレート2：利便性向上を狙うも可読性が低下。</summary><div>

 - [冒頭の変数の書き換えで様々なソースに対応出来ます。](https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_xcowsay-1.4.sh)
 - [冒頭の変数及び変数 ```BUILD_ORDER``` への追記で構築依存にも対応可能です。](https://gitlab.com/earthsimilarityindex/watermenou-sbo-installhelper/blob/master/install_supertuxkart-1.0.sh)
 - [SlackBuilds.org の公開鍵](https://slackbuilds.org/GPG-KEY)をインポート済みであれば ```SBO_GPG_VERIFY_**="true"``` [^anynumber] とすることで SlackBuilds.org からダウンロードした tar.gz ファイルの検証を行えます。

https://slackbuilds.org/repository/14.2/games/xcowsay/
https://slackbuilds.org/repository/14.2/games/supertuxkart/

[^anynumber]: \* はスクリプトに応じて読み替えて下さい。

```sh:テンプレート2
#!/bin/sh

SOFTWARE_NAME_01="bar"
SOFTWARE_VERSION_01="0.0.0"
SOFTWARE_SOURCE_URL_01="http://www.foo.baz/bar-0.0.0.tar.gz"
SOFTWARE_ARCHIVE_NAME_01="bar-0.0.0.tar.gz"
SOFTWARE_ARCHIVE_MD5SUM_01="d41d8cd98f00b204e9800998ecf8427e"
SOFTWARE_README_01="/usr/doc/bar-0.0.0/README"
SOFTWARE_README_PAGER_01="less"
SBO_PKG_LOG_NAME_01="bar-0.0.0-x86_64-1_SBo"
SBO_SOURCE_URL_01="https://slackbuilds.org/slackbuilds/14.2/foo/bar.tar.gz"
SBO_GPG_VERIFY_01="false"

BUILD_ORDER="01"

checksum_md5sum () {
  tempfile=$(mktemp)
  md5sum_data="$2  /root/Downloads/$1/$3"
  echo "$md5sum_data" >"$tempfile"
  unset md5sum_data
  md5sum -c "$tempfile" || exit
  rm "$tempfile" || exit
  unset tempfile
}

sbo_builder () {
  if test -f "/var/log/packages/$1" ; then
    echo "$2 $3 is already installed."
    return 1
  else
    test -d "/root/Downloads/$2" && rm -r "/root/Downloads/$2"
    rm "/root/Downloads/$2.tar.gz" || rm -r "/root/Downloads/$2.tar.gz"
    wget "$4" || exit
    if test "$5" = true ; then
      wget "$4.asc" || exit
      gpg --verify "/root/Downloads/$2.tar.gz.asc" "/root/Downloads/$2.tar.gz" || exit
    fi
    tar zxf "/root/Downloads/$2.tar.gz"
    cd "/root/Downloads/$2" || exit
    wget "$6" || exit
    checksum_md5sum "$2" "$7" "$8"
    "/root/Downloads/$2/$2.SlackBuild"
    upgradepkg "/tmp/$1.tgz" || installpkg "/tmp/$1.tgz"
    ldconfig
    cp "/tmp/$1.tgz" /root/Downloads/
    cd /root/Downloads
    return 0
  fi
}

if test ! "$USER" = root ; then
  echo "Run this script as root, bye."
  exit
else
  cd /root || exit
  . /etc/profile || exit
  test -d /root/Downloads || mkdir /root/Downloads
  cd /root/Downloads
  unset i
  for i in $BUILD_ORDER ; do
    eval sbo_builder \
      "\$SBO_PKG_LOG_NAME_$i" \
      "\$SOFTWARE_NAME_$i" \
      "\$SOFTWARE_VERSION_$i" \
      "\$SBO_SOURCE_URL_$i" \
      "\$SBO_GPG_VERIFY_$i" \
      "\$SOFTWARE_SOURCE_URL_$i" \
      "\$SOFTWARE_ARCHIVE_MD5SUM_$i" \
      "\$SOFTWARE_ARCHIVE_NAME_$i"
  done
  if test "$?" = 0 ; then
    unset i
    for i in $BUILD_ORDER ; do
      eval \$SOFTWARE_README_PAGER_$i "\$SOFTWARE_README_$i"
    done
    unset i
  fi
fi
```

</div></details>

# パッケージング関連資料
Building A Package - SlackWiki
https://www.slackwiki.com/Building_A_Package

Writing A SlackBuild Script - SlackWiki
https://www.slackwiki.com/Writing_A_SlackBuild_Script

Slack-desc - SlackWiki
https://www.slackwiki.com/Slack-desc

Slackdesc: A tool for generating slack-desc files.
http://slack-desc.sourceforge.net/

slackdesc 導入スクリプト
https://gitlab.com/earthsimilarityindex/aquasuika-et-cetera/blob/master/install_slackdesc-0.02.sh
https://gitlab.com/earthsimilarityindex/aquasuika-et-cetera/raw/master/install_slackdesc-0.02.sh

パッケージ | 逆襲のSlackware
https://slackware.jp/package.html

Slackware14.1でソースからパッケージを自作する - クロの思考ノート
http://note.kurodigi.com/slackware141-makepkg/

SlackBuilds.orgにSlackBuildスクリプトを投稿する - クロの思考ノート
http://note.kurodigi.com/sbo-submit/

Slackwareのパッケージ管理 - slackware @ 日本語ウィキ - アットウィキ
https://www51.atwiki.jp/slackware/pages/20.html

Slackware Linuxのソフトウェア - Akionux-wiki
http://ja.akionux.net/wiki/index.php/Slackware_Linux%E3%81%AE%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2

Slackware Linux 14.1のインストール#パッケージのインストール - Akionux-wiki
http://ja.akionux.net/wiki/index.php/Slackware_Linux_14.1%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB#.E3.83.91.E3.83.83.E3.82.B1.E3.83.BC.E3.82.B8.E3.81.AE.E3.82.A4.E3.83.B3.E3.82.B9.E3.83.88.E3.83.BC.E3.83.AB

Slackwareをアップグレードする話 – エンジニアブログ「INAP流」
https://www.inap.co.jp/internapsway/?p=152

# TODO
 - 自動化スクリプトテンプレートを改良する。[^info]
 - SlackBuilds.org に日本語の表示・入力関連のビルドスクリプトを投稿する。
 - 可能な範囲で中文や한국어の表示・入力関連のビルドスクリプトも投稿する。
 - 拙作各種スクリプトのリファクタリングを行う。ARM や i386 にも対応させる。
 - ibus-mozc 及び uim-mozc のインストールスクリプトを書く。
 - [scim-skk](https://ja.osdn.net/projects/scim-imengine/releases/p3205) のインストールスクリプトを書く。
 - scim-console のインストールスクリプトを書く。
 - [libkkc](https://github.com/ueno/libkkc) 系の IME を移植する。
 - libfep を使って fcitx-fep を作ってみる。
 - scim-mozc を書けそうなら書いてみる。
 - Canna や Wnn のインストールスクリプトを書いてみる。
[^info]: とりあえず、変数で目的のソフトの *.info ファイルを指定するだけで良いようにしたい。