初めてのQiita投稿になります。
文才がないのでおかしな文章になる場合がありますが、ご了承ください。
また、Markdown記法に慣れていないのでデザイン的におかしいところもございます。ご了承ください。
今回行うこと
- AndroidにTermuxを導入する
- Termuxのシェルをzshに変更する
- Powerline-Goを導入する
このような方におすすめ
Androidでシェル使うし普段LinuxとかでPowerline-Go使ってるけど、わざわざQemuとかでLinux仮想立ててするほどでもないなー--と思ってる人
必要なもの
- Androidスマートフォン or タブレット
※今回はXperia XZ (SO-01J、Android 7.0、root未取得)を使用しました。 - Termux (Google Play版ではなく必ず公式GitHub or F-Droidのものを使うこと)
※ 公式GitHub Releases:https://github.com/termux/termux-app/releases
※以下root権限がある場合
- ファイルマネージャー (root直下が見えるもの)
root権限があると各種ファイルの確認、編集が楽になる。
導入方法
・Termuxの導入
-
公式GitHub or F-DroidからTermuxをダウンロードする。
Google Playにも公開されているが、長期間メンテナンスされておらず不具合が多々あるので使用すべきではない。 -
Androidの設定で提供元不明のアプリインストールを許可しておく。
-
ダウンロードしたapkを通常通りインストールする。
-
Termuxを起動する。
初回はbootstrapのインストールが入る。 -
ソースをアップデートする
$ pkg update
$ apt update
$ apt upgrade
Termuxではソース管理にAPTを使用しているため、Debian系列のLinuxディストリビューションを使用したことのある人は使い勝手はわかると思う。
なおpkgとaptで2回ソース・パッケージ更新を行っているが、Termux上ではどうもpkgで更新されるソースとaptで更新されるソースがわずかに違うようで、パッケージをインストールする際にaptでは見つからないのにpkgでは見つかる、なんてことがある。そのため、念のため2回更新を行っている。
大半の場合は1回目のpkg updateで更新が終わる。
これでTermux自体の最低限の導入が完了した。
・シェル変更
正直シェルなんて人の好みなので無理にデフォルトのbashから変える必要はない。
しかし、macOSもCatalinaからzshだし、最近の流れ的にも主流はzshらしいので今回の場合は変更しておく。
bashでもPowerline-Goは使えるので問題ない(いじるファイルが変わるだけ)。
zshをインストールする
$ apt install zsh
デフォルトのシェルをzshに変更する
$ chsh -s zsh
この状態で一度Termuxを終了する。
・Powerline-Goを導入する
内部ストレージへアクセスできるようにする
$ termux-setup-storage
ストレージへの許可を求められるので許可して再度コマンドを実行する。
/data/data/com.termux/files/homeに/sdcardへのシンボリックリンクが作成される。
GoとGit、vimをインストールする
$ apt install golang git vim
vimに関しては好みのエディタがあればそれでも大丈夫。
which go
で確認できるが、通常/data/data/com.termux/files/usr/bin/go
にGoはインストールされる。
PATH、GOPATHを通す
$ touch ~/.zshrc
$ vim ~/.zshrc
# 記述内容
export GOPATH=/data/data/com.termux/files/home/go
export PATH=$GOPATH/bin:$PATH
# 適用
source ~/.zshrc
ここではvimを用いて記述していますが、echo等で直接記述しても構わない。
(echoで記述する方法に慣れていないんです...)
また、正しく.zshrc
が作成されたかどうかはls -a
で確認できる(基礎中の基礎だが...)。
Powerline-Goをインストールする
$ go install github.com/justjanne/powerline-go@latest
GOPATH/bin
(今回の場合だと/data/data/com.termux/files/home/go/bin
)にインストールされる。
Powerline-Goの設定を書き込む
~/.zshrc
に設定を書き込む。
$ vim ~/.zshrc
# 記述内容
function powerline_precmd() {
PS1="$($GOPATH/bin/powerline-go -error $? -jobs ${${(%):%j}:-0})"
# Uncomment the following line to automatically clear errors after showing
# them once. This not only clears the error for powerline-go, but also for
# everything else you run in that shell. Don't enable this if you're not
# sure this is what you want.
#set "?"
}
function install_powerline_precmd() {
for s in "${precmd_functions[@]}"; do
if [ "$s" = "powerline_precmd" ]; then
return
fi
done
precmd_functions+=(powerline_precmd)
}
if [ "$TERM" != "linux" ] && [ -f "$GOPATH/bin/powerline-go" ]; then
install_powerline_precmd
fi
# 適用
$ source ~/.zshrc
※Termuxの再起動でも可。
※Go導入以降のここまでの手順は公式にのっとったものなので、「俺はbashなんだ」とか「私fishなんですけど」って人は公式GitHubを参考にして記述を変えてほしい。
・公式GitHub:https://github.com/justjanne/powerline-go
すると文字化けする。
Powerline-Goを使ったことがある人ならわかると思うが、これは単純に適したフォントが適用されていないからである。
Termuxの場合、Termux-Styleを導入することでフォントを指定できる。
フォントの指定
$ cd
# termux-styleのリポジトリをクローン。
$ git clone https://github.com/adi1090x/termux-style
$ cd termux-style
# インストールスクリプトを実行。
$ ./install
# 作業フォルダの削除
$ cd ..
$ rm -rf termux-style
Termux-styleをインストールしたら実行してフォントを変更する。
Source-Code-Proがおすすめ。
$ termux-style
┌──────────────────────────────────────────────────┐
│░▀█▀░█▀▀░█▀▄░█▄█░█░█░█░█░░░░░█▀▀░▀█▀░█░█░█░░░█▀▀░░│
│░░█░░█▀▀░█▀▄░█░█░█░█░▄▀▄░▄▄▄░▀▀█░░█░░░█░░█░░░█▀▀░░│
│░░▀░░▀▀▀░▀░▀░▀░▀░▀▀▀░▀░▀░░░░░▀▀▀░░▀░░░▀░░▀▀▀░▀▀▀░░│
└──────────────────────────────────────────────────┘
[*] By- Aditya Shakya // adi1090x
[C] Colors (89)
[F] Fonts (20)
[R] Random
[I] Import
[A] About
[Q] Quit
[Select Option]: F
[1] Anonymous-Pro
[2] Courier-Prime
[3] DejaVu
[4] Fantasque
[5] Fira
[6] FiraCode
[7] GNU-FreeFont
[8] Go
[9] Hack
[10] Hermit
[11] Inconsolata
[12] Iosevka
[13] LiberationMono
[14] Meslo
[15] Monofur
[16] Monoid
[17] OpenDyslexic
[18] Roboto
[19] Source-Code-Pro
[20] Ubuntu
[Select font (1 to 20)]: 19
[*] Applying Fonts...
[*] Reloading Settings...
[*] Applied Successfully.
Android 7以下の環境での対処法について
先ほどのスクリーンショットでは
WARNING: linker: /data/data/com.termux/files/home/go/bin/powerline-go: unsupported flags DT_FLAGS_1=0x8000001
と警告が表示されてしまっているが、これはAndroid 7以下で動作させると表示されるエラーメッセージのようだ。
elfとかいうものが悪さをしているらしく、Android 7以下の環境では対処する必要がある。
※該当Issue:https://github.com/termux/termux-packages/issues/4894
対処法
$ pkg install termux-elf-cleaner
$ termux-elf-cleaner ~/go/bin/powerline-go
まとめ
今回はAndroid上のTermuxにPowerline-Goを導入する方法を紹介した。
ググってもなかなかPowerline-GoをTermuxに導入している事例は少なく、またPowerline-Goの公式GitHubを見てもAndroid上のTermuxだとうまくいかない点などがあり、備忘録もかねて今回記事にまとめた。
Powerline-Go愛用者の皆様のお役に立てれば幸いだ。