ThinkPad X1 Carbon 2019 (X1C7) に Ubuntu 19.04 を入れてみた

# Overall Status

- ThinkPad X1 Carbon 2019年版
    - CPU: Intel(R) Core(TM) i7-8565U CPU @ 1.80GHz
    - Memory: 15973956K/16448268K available
    - Disk model: WDC PC SN720 SDAQNTW-512G-1001
    - Display: 4K UHD 

```
$ fwupdmgr update
No upgrades for UEFI Device Firmware, current is 0.1.5: 0.1.03=older
```

| 機能 | OK/NG | 備考 |
|---|:-:|---|
| Shutdown | OK ||
| Reboot | OK ||
| Hibernation | OK | 若干設定が必要 |
| Sleep / Suspend | OK | 若干設定が必要 |
| Battery monitor | OK ||
| Screen backlight | OK ||
| Keyboard's Hotkeys | OK ||
| TrackPoint | OK ||
| Touchpad | OK | ~~BIOS で不使用にしているので使ってない~~ ← 結局 BIOS で ON にして使えてる |
| LAN | OK ||
| Wifi | OK ||
| Bluetooth | OK ||
| Sound | OK | 若干設定が必要 |
| Built-in Mic | NG | Linux Kernel 5.3.0 から使えるようになるらしい |
| Headphone/Mic | OK ||
| Built-in camera | OK ||
| Fingerprint Reader | NG | 頑張ればいけるみたいだけど頑張ってない |
| WWAN | NG | Firmware もなく全く動かないらしい |
| HDMI | OK ||
| USB Type-C Hub | OK | HDMIも問題なく動く |


# Ubuntu Install

## Secure Boot

- Ubuntu は Secure Boot に対応しているので BIOS での `Secure Boot` は `enable` のままでも Ubuntu のインストールは可能。
- 自分は後述するハイバネーションのために `disable` にしています。

## Install

- 普通にインストールすれば OK です。
- 自分は事前に `gparted` で Windows10 のパーティションを縮小し、下記のパーティションを作ってからインストールしました。
    - / ← 64GB
    - /home ← 残り
    - swap ← 20GB (ハイバネーションのため)

# 各種設定

## GRUB2

- 前回起動した環境を記憶しておき、自動的に再度それを起動するように。
- Ubuntu と Windows10 の dual boot としたいので。

```/etc/default/grub
GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true
```

- GRUB menu の文字小さすぎを解決。

```/etc/default/grub
GRUB_GFXMODE=1024x768x32
```


## CapsLock → Ctrl

```/etc/default/keyboard
XKBOPTIONS="ctrl:nocaps"
```


## homedir の各種directory を英語に

```
$ LANG=C xdg-user-dirs-gtk-update
```


## Sound

- 音量ボリュームが 0% or 100% でしか調整できない。
- 2019年版 (X1C7) から本体内蔵スピーカーが 4つになったのが原因かな?
- ↓ [How to fix volume control (ALSA problem)](https://forums.linuxmint.com/viewtopic.php?t=91453)

```
$ diff -u /usr/share/pulseaudio/alsa-mixer/paths/analog-output.conf.common{.orig,}                                           !255 [0:26:29]
--- analog-output.conf.common.orig      2019-04-16 22:54:26.000000000 +0900
+++ analog-output.conf.common   2019-08-15 00:26:29.210186909 +0900
@@ -131,6 +131,10 @@
 ;                                      # numbering schemes, so we can't hardcode the full jack name in our configuration
 ;                                      # files.

+[Element Master]
+switch = mute
+volume = ignore
+
 [Element PCM]
 switch = mute
 volume = merge
```

- あと `alsamixer` で `Master` のボリュームを上げないと音が小さめになる。
- ボリューム設定後は `sudo alsactl store` してね。


## Mic

- 本体内蔵マイクは Linux Kernel 5.3.0 以降で対応予定の模様。
- しかし本体のヘッドホン端子にマイク付きイヤホン(いわゆる 4極プラグ)を繋ぐとマイクもちゃんと使えるという…。
- もちろん Bluetooth HSP で繋いだ場合はマイクちゃんと使えます。


## Suspend/Resume

- BIOS 起動して `Config -> Power -> Sleep State - Set to "Linux"` と設定してください。
    - Windows10 の Modern Stanby が使えなくなるらしいけど、Windows 使わないからよくわからない…。
    - [ThinkPad X1 Carbon 6th に Ubuntu 18\.04 をインストール ＆ インストール後の諸々 \- Qiita](https://qiita.com/tkms0106/items/3760810904099a03857d)
- Suspend しても USB が原因ですぐに復帰してしまうので、下記の設定が必要。
    - Ubuntu 19.04 では `/etc/rc.local` は標準ではないので新規に作成して `sudo chmod a+x /etc/rc.local` してね。

```/etc/rc.local
#! /bin/sh

for device in XHC EHC1 EHC2; do
    grep $device /proc/acpi/wakeup | grep enabled > /dev/null && {                                   
        echo Disabling wakeup on $device 
        echo $device > /proc/acpi/wakeup
    }
done
```


## Hibernation

- 下記の記事の通りで問題なく動きます。
    - [Ubuntu 18.04 でハイバネーション](https://petit-noise.net/blog/hibernation-on-ubuntu-18-04/)


## 省電力設定

```
# apt install powertop tlp
```

- `tp_smapi` はまだ対応していないっぽい。
    - https://www.thinkwiki.org/wiki/Tp_smapi


## ibus-skk

- ibus は USキーボードで日本語入力なんてしないよね、という思想っぽいので下記の修正が必要。
    - [ibus-skkを英語キーボードで使えるようにする](http://akaneko85r.hatenablog.com/entry/2015/02/15/174847)

```
$ diff -u /usr/share/ibus/component/skk.xml{.orig,}
--- /usr/share/ibus/component/skk.xml.orig	2018-09-27 23:09:35.000000000 +0900
+++ /usr/share/ibus/component/skk.xml	2019-08-11 20:02:25.220956617 +0900
@@ -17,7 +17,7 @@
 			<license>GPL</license>
 			<author>Daiki Ueno &lt;ueno@unixuser.org&gt;</author>
 			<icon>/usr/share/ibus-skk/icons/ibus-skk.svg</icon>
-			<layout>jp</layout>
+			<layout>us</layout>
 			<longname>SKK</longname>
 			<description>SKK Input Method</description>
 			<rank>70</rank>
```

- skk server は `yaskkserv` を使用。
    - Google Japanese Input 対応なのが便利。

```
$ diff -u /etc/default/yaskkserv{.orig,}
--- yaskkserv.orig	2016-11-17 22:22:16.000000000 +0900
+++ yaskkserv	2017-09-06 17:25:47.000000000 +0900
@@ -23,6 +23,7 @@
 #NORMAL_OPTS="${SIMPLE_OPTS}"

 # for HAIRY
+HAIRY_OPTS="${NORMAL_OPTS} --max-connection=32 --google-japanese-input=notfound-input-suggest --google-japanese-input-timeout=1.0 --google-suggest --google-cache=2048"
 #HAIRY_OPTS="${NORMAL_OPTS} --server-completion-midasi-length=2048 --server-completion-midasi-string-size=262144 --server-completion-test=1 --google-japanese-input=disable --google-japanese-input-timeout=2.5"
 # for HAIRY (usage example to enable google japanese input)
 #HAIRY_OPTS="${NORMAL_OPTS} --server-completion-test=1 --google-japanese-input=notfound-input-suggest --google-suggest"
@@ -43,7 +44,11 @@
 ## Dictionaries from skkdic* packages
 # Note: uncomment the dictionary which you want to use and sort their order.

-PKG_DICS="/etc/alternatives/SKK-JISYO \
+PKG_DICS="\
+SKK-JISYO.L \
+SKK-JISYO.jinmei \
+SKK-JISYO.geo \
+SKK-JISYO.station \
 "
 #SKK-JISYO.L \
 #SKK-JISYO.zipcode \
```


## Font

- フォントはこの辺を追加、terminal から browser からのきなみこのフォントに変更。
    - [Cica](https://github.com/miiton/Cica)
    - [MigMix 1P](https://mix-mplus-ipa.osdn.jp/migmix/)
    - [Migu 1P](https://mix-mplus-ipa.osdn.jp/migu/)
    - [Migu 1C](https://mix-mplus-ipa.osdn.jp/migu/)
- Gnome Terminal では Cica が font list に出ないので…
    - [Gnome Terminalのフォントを変更する方法](https://qiita.com/tMinami/items/d871d9c4f37d5c4766a0)


## Gnome Extension

- GNOME Shell は Extension によってカスタマイズすることを前提に作られてるっぽいので、便利そうなものはガンガン入れていくよろし。
    - [GNOME Shellのカスタマイズに必須！拡張機能をインストールする方法 \| LFI](https://linuxfan.info/setup-gnome-shell-extensions)
- 今回入れたのはこの辺。
    - [AlternateTab \- GNOME Shell Extensions](https://extensions.gnome.org/extension/15/alternatetab/)
    - [Caffeine \- GNOME Shell Extensions](https://extensions.gnome.org/extension/517/caffeine/)
    - [Frippery Move Clock \- GNOME Shell Extensions](https://extensions.gnome.org/extension/2/move-clock/)
    - [Hibernate Status Button \- GNOME Shell Extensions](https://extensions.gnome.org/extension/755/hibernate-status-button/)
    - [Panel OSD \- GNOME Shell Extensions](https://extensions.gnome.org/extension/708/panel-osd/)
    - [Suspend Button \- GNOME Shell Extensions](https://extensions.gnome.org/extension/826/suspend-button/)
    - [User Themes \- GNOME Shell Extensions](https://extensions.gnome.org/extension/19/user-themes/)


## Themes

- [Ultimate Maia \- pling\.com](https://www.pling.com/p/1193879/)
- [Ultimate Maia Icons \- Gnome\-look\.org](https://www.gnome-look.org/p/1218961/)



# See Also

- 海外勢も頑張って情報集めてます。圧倒的感謝。
    - [Linux on X1C7? : thinkpad](https://www.reddit.com/r/thinkpad/comments/cfka1t/linux_on_x1c7/)
    - [\[Guide\] X1 Carbon 7th Generation Ubuntu compatability \- Lenovo Community](https://forums.lenovo.com/t5/Ubuntu/Guide-X1-Carbon-7th-Generation-Ubuntu-compatability/td-p/4489823)
    - [thinkpad x1 7th generation ubuntu 19\.04 linux learnings \- Lenovo Community](https://forums.lenovo.com/t5/Ubuntu/thinkpad-x1-7th-generation-ubuntu-19-04-linux-learnings/m-p/4494342)