ターミナル上で操作するなら入れておきたいTmux。VPSにも入れておけば不意にSSH接続が切れても安心です。
今回はcrostini/croutonの両方で導入できたので、共通の手順として記しておきます。
また、chromebookならではのターミナルアプリの設定についてもご紹介します。
Debianの場合、現時点ではaptで最新のTmuxをインストールできます。ただしそのためには、stable-backports
リポジトリを追加しておく必要があります。
Debian -- stretch の tmux パッケージに関する詳細
パッケージ: tmux (2.3-4)
Debian -- stretch-backports の
パッケージ: tmux (2.8-2~bpo9+1 など)
公式(GitHub)では現在バージョン2.8なのでバックポートでは追いついてますね。
では早速インストールしていきましょう。
■ バックポートリポジトリをsources.list
に追加。(直接編集した方が早そうですが…)
sudo bash -c "echo 'deb http://ftp.jp.debian.org/debian stretch-backports main contrib non-free' >> /etc/apt/sources.list "
参考
■ 更新 & インストール
sudo apt update && sudo apt install -t stretch-backports tmux
バックポートからインストールする場合には-t
オプションで明示しなければなりません。
■ バージョン確認
$ tmux -V tmux 2.8
最新です!
これで完了。簡単ですね。aptのありがたみを感じます。
バックポートは普段使わないと思うのでコメントアウトしててもいいでしょう。(直接編集した方がry)
sudo sed -ri 's/(^.*backport.*$)/# \1/' /etc/apt/sources.list
また使う時は
sudo sed -i '/backport/s/# //g' /etc/apt/sources.list
せっかくなのでGitHubのソースファイルからビルドしてみましょう。手順はREAD MEのまんまです。
$ sudo apt install libevent-dev libncurses5-dev make autoconf automake pkg-config git
$ git clone https://github.com/tmux/tmux.git
$ cd tmux
$ sh autogen.sh
$ ./configure && make
これで完了。後はEclipseの時のように/optにでもmvしてパスを通せばいいでしょう。
私は依存パッケージのインストール時にちょっと失敗した(以下詳述)のが嫌になって、一応動くことを確認した後に消しました。やっぱりaptは偉大なり。
Tmuxはlibevent 2.x.とncursesに依存しています。とREAD MEに書いてあります。上の手順でも最初に依存パッケージをインストールしていますが、実はlibncurses5-dev
の前にlib64ncurses5-dev
をインストールしたのでした。
するとインストール時にgccやx11パッケージを消したり、インストールが完了しなかったり、その後apt installしようにも謎のエラーが出たりと、しっちゃかめっちゃか。
■ その時のログ(/var/log/apt/history.log)がこちら
Start-Date: 2018-12-24 23:13:15 Commandline: apt install lib64ncurses5-dev Requested-By: username (1000) Install: linux-libc-dev:i386 (4.9.130-2, automatic), libc6-dev:i386 (2.24-11+deb9u3, automatic), libncurses5:i386 (6.0+20161126-1+deb9u2, automatic), libtinfo5:i386 (6.0+20161126-1+deb9u2, automatic), libncurses5 -dev:i386 (6.0+20161126-1+deb9u2, automatic), libtinfo-dev:i386 (6.0+20161126-1+deb9u2, automatic), libgpm2:i386 (1.20.4-6.2+b1, automatic), lib64ncurses5-dev:i386 (6.0+20161126-1+deb9u2), libc6-dev-amd64:i386 (2 .24-11+deb9u3, automatic) Remove: libx32itm1:amd64 (6.3.0-18+deb9u1), libc6-dev-x32:amd64 (2.24-11+deb9u3), libx32quadmath0:amd64 (6.3.0-18+deb9u1), cpp-6:amd64 (6.3.0-18+deb9u1), cpp:amd64 (4:6.3.0-4), libx32gcc1:amd64 (1:6.3.0-18+deb9u1 ), gcc:amd64 (4:6.3.0-4), libx32gcc-6-dev:amd64 (6.3.0-18+deb9u1), x11-session-utils:amd64 (7.7+2+b1), libx32cilkrts5:amd64 (6.3.0-18+deb9u1), libc6-x32:amd64 (2.24-11+deb9u3), libx32asan3:amd64 (6.3.0-18+deb9u1) , gcc-6:amd64 (6.3.0-18+deb9u1), gcc-multilib:amd64 (4:6.3.0-4), xorg:amd64 (1:7.7+19), libx32ubsan0:amd64 (6.3.0-18+deb9u1), x11-xserver-utils:amd64 (7.7+7+b1), lib32gcc-6-dev:amd64 (6.3.0-18+deb9u1), libx32gomp 1:amd64 (6.3.0-18+deb9u1), libx32atomic1:amd64 (6.3.0-18+deb9u1), gcc-6-multilib:amd64 (6.3.0-18+deb9u1), libx32stdc++6:amd64 (6.3.0-18+deb9u1) Error: Sub-process /usr/bin/dpkg returned an error code (1) End-Date: 2018-12-24 23:13:20
■ ターミナルの様子がこちら
lib64ncurses5-dev:i386 : 依存: lib64c-dev:i386
E: 未解決の依存関係です。'apt --fix-broken install' を実行してみてください (または解法を明示してください)
言われたとおりsudo apt --fix-broken install
をしても…
dpkg: アーカイブ /var/cache/apt/archives/libc6-dev-amd64_2.24-11+deb9u3_i386.deb の処理中にエラーが発生しました (--unpack):
'/usr/include/bits' を上書きしようとしています。これはパッケージ libc6-dev-i386 2.24-11+deb9u3 にも存在します
処理中にエラーが発生しました:
/var/cache/apt/archives/libc6-dev-amd64_2.24-11+deb9u3_i386.deb
E: Sub-process /usr/bin/dpkg returned an error code (1)
その後はapt
コマンドで(search以外)何をしても上記エラーapt search libc6
してインストール済みの以下が悪いのかと思い、
libc6-dev-i386
libc6-i386
libc6-x32
sudo dpkg --purge libc6-dev-i386 libc6-i386 libc6-x32
で削除。改めてsudo apt --fix-broken install
したら直ってました。
で、原因を推測するにlib64ncurses5-devが依存しているlibc6-amd64が、既にインストールされていたlibc6-dev-i386などと競合してしまったのだと思います。(だとしたら既存のパッケージを削除したのはまずかったか…?)
付け加えるとこの現象が生じたのはcrouton上なので、本当にlib64ncurses5-dev
が危険なのか、それともcoroutonとの相性が悪かったのかは分かりません。(crostiniではlibc6-dev-i386などのパッケージはインストールされていませんでした。)
いまいちすっきりしないまま、今後のために記録だけ残しておきます。
を簡単にまとめようと思い、しばらくman pageとにらめっこしてましたが諦めました。既に優れた記事が沢山あるのでそれらを参照するのがよいでしょう。最低限tmux lscm
(サブコマンド一覧)とtmux lsk
(キーバインド一覧)を覚えておけばなんとかなります。
設定ファイルについては達人に学ぶ.tmux.confの基本設定 - Qiitaが大変参考になりました。というかほぼパクリました、ありがとうございます!ただし、バージョンによって微妙に設定の仕方が変わったりするので、丸々コピペして動かないって時はやはりman pageを見る羽目になるでしょう。
例えば達人に学ぶ.tmux.confの基本設定 - Qiitaでの以下のような記述は、
# ウィンドウリストの色を設定する setw -g window-status-fg cyan setw -g window-status-bg default setw -g window-status-attr dim # アクティブなウィンドウを目立たせる setw -g window-status-current-fg white setw -g window-status-current-bg red setw -g window-status-current-attr bright
このように書き換え可能です。(上のままでも動きます)
# ウィンドウリストの色を設定する
setw -g window-status-style fg=cyan,dim
# アクティブなウィンドウを目立たせる
setw -g window-status-current-style fg=white,bg=red,bright
また、上のような従前の記述で設定しても、tmux showw -g
では書き換え後のように最新の書式で表示されます。
通常ターミナル内でbashを起動すると、それは現在のbashプロセスの子孫プロセス(非ログインシェル)になります。他方で、Tmuxでwindowやpaneを作成するとそれらは全てTmuxサーバープロセスの子プロセスとしてログインシェルとなります。
実際に見てみましょう。まずは普通にいくつかbashを起動してみます。
ここで一番上にある-bash(PID:538)がログインシェルで、その子孫は非ログインシェルです。
ログインシェル(login shell)とは、0 番目の引き数の最初の文字が - であるシェル、または --login オプション付きで起動されたシェルのことです。
次に、Tmuxでいくつかpaneを作成したときのpsコマンドの様子です。
全てのpaneが-bashのログインシェルですね。
ログインシェルの場合には、bashの設定ファイルのうち/etc/profileや~/.profileなどから読み込みます。ということは、Tmuxではwindowやpaneを新規作成する度に都度これらの読み込みを行うということなんですね。
まぁだからなんなのという話なんですが、これによってfcitxを起動する記述を少々変更しました。よろしければ合わせてご覧ください。
また、このようなTmuxの挙動は度々物議を醸すようで、以下のようなやり取りがありました。結論としては使い方次第(非ログインシェルに変更も可能)といったところだとなんでしょうが、個人的にはこのままでもいっかなって感じです。こまけぇこたぁ。
参考
さて、Tmuxを導入してターミナルがいい感じになったところで、次に芽生える衝動は「背景画像付けたい!」ですよね。ですよね!
他にもフォント変えたいとか、文字色・背景色変えたいとか、ショートカットキー変えたいとか色々出てくると思います。
それらは全て「プロファイル設定」画面で変更可能です。
その前にまずはcroutonの実行環境をご紹介しましょう。Crosh Windowをお使いの方も多いかと思いますし、私も今まで使ってましたが、最近調子が悪かったのでcroshページのショートカットに変更しました。
ただまぁ、Crosh Windowにしろcroshページのショートカットにしろ、内側ではSecure Shell Appが動いているので以下の設定方法は同じです。
早速設定変更していきましょう。croutonやcrostiniのターミナルがアクティブな状態でCtrl + Shift + Pを押すと「プロファイル設定」画面が表示されます。
特段説明は不要だと思いますが、cssで見た目を制御するのはさすがchromeOSって感じですね。
background-image欄に記述します。私は画像を Google Photosにアップしといて画像URLとしました。ローカルファイルのパスを指定しても駄目っぽいですが、なにか方法があるんだろうか。以下自分用メモ。
■ crostini
linear-gradient(to bottom, hsla(360, 100%, 5%, 0.85) 0%, hsla(240, 100%, 5%, 0.85) 100%),url(https://...)
■ crouton
radial-gradient(circle at bottom right, transparent, hsla(0, 0%, 0%, 1) 300px),url(https://...)
既にcrostiniのターミナル画像が出ちゃってますが、ご存知の通り富嶽三十六景の赤富士です。浮世絵に限らず多くの絵画がPublic Dmainとして世界の美術館のサイトで公開されてたりします。
だいぶニッチな需要だと思いますが、英字キーボードのchromebookの場合ctrl + spaceで英語⇔日本語の入力方法を切り替えます。ターミナル入力中はこのショートカットがデフォルトでは無効ですが、keybinds欄で設定できます。
{
"Ctrl-Shift-Space": "PASS",
"Ctrl-Space": "PASS"
}
参考
今回はTmuxのインストールとターミナルアプリケーションの設定を中心にまとめました。本件とは直接関係ないですが、Tmuxの仕様をきっかけにfcitxを起動する記述を変更するにあたって、cronやsystemdについてより詳しく知ることができました。
デスクトップ環境があればターミナルエミュレータの選択肢は様々ありますが、初学者の私としてはデフォルトのターミナルでTmuxが使えたら十分です。その点においては、そもそもchromebookの完成度が高いといっても過言ではないのではないでしょうか。(マックやウィンドウズを触ってないので過言かも知れませんが…😅 今後もchromebookで頑張っていこうと思います。)
Twitterでシェア Facebookでシェア
chromebook で開発環境の構築(Crostini と時々Crouton)<br>その③Tmux, ほかターミナルカスタマイズ
chromebook で開発環境の構築(Crostini と時々Crouton)<br>その②Eclipse, Tomcat
Java 2
Linux 3
R 1
docker 1
python 1
書きかけ(1) DataCamp Light(1) paizaio(1) 備忘録(1)
arakaki (7)
コメント
承認待ちのコメント 6 年, 3 ヶ月 前
承認待ちのコメント 6 年, 3 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 2 ヶ月 前
承認待ちのコメント 6 年, 1 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 9 ヶ月 前
承認待ちのコメント 5 年, 8 ヶ月 前
承認待ちのコメント 5 年, 8 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 5 年, 4 ヶ月 前
承認待ちのコメント 3 年, 2 ヶ月 前
承認待ちのコメント 3 年, 2 ヶ月 前
承認待ちのコメント 3 年 前
承認待ちのコメント 3 年 前
承認待ちのコメント 2 年, 8 ヶ月 前
承認待ちのコメント 2 年, 6 ヶ月 前
承認待ちのコメント 2 年, 4 ヶ月 前
承認待ちのコメント 2 年, 3 ヶ月 前
承認待ちのコメント 1 年, 6 ヶ月 前
承認待ちのコメント 2 ヶ月, 1 週間 前
承認待ちのコメント 1 ヶ月, 1 週間 前
新しいコメント