Gatewayにtmuxが無いので、tmux入れて、tmuxするメモ

## About Tmux

https://github.com/tmux/tmux

- リモートワークで、作業中にSSHセッションきれたら困るよね。
- いろんなパソコンから作業状態を一瞬で復活させたいよね。
    -　それこそ出先からでも作業状態にアクセスしたいよね。

```plantuml

@startuml

any_my_env_client->Public_VPS: SSH
Public_VPS->gateway: ProxyCommand SSH over IPSec VPN

any_my_env_client<--->Public_VPS:切れる可能性！！！（to インターネット）
Public_VPS<--->gateway:少し切れる可能性（上位網内）\nVPS~TokyoIntraGW~ChibaIntraGW~OrgGw

gateway->Many_DevServers: SSH on tmux(keep-session) **ここ！**
gateway<--->Many_DevServers:切れにくそう（LAN内）

@enduml

```



→ tmux使おう。

### tmuxがない...
 
```shell-session
~ tmux
zsh: command not found: tmux
```

よし入れよう。

#### dependencies.

- libevent2.x https://github.com/libevent/libevent/releases/latest
- ncurses https://invisible-mirror.net/archives/ncurses/


## Manually Install

sucess: 2020-11-16

```bash
mkdir workspace
cd workspace

wget https://github.com/tmux/tmux/releases/download/3.1c/tmux-3.1c.tar.gz
wget https://github.com/libevent/libevent/releases/download/release-2.1.12-stable/libevent-2.1.12-stable.tar.gz
wget https://invisible-mirror.net/archives/ncurses/ncurses-6.2.tar.gz

tar zxf *

pushd libevent-2.1.11-stable

./configure --prefix="${HOME}/.local" && make && make install

popd

pushd ncurses-6.2

./configure \
  --prefix="${HOME}/.local" \
  --with-pkg-config-libdir="${HOME}/.local/pkgconfig" \
  --enable-pc-files \
  --wht-termlib && make && make install

popd

pushd tmux-3.1c

PKG_CONFIG_PATH="${HOME}/.local/lib/pkgconfig"
LDFLAGS="-L${HOME}/.local/lib $LDFLAGS"
CFLAGS="-I${HOME}/.local/include $CFLAGS"

export PKG_CONFIG_PATH LDFLAGS CFLAGS

./configure --prefix="${HOME}.local" && make && make install

popd

export LD_LIBRARY_PATH="${HOME}/.local/lib:${LD_LIBRARY_PATH}"
```

### `/tmp/tmux-1000/default`などを勝手に削除されてセッション落ちてしまう。

変える。

```shell
d="${HOME}/.cache/tmux-tmp/"
mkdir -p $d
export TMUX_TMPDIR="$d"
```

## .tmux.conf

```tmux

# Basic Knowledgement
#
## `set` aliased from set-option`
### `-g`    ... Global(Define to Session)
### `-s`    ... Server(Define to ServerProcess, No-Rewrite by Window/Session)
### `-w`    ... Window(Applied a Window)
### `-w -g` ... Window Global(Applied all Windows)
## `set-window-option` aliased `setw`

######################################################
# Global Configuration

# プレフィックスキーをCtrl+b -> Ctrl+gへ
set -g prefix C-g

bindkey C-g send-prefix
unbind-key C-b # unbind default prefix

### ウィンドウの開始音楽
set -g base-index 1

### マウス操作許可
set -g mouse on

### ステータスバー表示
set -g status on

### vi入力法
set -g mode-keys vi

### ペイン開始番号
setw -g pane-base-index 1

### デフォルトシェルの設定
set-option -g default-shell /bin/zsh

### 256色対応
set-option -g default-terminal screen-256color
set -g terminal-overrides 'xterm:colors=256'

#############################
# ステータスバーに関する設定
#
# $(shellCmd) ... 標準出力最上行
# #[Attributes] ... 色や属性(e.g. fg=colour255 , #[bold], #[dim])
# Attribute> bold, dim, underscore, blink, reverse, hidden, italics, default
#------------------------------------
# #S ... SessionName, ## ... Escaped '#'
# #H ... HOSTNAME ,   #h ... HOSTNAME(without LOCALHOST)
# CurrentWindow: #F ... Flag,     #I ... Index  #W ... Name
# CurrentPein:   #D ... Identify, #P ... Index, #T ... Title
#
# Included: strftime, #[INT][OPTION] ... INT=Max_Character
#
# %Y/%m/%d(%a) %H:%M ""

set-option -g status-position top     # トップ表示
set-option -g status-justify "centre" # センタリング
set-option -g status-bg "colour238"   # 背景色
set-option -g status-fg "colour255"   # 文字色


## ステータスバー左側表示設定
set-option -g status-left '#{prefix_highlight} #H:$M - %m/$d(%a)'
set-option -g status-left-length  90  # 左長

## ステータスバー右側表示設定
set-option -g status-right '#{cpu_icon} #{cpu_percentage}(#{cpu_temp}) #{ram_icon} #{ram_percentage} #{online_status} #{net_speed}'
set-option -g status-right-length 90  # 右長

# ウィンドウの設定
set -g window-status-current-fg red # アクティブなウィンドウを目立たせる
set -g window-status-current-bg
set -g window-status-current-attr bold # 太くする
set -g

# 拡張機能

# TPM - https://github.com/tmux-plugins/tpm
# git Cloneして、Ctrl+g（Prefixキー） -> Iでインスコ、Ctrl+g -> Uでアプデ
#> git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm

set -g @plugin 'tmux-plugins/tpm'

####

set -g @plugin 'tmux-plugins/tmux-cpu'
set -g @plugin 'tmux-plugins/tmux-yank'
set -g @plugin 'tmux-plugins/tmux-resurrect'
set -g @plugin 'tmux-plugins/tmux-pain-control
set -g @plugin 'tmux-plugins/tmux-online-status'
set -g @plugin 'tmux-plugins/tmux-sidebar'
set -g @plugin 'tmux-plugins/tmux-prefix-highlight'

####

# tmux-net-speedの設定
set -g @plugin 'tmux-plugins/tmux-net-speed'
set -g @download_speed_format "%10s"
set -g @upload_speed_format "%10s"
set -g @net_speed_format "D:%10s U:%10s"

####

run '~/.tmux/plugins/tpm/tpm'

```