Termuxを素早く設定

Android/ChromeOSをTerminalとして使えるTermuxですが、いつも設定するのが面倒なので、ここにメモします。

 - [(メモ) Chromebook向けのメモをこちらに](https://qiita.com/kujirahand/items/431e89524bd56098bde7)書きました。



# Termuxのインストール

まずは、自分で書いた記事をメモ。Termux上でPythonのインストール方法を紹介している。

- [AndroidでもPythonが使いたい - Termuxを始めよう](https://news.mynavi.jp/article/zeropython-59/)

手順は以下の通り

- Google PlayStoreでTermuxとTermux APIをインストール


# 内部ストレージにつなげる

Termuxの``~/``は``/data/data/com.termux/files/home``なので、内部ストレージにつなぐ方法。以下のコマンドを実行。

```
termux-setup-storage
```

これで、``~/``に``storage``ディレクトリができて、Downloadsなどに手軽にアクセスできる。

# 最低限必要なパッケージのインストール

```
pkg update
pkg install git vim wget tmux
```


# sshd の設定

Androidスマホの場合、小さな画面でやるの大変なので、sshdを設定してPCから設定を行いましょう。

あるいは、Chromebookの場合、Termuxで日本語入力ができません。そこで、sshdを起動して、別途Chrome拡張のSecure Shellを使ってTermuxにログインして作業します。すると、日本語が入力できます。

```
# sshdをインストール
pkg install openssh

# 公開鍵の作成
ssh-keygen -t rsa
```

何度かEnterキーを押してキーを作る。

なお、PC側でも公開鍵を作成する。そして作成して公開鍵をTermux側に登録します。

例えば、LINEやメールなどの方法で、PCの公開鍵の内容をスマホに送信して、Termux内の``~/.ssh/authorized_keys``に追記します。

そして、TermuxでIPアドレスを調べます。

```
ifconfig | grep inet
```

PC側で上記IPアドレス(例えば 192.168.0.5など)に接続できます。

Termuxにパスワードを設定します。

```
passwd
```

ただし、Termuxでは1024以下のポートが利用できないため、8022番ポートを使うようになっている。ログイン時には上記で指定したパスワードが必要です。

```
ssh hoge@192.168.0.5 -p8022
```

ChromebookでSecure Shellから接続する場合、最初にプライベートキーの~/.ssh/id_rsaを~/storage/downloadなどにコピーしておいて、Secure ShellのIDでそのファイルを選びます。


## クリップボードをAndroidと共有できるようにする

Androidとクリップボードを共有できると便利。[termux-apiのアプリ](https://play.google.com/store/apps/details?id=com.termux.api)をインストールし、その後、以下のコマンドを実行する。

```
pkg install termux-api
```

何かをコピーするには、以下のように書く。

```
termux-clipboard-set hoge
```

コピーしたテキストを表示するには、以下のようにする。

```
termux-clipboard-get
```


## 開発環境をインストール

その他、PythonとNode.js入れておけば、いろいろ便利だろうという感じ。

```
pkg install python nodejs
```


## GitHubに公開鍵を登録する

GitHubに公開鍵(``~/.ssh/id_rsa.pub``)を登録する。

公開鍵の内容は以下のようにして表示できるので、これをコピーして、GitHubの設定で追加する。

```
cat ~/.ssh/id_rsa.pub
```

そして、vimでプログラムを書きまくる。

## vimでクリップボードをAndroidと共有する

以下に書いてあるのだが、VimのクリップボードをAndroidと共有できる。Termux APIを有効にしてあることが前提。

 - https://stackoverflow.com/questions/56617429/i-cant-paste-to-vim-from-external-clipboard

具体的には、~/.vimrc に以下を追加する。

```vim:.vimrc
au TextYankPost * call system('termux-clipboard-set &', @")
function Paste(p)
    let sysclip=system('termux-clipboard-get')
    if sysclip != @"
        let @"=sysclip
    endif
    return a:p
endfunction
noremap <expr> p Paste('p')
noremap <expr> P Paste('P')
```


## termux-openでいろいろ開く

macOSでいうところのopenにあたるのが`termux-open`です。
これを使うと標準アプリでいろいろ開けます。

例えば、サーバーを起動しておいてIPアドレスを指定してChromeでアプリをブラウザ上で試したい場合など以下のようにかけます。

```sh
# IPアドレスを調べる
ifconfig | grep inet

# ブラウザでWebアプリを開く
termux-open http://192.168.0.5:8888
```

## なでしこ3を入れる

日本語でプログラムが作れる「なでしこ3」は入れておくべき(たぶん)。

```
# なでしこのリポジトリをクローン
git clone git clone https://github.com/kujirahand/nadesiko3.git
# あるいは以下
# git clone git@github.com:kujirahand/nadesiko3.git

# インストール
cd nadesiko3
npm install --production
# Web用のなでしこをビルド
npm run build
# サーバーを起動
npm start
```

するとAndroid側のWebブラウザ(localhost:3000)でプログラムを作れる。ただしChromebookの場合はアドレスが異なるので、`ifconfig | grep inet`で確認する。


## テキスト音楽サクラを入れる (2020/08/19 手順変わりました)

みんな、きっとAndroidで作曲したいはず。テキスト音楽「サクラ」を動かすには golang が必要。

```
pkg install golang
```

環境変数GOPATHを確認

```
cd `go env GOPATH`
pwd
mkdir -p src/github.com/kujirahand
cd src/github.com/kujirahand
```

リポジトリをクローン

```
git clone https://github.com/kujirahand/sakuramml-go.git
# あるいは ... git clone git@github.com:kujirahand/sakuramml-go.git
```

サクラをコンパイル

```
cd sakuramml-go
go build csakura.go
```

すると、csakuraというバイナリができる。ドレミのテキストで作曲して、MIDIファイルにコンパイルする。

```
./csakura a.mml
```

すると、a.midiができる。音楽を再生するには、以下のコマンドを実行。(ただしMIDIが再生できるかどうかは機種依存。IdeaPad Duetは再生できず。）

```
termux-media-player play a.mid
```


### bashの設定ファイル

bashの設定ファイルを作る。

```
# 各種バッチを保存するディレクトリを準備
mkdir ~/bin

# 設定ファイルを編集する
vi ~/.bashrc
```

以下のような設定を書く。

```
# ls
alias ll='ls -laF'
alias l='ls'
# path
export PATH=$PATH:$HOME/bin
# なでしこ3にパスを通す
export PATH=$PATH:$HOME/repos/nadesiko3/bin
# テキスト音楽サクラ用
GOPATH=`go env GOPATH`
PATH=$PATH:$GOPATH/src/github.com/kujirahand/sakuramml-go
```

設定を反映させる。

```
source ~/.bashrc
```