Ubuntuインストール後に行う設定全て

この記事では、Linux Ubuntuをインストールした後に行う設定を端から端まで詰め込んで紹介する。
この記事を書き始めた動機は自分用の設定メモを作りたい、というものである。
人それぞれ必要のない設定や合わない設定があると思う。
取捨選択しながら設定してほしい。
自分流の環境構築をまだ確立していない初心者には特におすすめの記事だ。
なお、この記事は私が使う環境の変化に合わせて変更を行うことがある。

# Version
```
Ubuntu 22.04.1 LTS
```

# Software Update

Ubuntuをインストールするとすぐにこのようなものが表示されるはずだ。
バグフリーでセキュリティ万全なUbuntuライフを過ごすために毎回承諾してアップデートしておこう。

![Screenshot from 2022-12-23 13-30-07.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/28357b8a-761b-7de8-0ac9-650cf0755599.png)

# Chromeのインストール

Windowsと同様、最初にするのはブラウザのインストールである。
この記事をいつものブラウザで表示するためにもやってほしい。

## インストール

私が使うのは[Vivaldi](https://vivaldi.com/ja/)だが、ほとんどの人はChromeを使うはずだ。
インストール方法を案内する。
なお、Ubuntuに最初から入っているのはFirefoxだ。
Firefoxに最初で最後の仕事をさせてあげよう。
`ubuntu chrome`と検索するのだ。

次のようなページが開けたら、指示に従ってChromeをダウンロードしよう。
あなたの環境に合ったものをダウンロードできるはずだ。

![Screenshot from 2022-12-23 13-31-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/a1a678a4-b050-d093-b771-34b4cb7a711b.png)

Ubuntuでは`.deb`のパッケージでインストールする。
上を選ぼう。

![Screenshot from 2022-12-23 13-31-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/39d93e7a-d738-4323-00cd-81360fbaef7f.png)

次のようにしてダウンロードしたパッケージを使ってChromeをインストールする。
インストールした時期などによってファイル名は違うはずだ。
適宜変更してほしい。

```
sudo apt install ./Downloads/google-chrome-stable_current_amd64.deb
```

これでインストールは完了だ。

## 起動

さあChromeを起動しよう。
Windowsのようにデスクトップにショートカットが追加されたりはしない。
`Windows`キーを押してアプリ検索を行い、`Google Chrome`を見つけて起動する。

![Screenshot from 2022-12-23 13-52-04.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/148552c8-32ff-c53a-171a-fa8aea31acf7.png)

# タブメニューのカスタマイズ

Chromeのようによく使うものはタブメニューに登録しよう。
ソフトウェアを起動後、タブメニューのアイコンを右クリックすると次のようなメニューが現れる。
`Add to Favorites`でお気に入り登録しよう。

![Screenshot from 2022-12-23 13-54-35.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/52dc6789-be76-5bac-66de-dd552666171a.png)

なお、すでにお気に入り登録されているものを右クリックすると次のようなメニューが現れ、`Remove from Favorites`でお気に入りから外すことができる。
FirefoxやThunderbirdなど、いらないものはこれで追放しよう。

![Screenshot from 2022-12-23 13-54-21.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/a8c2d600-05c7-afbd-71a9-560a56a69a39.png)

# Caps LockをCtrlにする [^1]
Caps Lockはほとんど使われないくせにホームポジションのすぐとなりに堂々と居座るふてぶてしいキーである。
Ctrlにその座を譲れ。そしていなくなれ。

やり方は単純で設定ファイルをいじるだけだ。

そのためにはターミナルの起動が必要だ。
検索して見つけよう。

![Screenshot from 2022-12-23 13-38-17.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/eba21b60-9fcb-9dbf-4a04-7298ae3ef84e.png)

次のコマンドでファイルを開き、編集する。
誰でも触れるnanoで話を進めるが、もちろんvimでもVSCodeでも問題ない。

```
sudo nano /etc/default/keyboard
```

nanoが入っていない場合は次のコマンドでインストールする。

```
sudo apt install -y nano
```

ファイルの中身は次の通りである。

```
# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS=""

BACKSPACE="guess"
```

ここで、`XKBOPTIONS=""`を`XKBOPTIONS="ctrl:nocaps"`に変更する。

変更したら`Ctrl-x` -> `y` -> `Enter`を押して保存して終了する。

再起動するか、次のコマンドを実行後、ログアウト、再ログインする。

```
sudo systemctl restart console-setup
```

これで押しやすいCtrlキーが手に入った。

# 日本語化 (英語設定の場合)

私はUSキーボードを使用している。
JISキーボードを使っていてすでに日本語化されている場合はこの章は無視して進めてほしい。
私は残念ながら今の段階では日本語を入力することができない。
日本語入力ができなければ満足に検索することもできないし、この記事を書き上げることもできない。
この記事は実際にインストールしながら書いているのだ。不便すぎる。
すぐに取りかかろう。

## fcitx-mozcのインストール [^2]

日本語を入力するためには`fcitx-mozc`をインストールするのがよい。

Ubuntuでは`apt`を利用してほしいものをインストールする。
Ubuntuをインストールしたばかりなのでまずアップデートから始める。
下のコマンドを実行しよう。

```terminal
sudo apt update
```

パスワードを求められるので、インストール時に設定したパスワードを入力し、`Enter`キーを押す。
パスワードを入力しても画面上には表示されない。

![Screenshot from 2022-12-23 14-01-48.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/8f7635fc-68ed-7400-4258-fb4194fbfc7c.png)

実行が終わったら`fcitx-mozc`をインストールしよう。
次のコマンドを順番に入力していく。

```terminal
sudo apt install -y fcitx-mozc
```

```terminal
im-config -n fcitx
```

```terminal
fcitx-autostart
```

`fcitx-configtool`を起動する。
ソフトウェアを起動するには、ソフトウェア検索から実行することもできるが、terminal上で起動することもできる。
やってみよう。

```terminal
fcitx-configtool
```

次のような画面が表示される。
`Keyboard-English(US)`は使用しない。
これにカーソルを合わせた上で、左下の`-`ボタンから削除しよう。

![Screenshot from 2022-12-23 14-13-24.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/4f23f9b0-4a57-930c-97b3-9de157bd73b2.png)

また、左下の`+`ボタンから`Mozc`を追加しよう。

![Screenshot from 2023-02-12 18-34-10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/1a5ad4c3-14c0-adde-7ee5-5f370d94c48c.png)


するとこのように`Mozc`だけが残る。

![Screenshot from 2022-12-23 14-13-32.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/07de3d22-368f-8a48-7011-e5d2598c94c9.png)

これで本当なら日本語入力ができるのだが、今はアルファベット入力のまま日本語入力に切り替えられない。
半角全角ボタンで日本語入力に切り替えられるが、USキーボードにはそのようなボタンはないからだ。
`Ctrl-Space`で切り替えられるようにしよう。
`Mozc Setup`を検索して起動する。

![Screenshot from 2022-12-23 14-14-31.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/99c9b358-86b9-8470-9a92-f7d0915dbf94.png)

起動すると次のような画面が出てくる。

![Screenshot from 2022-12-23 14-14-38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/3687deb8-6720-c39c-068c-f3f69545100d.png)

下の方の`Keymap style`の右にある`Customize...`を押すと次のような画面が出てくる。

![Screenshot from 2022-12-23 14-14-56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/657f8f13-85ab-6519-3da8-b5fcc51e2735.png)

それぞれの操作をどのキーバインドで実行するか設定する画面である。
`Hankaku/Zenkaku`と書かれた箇所を選択しよう。
次のような画面が出てくるはずだ。

![Screenshot from 2022-12-23 14-15-06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/7124e1a1-c9d0-6efc-1b49-9abc58e6ea74.png)

ここで自分が設定したいキーを入力する。
`Ctrl`キーを押しながら`Space`キーを押し、`OK`を選ぶ。


下記は今起動ているソフトは再起動しないと日本語入力できませんよ、ということを行っている。
もちろん`OK`だ。
![Screenshot from 2022-12-23 14-15-44.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/7c03b695-7b7e-5e51-b479-19bd4c4fd303.png)

これで一番下の`Apply`が押せるようになった。
`Apply`を押して`OK`しよう。

![Screenshot from 2022-12-23 14-16-50.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/a7c060cb-2848-5477-2fcd-883362215460.png)

これで日本語入力ができるようになっているはずである。
できない場合はパソコンを再起動しよう。

![Screenshot from 2022-12-23 14-19-49.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/162f31b7-a38d-daf8-5803-43d0ab2f231c.png)

やったーーーーー！！！これで記事が書ける！！

# スクリーンセイバーの無効化

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/985a833e-a7ce-887d-2e89-56a2ae834e2e.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/b997347b-d0b0-8c1a-82d6-66e2d02cd4c0.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/2bb06509-930e-60e4-250f-cad0c91cd602.png)


# 開発環境の整備

さて、開発に必要なものをインストールしていこう。
まだUbuntuがOSとしてまともに使えるようになっただけで、このパソコンは何も開発できないのだ。

ここから何が必要かは人によって違うだろうが、Gitは使うはずだ。

## Git及びGitHubのセットアップ

### Gitのインストール

次のコマンドを入力してGitをインストールしよう。

```
sudo apt install -y git
```

### ユーザネームの設定

`Your Name`の部分を自分の名前に変えて設定しよう。

```
git config --global user.name "Your Name"
```

名前が設定できたか確認する。

```
git config --global user.name
```

入力した自分の名前が表示されれば成功だ。

### メールアドレスの設定

`email@example.com`の部分を自分のメールアドレスに変えて設定しよう。

```
git config --global user.email "email@example.com"
```

メールアドレスが設定できたか確認する。

```
git config --global user.email
```

入力した自分のメールアドレスが表示されれば成功だ。

### GitとGitHubの接続 [^3]


GitHubに接続するにはHTTPSを使う方法とSSHを使う方法の２種類がある。
ここではSSHで接続するための設定を行う。

#### SSHキーの生成

`email@example.com`の部分を自分のメールアドレスに変えて実行しよう。
```
ssh-keygen -t ed25519 -C "email@example.com"
```

次のようにどこのキーを保存するか決めてほしいと言われる。
基本的にはデフォルトで構わない。
`Enter`キーを押して次に進もう。

```
Generating public/private ed25519 key pair.
Enter file in which to save the key (/home/asuha/.ssh/id_ed25519): 
```

次のように同じパスワードを２回入力する。
パスワードを設定しない場合は何も入力せず`Ener`キーを押せばよい。

```
Enter passphrase (empty for no passphrase): 
Enter same passphrase again:
```

これでSSHキーが作れたはずだ。
鍵の保存先が示される。

```
Your identification has been saved in /home/asuha/.ssh/id_ed25519
Your public key has been saved in /home/asuha/.ssh/id_ed25519.pub
```


#### SSHキーをssh-agentに追加

このままでは頻繁にパスワードの入力を要求されてしまう。
SSHキーを`ssh-agent`に追加しよう。

まず`ssh-agent`を起動する。

```
eval "$(ssh-agent -s)"
```

鍵の保存先を指定しよう。
自分でファイルパスを入力した場合は`~/.ssh/id_ed25519`の部分を書き換えてほしい。

```
ssh-add ~/.ssh/id_ed25519
```

これでパスワードの入力を省略できるようになった。

#### SSHキーをGitHubに追加する

`cat`コマンドで公開鍵をターミナルに表示する。
拡張子`pub`がついていることを確認してほしい。

```
cat ~/.ssh/id_ed25519.pub
```

これでファイルの中身が表示されるので、全てクリップボードにコピーする。

GitHubを開いて右上のアイコンをクリックして`Settings`を選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/9bd8b948-e4ae-222c-6412-2c30e2aa128c.png)

次に左側のメニューにある`SSH and GPG keys`を選択する。

![github.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/b0f7f086-1113-af6b-45d7-ed5c86d06cac.png)

`New SSH key`を選択する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/ae9da0bb-792b-7eee-94ed-7e8f35d89987.png)

すると次のような画面が現れるので、`Key`の部分に先程コピーした公開鍵を貼り付ける。
`Title`はどのパソコンの鍵かがわかるように自由につけよう。
おすすめは次のようにターミナルに表示されているユーザ名とホスト名の組み合わせをそのままコピペすることだ。(ホスト名だけでも良いだろう)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/e8c47a65-899c-da54-7057-05b623df8050.png)

私の場合は`asuha@asuha-HP-EliteDesk-800-G6-Tower-PC`である。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/c81e9329-5b69-fca7-31f5-65b367dc35dd.png)

コピペできたら`Add SSH key`を選択する。

#### GitHubへの接続をテストする

GitHubへ接続できるかテストしよう。

```
ssh -T git@github.com
```

表示される`ED25519 key fingerprint`がSSHキーを生成したときと同じものか確認するのが理想だが、面倒だ。
`yes`を押して続け、次のように表示されれば成功である。

```
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi Asuha-a! You've successfully authenticated, but GitHub does not provide shell access.
```

これでGitとGitHubが存分に使えるようになった！

## VSCodeのインストール

VSCodeはvim vs emacs論争を終わらせて覇権を取ったテキストエディタである。

[公式サイト](https://code.visualstudio.com/download)からパッケージをダウンロードしよう。
ダウンロードできたらインストールする。

```
sudo apt install ./Downloads/code_1.74.2-1671533413_amd64.deb
```

インストールは完了だ。

## Vimのインストール

ちょっとしたファイルの編集ならなんだかんだVimを使うことも多い。
インストールしておこう。

```
sudo apt install vim
```

## ターミナルのカスタマイズ

デフォルトでは自分にとっては使いにくい。
使いやすいようにカスタマイズしていく。
ここは好みの部分が大きいので、参考程度にしてほしい。

### zshのインストール [^4]

まずはzshのインストールから始める。
なぜzshを使うのかという疑問は次の記事を見て解消するよい。
[Bash vs. Zsh – differences you should know - FOSS Linux](https://www.fosslinux.com/58416/bash-vs-zsh-differences.htm)

次のコマンドでインストールする。

```
sudo apt install zsh
```

バージョンを確認しよう。`zsh 5.0.8`かそれ以上であればよし。

```
zsh --version
```

次のコマンドでzshをデフォルトのシェルに設定する。

```
chsh -s $(which zsh)
```

実行したらターミナルを再起動しよう。

起動時に次のような選択肢が出てくる。
特にこだわりがなければ`2`がおすすめだ。

```
This is the Z Shell configuration function for new users,
zsh-newuser-install.
You are seeing this message because you have no zsh startup files
(the files .zshenv, .zprofile, .zshrc, .zlogin in the directory
~).  This function can help you with a few settings that should
make your use of the shell easier.

You can:

(q)  Quit and do nothing.  The function will be run again next time.

(0)  Exit, creating the file ~/.zshrc containing just a comment.
     That will prevent this function being run again.

(1)  Continue to the main menu.

(2)  Populate your ~/.zshrc with the configuration recommended
     by the system administrator and exit (you will need to edit
     the file by hand, if so desired).

--- Type one of the keys in parentheses --- 
```


そして今zshを使っていることを確認する。

```
echo $SHELL
```

`/bin/zsh`のように出力されたら成功だ。
bashが使われているままであればパソコンを再起動して試してみよう。

これでzshのインストールは完了だ。

### Oh My Zshのインストール

Oh My Zshはzshのプラグイン等を管理するためのフレームワークだ。
zshをカスタマイズするなら必要になる。

次のコマンドでインストールしよう。

```
sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"
```

`curl`コマンドがインストールされていない場合は

```
sudo apt install curl
```

これでOh My Zshのインストールは完了だ。

### Oh My Zsh Theme

#### Oh My Zsh Themeの変更方法

Oh My Zshではテーマを簡単に変更できる。
デフォルトでは`robbyrussell`というテーマになっている。

次のように現在のディレクトリとブランチのみ表示されるシンプルなテーマだ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/568e5564-ebb5-a825-7b5f-0a7ae0644550.png)

[テーマ一覧](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)から自分に合ったテーマを探して導入してみよう。
好みのテーマを使えば気分も上がる。重要だ。

変更したいテーマを見つけたらテーマの名前をメモしておこう。

`.zshrc`を開く。

```
nano ~/.zshrc
```

Oh My Zshを入れた際に`2`を選んだので色々と書き込まれている。
`ZSH_THEME="robbyrussell"`の部分に変更したいテーマの名前を入れればテーマが変わる。
なお、`.zshrc`を編集したときはシェルを再起動するか`source ~/.zshrc`を実行する。
そうしなければ変更が反映されない。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/28f03609-f128-d9cd-ea4e-5e625ebd0123.png)


[テーマ一覧](https://github.com/ohmyzsh/ohmyzsh/wiki/Themes)の一番上の`af-magic`を試してみよう。
すると次のようにテーマが変わった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/91e33167-1f63-f132-44c0-4f6b20877e51.png)

なお、`.zshrc`にこのように書いてあるとおり、`random`と入れるとOh My Zshが読み込まれるたびにランダムにテーマを変えてくれる。

```
# Set name of the theme to load --- if set to "random", it will
# load a random theme each time oh-my-zsh is loaded, in which case,
# to know which specific one was loaded, run: echo $RANDOM_THEME
```

実際にやってみると次のようになんのテーマを読み込んだかまで教えてくれる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/3b6bcc44-bbad-7b19-46cc-d385809914dd.png)

また、`.zshrc`にはこんなことも書いてある。
`ZSH_THEME="random"`と設定したとき、さらに`ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )`を設定すると括弧内のテーマからランダムにテーマが選ばれる。
お気に入りのテーマが複数ある場合はこれを活用できる。

```
# Set list of themes to pick from when loading at random
# Setting this variable when ZSH_THEME=random will cause zsh to load
# a theme from this variable instead of looking in $ZSH/themes/
# If set to an empty array, this variable will have no effect.
# ZSH_THEME_RANDOM_CANDIDATES=( "robbyrussell" "agnoster" )
```

私はこの際に`powerlevel10k`を試してみようと思う。
詳しくは割愛する。
下記のサイトを参考にインストールしてほしい。
[romkatv/powerlevel10k: A Zsh theme](https://github.com/romkatv/powerlevel10k)

ちなみにインストールすると次のようになった。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/144bf414-4807-c27a-ddbe-50f8847dbd0b.png)

### Oh My Zsh Plugin

#### zsh-syntax-highlighting [^5]

`zsh-syntax-highlighting`は入力したコマンドを色付けしてくれるプラグインだ。

次のコマンドを順に実行して`zsh-syntax-highlighting`を導入する。

```
git clone https://github.com/zsh-users/zsh-syntax-highlighting.git
echo "source ${(q-)PWD}/zsh-syntax-highlighting/zsh-syntax-highlighting.zsh" >> ${ZDOTDIR:-$HOME}/.zshrc
```

さらに現在のシェルで`zsh-syntax-highlighting`を有効化する。

```
source ./zsh-syntax-highlighting/zsh-syntax-highlighting.zsh
```

すると次のように一番左のコマンドが緑色に色づいた。
また`pip install hoge`と入力すると`pip`が赤色になっている。
そのようなコマンドは存在しないという意味だ。
入力している途中でコマンドがインストールされていないことに気づけるので有用だ。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/f27a45dc-9a76-8a4e-6032-06a75f86cf61.png)

次のように文字列に色を付けることもできる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/e16d6514-3c99-4f3b-d5e4-ab6a0342a963.png)

#### zsh-autosuggestions [^6]

`zsh-autosuggestions`はコマンドの入力を予測してサジェストしてくれる。

まずリポジトリをクローンしよう。

```
git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions
```

あとは`.zshrc`の`plugins`に`zsh-autosuggestions`を追加するだけだ。

```
# 変更前
plugins=(git)
```

```
# 変更後
plugins=( 
    git
    zsh-autosuggestions
)
```

ターミナルを再起動しよう。
すると次のようにコマンドのサジェストが出てくるようになる。
前に入力したコマンドを覚えていてサジェストしてくれている。
サジェストは`->(右矢印キー)`や`Ctrl-f`で採用できる。


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/650ec39d-f228-afaf-cce1-ea684a075c75.png)

### tmuxのセットアップ
#### tmuxのインストール [^7]

`tmux`があればターミナルを分割できる。
いつも通り`apt`でインストールして起動しよう。

```
sudo apt install tmux
tmux
```

すると次のようにターミナル下部にtmuxのインフォメーションバー(?)が現れる。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/c1a6d849-c6a0-4123-fa5d-146b76b0c61c.png)

もしシェルの表示が白黒だった場合は`.tmux.conf`に`set -g default-terminal "xterm-256color"`を追加しよう。 [^8]

`tmux`は`Ctrl-b`のプレフィックスを押したあとにコマンドを実行する。
vimでいう`:`のように。

`Ctrl-b`のあとに`%`を押してみよう。
次のようにターミナルが左右に分割される。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/60e66f86-1f62-ffb6-293f-d586688683a3.png)

さらに続けて`Ctrl-b`のあとに`"`を押してみよう。
さらにターミナルが上下に分割された。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/6518eb06-d883-4f7c-a7ab-c5ab7d8a5806.png)

`Ctrl-b`のあとに`o`で分割されたターミナル(ペインという)を移動できる。
また、`Ctrl-b`のあとに`x`を押すことでペインを削除できる。

他にも機能がいっぱいあるので次の記事などを参考にしてほしい。
[tmuxチートシート - Qiita](https://qiita.com/nmrmsys/items/03f97f5eabec18a3a18b)

#### tmuxの自動起動 [^9]
tmuxは便利だが、ターミナルが立ち上がるたびに`tmux`と入力して起動するのは面倒だ。
ターミナルが立ち上がると同時にtmuxも起動できるようにしよう。
次の設定を`.zshrc`に追加する。
一番下に追加すればよいと思うが、`powerlevel10k`を使用していると`open terminal failed: not a terminal`と出て失敗した。
`.zshrc`の一番上に追加すると解決した。

```
# tmux auto start
# Adapted from https://unix.stackexchange.com/a/113768/347104
if [ -n "$PS1" ] && [ -z "$TMUX" ]; then
  # Adapted from https://unix.stackexchange.com/a/176885/347104
  # Create session 'main' or attach to 'main' if already exists.
  tmux new-session -A -s main
fi
```

これでターミナルを起動すると同時にtmuxが起動する。

#### マウスモードをオンにする [^10]
この設定はtmuxのキーバインドに慣れているなら行わなくてもよいと思う。

次の設定を`~/.tmux.conf`に追加する。

```
set -g mouse on
```

マウスポインタが表示されていないのでわかりにくいが、ペインをクリックするとそのペインにカーソルが移る。
また、境界線をドラッグすることでペインの大きさを変えることができる。

![Screencast from 2023年02月09日 18時33分25秒.gif](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/c7bae858-c2cd-333b-841d-e9a3687bbdf5.gif)


#### tpm(Tmux Plugin Manager)のインストール [^11]

`tpm`はtmuxのプラグインの管理に用いるプラグインマネージャだ。
最初に導入しよう。

まず`tpm`をクローンする。

```
git clone https://github.com/tmux-plugins/tpm ~/.tmux/plugins/tpm
```

次に`~/.tmux.conf`の一番下に次のように書こう。

```.tmux.conf
# List of plugins
set -g @plugin 'tmux-plugins/tpm'
set -g @plugin 'tmux-plugins/tmux-sensible'

# Initialize TMUX plugin manager (keep this line at the very bottom of tmux.conf)
run '~/.tmux/plugins/tpm/tpm'
```

そして次のコマンドで`~/.tmux.conf`の変更を反映する。

```
tmux source ~/.tmux.conf
```

プラグインをインストールするには次のような形で`~/.tmux.conf`に追記し、`Ctrl-b + I`を押す。Installの略だと覚えよう。

```
set -g @plugin 'github_username/plugin_name'
```

プラグインをアンインストールするには`~/.tmux.conf`からプラグインを削除し、`Ctrl-b + alt + u`を押す。uninstallの略だと覚えよう。

また、`Ctrl-b + U`でプラグインをアップデートできる。UはUpdateの略だ。

#### tmux-resurrect

`tmux-resurrect`をインストールするには`~/.tmux.conf`に次のように書き、`Ctrl-b + I`を押す。

```
set -g @plugin 'tmux-plugins/tmux-resurrect'
```

実際に使ってみよう。
次の画面の環境を保存する。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/cd9f5f37-fa66-ad41-1512-612857a2125f.png)

`Ctrl-b + Ctrl-s`で環境を保存する。(sはsaveの意味)
するとtmuxのバーに`Tmux environment saved!`と出る。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/45f1cd99-5c94-4165-d530-2152006e0754.png)

ここで一度ペインを一つ削除して次のようにする。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/26b49a00-9c80-c5ca-020f-d44eb4fdc3f6.png)

ここから先程保存した環境を呼び戻そう。
`Ctrl-b + Ctrl-r`で環境を復元する。(rはrestoreの意味)
次のように保存された環境が復元されるとともに、tmuxのバーに`Tmux restore complete!`と出る。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/0010011a-6eee-be52-f04e-f29bd8013a1f.png)

他にも、次のような作業ディレクトリや実行しているコマンドなども、保存、復元できる。
デフォルトでは、`vi vim nvim emacs man less more tail top htop irssi weechat mutt`が対応している。
他のコマンドを復元したければ別に設定が必要だ。
([tmux-resurrect/restoring_programs.md at master · tmux-plugins/tmux-resurrect](https://github.com/tmux-plugins/tmux-resurrect/blob/master/docs/restoring_programs.md))

![Screenshot from 2023-02-09 12-33-29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/397212/cab02590-f5cc-91ce-ffb4-1e20fa1b1fe9.png)

ここで環境を保存した後にコマンドを終了したり、作業ディレクトリを変更したりすると環境を復元したときにも同様にコマンドは終了し、作業ディレクトリは変更されているので注意しなければならない。

#### tmux-continuum
`tmux-resurrect`は自分で環境を保存しなければならないが、`tmux-continuum`を導入すれば、15分おきに自動で保存してくれるようになる。


`tmux-continuum`をインストールするには`~/.tmux.conf`に次のように書き、`Ctrl-b + I`を押す。

```
set -g @plugin 'tmux-plugins/tmux-continuum'
```

これで15分おきに自動で環境を保存してくれる。

ただし、自動で環境を復元してくれるだけで、自動で復元してくれるわけではない。



## Dockerのインストール [^12]

まずはDockerが入っていないことを確かめよう。

```
sudo apt remove docker docker-engine docker.io containerd runc
```

次にDockerのインストールに必要なパッケージをインストールする。

```
sudo apt update
```

```
sudo apt install \
    ca-certificates \
    curl \
    gnupg \
    lsb-release
```

Docker公式のGPG keyをダウンロードする。

```
sudo mkdir -p /etc/apt/keyrings
```

```
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
```

次にリポジトリのセットアップをする。

```
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
```

もう一度`sudo apt update`を実行する。

```
sudo apt update
```

次のコマンドでDockerをインストールする。

```
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
```

これでインストールは終わった。
次のコマンドでDockerが正常に動作するか確かめよう。

```
sudo docker run hello-world
```

次のようなメッセージが表示されたら成功だ。

```
Hello from Docker!
This message shows that your installation appears to be working correctly.

To generate this message, Docker took the following steps:
 1. The Docker client contacted the Docker daemon.
 2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
    (amd64)
 3. The Docker daemon created a new container from that image which runs the
    executable that produces the output you are currently reading.
 4. The Docker daemon streamed that output to the Docker client, which sent it
    to your terminal.

To try something more ambitious, you can run an Ubuntu container with:
 $ docker run -it ubuntu bash

Share images, automate workflows, and more with a free Docker ID:
 https://hub.docker.com/

For more examples and ideas, visit:
 https://docs.docker.com/get-started/
```

[^1]: [Ubuntu/Caps-LockキーをCtrlキーにする方法 - Linuxと過ごす](https://linux.just4fun.biz/?Ubuntu/Caps-Lock%E3%82%AD%E3%83%BC%E3%82%92Ctrl%E3%82%AD%E3%83%BC%E3%81%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95)
[^2]: [Ubuntu 20.04: fcitx-mozcで日本語入力する - Narrow Escape](https://www.hiroom2.com/ubuntu-2004-fcitx-mozc-ja/)
[^3]: [SSH を使用した GitHub への接続 - GitHub Docs](https://docs.github.com/ja/authentication/connecting-to-github-with-ssh)
[^4]: [Installing ZSH · ohmyzsh/ohmyzsh Wiki](https://github.com/ohmyzsh/ohmyzsh/wiki/Installing-ZSH)を
[^5]: [zsh-users/zsh-syntax-highlighting: Fish shell like syntax highlighting for Zsh.](https://github.com/zsh-users/zsh-syntax-highlighting)
[^6]: [zsh-users/zsh-autosuggestions: Fish-like autosuggestions for zsh](https://github.com/zsh-users/zsh-autosuggestions)
[^7]: [tmux/tmux: tmux source code](https://github.com/tmux/tmux)
[^8]: [tmux os_icon color/invisible #446 - romkatv/powerlevel10k](https://github.com/romkatv/powerlevel10k/issues/446)
[^9]: [An Argument for Auto-Starting Tmux - Mark Hansen's Blog](https://www.markhansen.co.nz/auto-start-tmux/)
[^10]: [How to use Tmux mouse mode? - Linux Hint](https://linuxhint.com/tmux-mouse-mode/)
[^11]: [tmux-plugins/tpm: Tmux Plugin Manager](https://github.com/tmux-plugins/tpm)
[^12]: [Install Docker Engine on Ubuntu](https://docs.docker.com/engine/install/ubuntu/)