Ubuntu 22.04での環境構築

[Ubuntu 20.04での環境構築](https://qiita.com/k0kubun/items/d2359ad51cf1cf783f4d)の内容が古くなってきたので、今現在の設定で書き直すことにした。

# インストール
Ubuntuをクリーンインストールすると、起動時のgrubのメニューにWindowsが出現しなくなるので、それをやるにはWindowsは後からインストールする必要がありそう。

## インストールメディアのブート
ここではUSBメモリでインストールメディアを作成しブートする。

## USBメモリにisoを焼く
(UEFIブートのため)**64bitの**desktop imageをダウンロードしておく。以下macOSで焼く手順を書く。

**ExFAT GUIDパーティションマップでフォーマットしてから** (`diskutil eraseDisk ExFAT UbuntuFocal /dev/disk2` とか)、以下のコマンドを実行する。

```bash
hdiutil convert -format UDRW -o ubuntu ubuntu-20.04.1-desktop-amd64.iso
df # /dev/disk2 の Mounted on を確認 (/Volumes/Ubuntu だったとする)
diskutil umount /Volumes/Ubuntu # マウントされている場合
diskutil list # 焼きたいUSBメモリのパスを確認 (/dev/disk2 だったとする)
sudo dd if=ubuntu.dmg of=/dev/disk2 bs=1m
```

**ddにめちゃくちゃ時間がかかる** ので、あらかじめここまで済ませておくと良い。

## USBメモリのブート
F2をおしてBIOS (UEFI) を起動し、USBメモリが最初になるようにブート順を変え起動する。同じものが二つある場合「UEFI:」が先頭につくものを選ぶのが必要なこともある。

## インストールウィザード
- Englishで進める
- minimal installation
  - Install third-party software for graphics and W-Fi hardware and additional media formats は一応チェックしておく
- ディスクの暗号化はAdvancedなメニューからじゃないとできない

"Please remove the media, and then press Enter" の黒い画面でインストールメディアを抜いてエンター。

# 環境構築
## アップデート
ここで名前解決に失敗する場合は [NetworkManagerからdnsmasqを起動しないようにする](http://qiita.com/k0kubun/items/1037a78b392a7ca4aed5) 必要があったこともあるが、今はいらなそう。

```
sudo apt-get update
sudo apt-get upgrade
```

## HiDPI

* Settings
  * Devices > Display > Scale: 200%

## bootstrap: zsh, tmux, vim, peco, ghq
```bash
sudo apt install curl git
git clone https://github.com/k0kubun/dotfiles src/github.com/k0kubun/dotfiles
cd src/github.com/k0kubun/dotfiles
./install.sh
```

ibus-skk, ghq, peco, zsh, tmuxがインストールされる。再起動するとシェルがzshに変わる。

Neovimは現在の実装だとインストールしないようになっているので、`apt install neovim` しておく。Vimprocのビルドにmakeやgccが必要なので、`apt install build-essential` もしておく。aptで入るnodejsは古すぎなので、`snap install node --classic`する。

systemd serviceを使う予定があれば、ついでに`sudo loginctl enable-linger k0kubun`もやっておくとよい。

実装が現状壊れているもの:

* xremapのautostartディレクトリが最初存在してないので、自分で作る必要がある
* ddns-updateのgem_packageをいれる際、まだRubyがないので動かない
* ddns-updateを消してしまうと、xremapのsystemd serviceをいれるときにディレクトリがない

## xremap
Rustをインストールしておく。

```bash
ghq get k0kubun/xremap
cd src/github.com/k0kubun/xremap
cargo build --features x11
systemctl --user restart xremap
```

## SKKの設定
bootstrapでibus-skkがインストールされているので、それを有効化する。

* Settings > Keyboard > Input Sources: SKKを追加

Region & LanguageからはSKKが追加できないことに注意。先にそっちで日本語を足しておかなくても、ここでOtherからJapanese (SKK)が足せる。

それから、以下のように起動時のデフォルトをアルファベットに変えておく。

* Setup > Behavior > Initial mode: Latin
  * OKを押す

## デスクトップアプリ
このあたりのタイミングで、以下のアプリを入れておく。サイトで落としてきてdebを`dpkg -i` するものが多い。

* Google Chrome
* Slack
* Nocturn
  * 解凍したものを `/opt/Nocturn-linux-x64` に置く。
  * desktopエントリはbootstrapでできるが、アイコン用に `ghq get k0kubun/Nocturn` が必要。
  * `{ "homeList": "k0kubun/timeline", "pollInterval": 4 }`を`~/.nocturn`にマージするか、以下のSSHの時についでに持ってくる。
* Bitwarden
* Dropbox
* VSCode

## Gnome Terminal
### フォントのインストール
```
sudo apt install fonts-inconsolata
```

`sudo fc-cache -v` が必要なこともあったようだが、今回はターミナルの開き直しで動いた。

### 設定のロード
```
cd src/github.com/k0kubun/dotfiles
dconf load /org/gnome/terminal/legacy/ < config/dconf_dump_org_gnome_terminal
```

Ubuntu 22.04の時点でもこの "legacy" ネームスペースで動作する。

## SSH / GnuPG
```bash 
sudo apt install ssh
# sudo systemctl start sshd # 勝手に走る

curl -s https://github.com/k0kubun.keys > ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
ip addr # enp6s0 inetのところを見て、/24は無視する
```

`~/.ssh` と `~/.gnupg` を持ってくる。GnuPGを使ったコミットが動かない場合、mitamaeを実行し直すと設定が直る。

## GNOMEの設定
### Chromeから拡張をインストールできるようにする
```
sudo apt-get install chrome-gnome-shell
```

### 日付と時刻を右側に出す
- https://extensions.gnome.org/extension/2/move-clock/ で ON にする
- 
`gsettings set org.gnome.desktop.interface clock-show-date true`
: デフォルトになった?
- 
`gsettings set org.gnome.desktop.interface text-scaling-factor 1.1`
: やらなくなった

### GNOMEの画面端でウィンドウが拡大するのを無効にする
```bash
gsettings set org.gnome.shell.overrides edge-tiling false
```

22.04現在では何も効果がなくなっているような気もするが、設定は存在しており、デフォルトはtrue。

### 壁紙
- Settings > Background: 灰色のくらげの奴にする

### GNOMEテーマ
```
sudo apt install arc-theme gnome-tweaks
```

- "Tweaks"
  - Appearance > Theme > Legacy Applications: Arc

微妙に見た目が変わるが、再起動しないと全体は変わらない。

### beep音無効
- Settings > Sound > Volume Levels > System Sounds: OFF

一度右に動かしてから左に動かす必要がある https://askubuntu.com/questions/1283766/how-to-disable-alert-sounds-on-ubuntu-20-04

### Windowの拡大縮小ボタンをなくす
Gnome Tweaks で、

* Window Titlebars > Titlebar Buttons
  * Maximize: 無効
  * Minimize: 無効

### デスクトップアイコンを消す
```
gnome-extensions disable ding@rastersoft.com
```

### DockのVolumeを消す
* Settings > Appearance > Configure dock behavior
  * Show Volumes and Devices: 切る
  * Show Trash: 切る

### 通知の表示位置の変更
- 
Chromeで https://extensions.gnome.org/extension/708/panel-osd/ のインストール

- 
"Tweaks"

  - 
Extensions > Panel osd: 設定する


Ubuntu 22.04 でインストールできなくなったぽい。

### DockのFavoritesとOpenedの間の線を消す

- 
Dash to Dock を入れて設定する


Ubuntu 22.04 だとインストールできない。

## VSCode
1. サイトからダウンロードしたdebを`dpkg -i` した後、起動する。
2. 左下の人間みたいなアイコンからSign In with GitHubする。
   * 全ての設定をsync対象に指定する。
   * 会社のSSOは有効化せずにContinueする。
3. 以下のように設定をdotfilesからJSONをsymlinkし直す。

```
cd ~/.config/Code/User
ln -sf ~/src/github.com/k0kubun/dotfiles/config/.config/Code/User/keybindings.json
ln -sf ~/src/github.com/k0kubun/dotfiles/config/.config/Code/User/settings.json
```
## Wireguard

```
sudo nmcli connection import type wireguard file ubuntu.conf
```

Advanced Manager 設定 GUI: https://forum.manjaro.org/t/howto-configure-wireguard-via-the-networkmanager-gui-advanced-network-manager/138040

オンオフ用GUIコマンド: `nm-applet`