Linux
ElementaryOS

elementary OS 5.0 Juno をインストールして最初にやったこと & 入れたツール15個

つい先日、2018年10月にelementary OS 5.0 Juno (Ubuntu 18.04 LTSベース) がリリースされたので評価用にサブマシンに入れて一通りセットアップした。
んでその時のメモ

Screenshot from 2018-11-17 17.21.56.png

環境

  • elementary OS 5.0 Juno

やったこと

インストール

elementary OS 5.0 Junoは以前の0.4 Lokiから直接Upgradeすることは出来ないので基本的にはクリーンインストールになる。
マシンに0.4 Lokiが入っている場合は、5.0 JunoのLive USBでインストールする際に「0.4と共存させるか?」ということを聞かれるので「はい」で進めると5.0用の別パーティションが作成されそちらにインストールされる

ハマったこと

0.4 Lokiをインストールしていたので別パーティションで共存させてみたが再起動してもGrubのメニューに5.0 Junoが現れなかったのでGrub CustomizerでGUIで確認したところエントリ自体は存在した。再現出来るか分からないけど一度Grub Customizerでコンフィグを保存して再起動したらGrubのメニューに5.0 Junoが出てくるようになった

アップデート

とりあえずデフォルトのパッケージを最新に

$ sudo apt-get update
$ sudo apt-get dist-upgrade

日本語設定

デフォルトでMozcとibus-mozcが設定されているので Ctrl+space で入力方法を切り替えてMozcの時に「ひらがな」を入力方法として指定すれば日本語を入力することが出来るようになる

Screenshot from 2018-11-17 17.39.55.png

このホットキーに慣れてるならこれで問題ないが個人的にはAltのワンショットでIMEのToggleをしたいのだが、ibus-mozcだとキーをタップではなくholdした状態でもIMEが切り替わってしまったためうまく使えなかった。fcitx-mozcならもう少し細かい挙動まで設定出来るのでAltのみでToggleすることも出来た。が結局普段使っているLet's Splitキーボードのqmk firmwareでMod-Tap機能を使ってholdしてる時はAlt、タップした時は変換用のキー(KC_LANG1)を割り当てることでOS agnosticな感じにした。

入れたツール

Google Chrome

何をするにもとりあえずこれという感じではあるが
公式から落とした.debファイルを直接dpkgで入れようとしても依存が足りないのかエラーになったのでgdebiで自動的に依存関係を解決してもらってインストールする

sudo apt-get install gdebi
sudo gdebi google-chrome-stable_current_amd64.deb 

Git

他のツールを入れるにもかなりの確率で必要になるのでこれも最初に入れる

$ sudo apt-get install git

oh-my-zsh

もはや脳死でoh-my-zshを入れている気がするけどシェル環境をさっと整備したい時は楽なので

$ sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"

プラグインは以下のプラグインを使っている

plugins=(
  git 
  ubuntu 
  z 
  per-directory-history 
  sudo 
  aws 
  docker 
  ubuntu 
  pantheon_terminal_notify 
  zsh_reload 
  mix 
  extract 
  gitignore 
  colorize 
  common-aliases 
  elixir 
  zsh-autosuggestions
  zsh-syntax-highlighting
  dotenv
  virtualenv 
  virtualenvwrapper
)

好きなプラグインは

per-directory-history: ディレクトリごとのコマンド履歴を保持してくれる。プロジェクトごとによく使うコマンドは大抵決まっているのでグローバルの履歴を追うよりディレクトリ単位の履歴の方が便利
zsh-autosuggestions: fishのように半透明で以前使ったコマンドをサジェストしてくれる
image.png
zsh-syntax-highlighting: fishのようにコマンドを打ってる際にハイライトしてくれる
image.png
git, ubuntu: 長いコマンドの短縮エイリアスを定義してくれる (例: sudo apt-get install -> agi など)
extract: extract foo.zip, extract bar.tar.gz のようにすると圧縮ファイルをいい感じに解凍してくれるwrapper。たまにフォルダが存在しないtarボールを展開すると作業用ディレクトリがひどいことになるがextractはちゃんとフォルダを作成した上で展開してくれる。zipコマンドとかtarコマンドの引数忘れがちなので

gnome-terminal

elementary OS デフォルトのターミナルはpantheon-terminalだけどgnome-terminalの方が早いらしいとのことでgnome-terminalにしてみた

まずpantheon-terminalをアンインストールする。後で必要になったら再インストール出来るのでアンインストール自体は問題ない

sudo apt-get remove pantheon-terminal
sudo apt-get install gnome-terminal

applicationsのエントリでOnlyShowInの行をコメントアウトしてメニューから検索出来るようにする

$ vim /usr/share/applications/gnome-terminal.desktop

#OnlyShowIn=GNOME;Unity;

Visual Studio Code

最近はもっぱらVSCodeのエコシステムが充実しているのでプログラミングはVSCodeでやっている

$ curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
$ sudo install -o root -g root -m 644 microsoft.gpg /etc/apt/trusted.gpg.d/
$ sudo sh -c 'echo "deb [arch=amd64] https://packages.microsoft.com/repos/vscode stable main" > /etc/apt/sources.list.d/vscode.list'
$ sudo apt-get install code

Docker

もはや開発で避けて通れないが、Ubuntuデスクトップを使う場合でも環境を汚さずにパッケージのビルドやら出来て便利

$ agi apt-transport-https ca-certificates
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
$ sudo apt-get install docker-ce
$ sudo systemctl start docker

Mozc UT2 (日本語辞書強化)

Mozcはよく出来ているもののGoogle本家の日本語辞書のように常にアップデートされている訳ではないので少し変換が弱い

例えば「インターネット」を「Internet」と変換することは本家Google日本語入力では出来るがMozcでは出来ない。また流行り物系の単語にも弱い(「ユーチューバー」→「Youtuber」と変換出来なかったり)

そこでUTUMI Hirosiさんが辞書ファイルを強化したパッチ版のMozcを公開しているのでそれを使うことにする

mozc-ut2用のdockerイメージを作ったのでpullして中の.debファイルをコピーする

$ docker run -d --name mozc-ut2 shufo/mozc-ut2:bionic
$ docker cp mozc-ut2:/app/ ./deb/
$ docker rm mozc-ut2
$ sudo dpkg -i ./mozc-data_*.deb ./mozc-server_*.deb ./mozc-utils-gui_*.deb ./ibus-mozc_*.deb

以下は手動でビルドする場合

ダウンロードして解凍

$ wget https://ja.osdn.net/frs/chamber_redir.php?m=iij&f=%2Fusers%2F22%2F22942%2Fmozc-2.23.2815.102%2Bdfsg%7Eut2-20171008d%2B20181028.tar.xz
$ tar xavf ./mozc-* && cd mozc-*/

ビルドに必要な依存パッケージが多くシステムを汚しかねないのでDocker上でビルドする
Docker上ならビルドが終わればコンテナをkillするだけで環境を破棄出来るのでクリーンに保たれてよい

# ホストにマウントしビルド結果を共有出来るようにする
$ docker run -it -v $(pwd):/app -w /app ubuntu:bionic
# 依存インストール
$ apt update && apt upgrade -y && apt install -y devscripts debhelper libibus-1.0-dev pkg-config libxcb-xfixes0-dev libgtk2.0-dev python-dev gyp protobuf-compiler libprotobuf-dev qtbase5-dev libqwt-qt5-dev libgwengui-qt5-dev libuim-dev libzinnia-dev fcitx-libs-dev gettext desktop-file-utils ninja-build
# ビルド
$ ./build_mozc_plus_utdict

ビルドが終わると.debパッケージが出力されるのでインストールする

$ sudo dpkg -i ./mozc-data_*.deb ./mozc-server_*.deb ./mozc-utils-gui_*.deb ./ibus-mozc_*.deb

マシンを再起動して「インターネット」→「Internet」で変換出来ることを確認する

image.png

Synergy

Logicool FlowのようにPC間をまたいでマウス、キーボードを共有出来るツール
Logicool Flowと違うのはLogicool製品じゃなくても使えるところとLinuxでも使えるところ

ワークスペース 2_002.png

これもセットアップする際には慣れたPCから慣れたキーボードとマウスで作業を行えるので最初に入れている

ちなみに有料だが買い切りなので一度買えばずっと使えるのでおすすめ

Clipped

elementary OS専用だがクリップボードマネージャ
シンプルでインクリメンタルサーチ、履歴の保持と基本的な機能が揃っていたのでこれにした

スクリーンショット 2018-11-18 17.56.37.png

Wine

たまにWindowsバイナリを動かしたい時があるので

$ sudo dpkg --add-architecture i386 
$ wget -nc https://dl.winehq.org/wine-builds/Release.key  
$ sudo apt-key add Release.key
$ sudo apt-add-repository -y -n https://dl.winehq.org/wine-builds/ubuntu/
$ rm Release.key
$ sudo apt-get update && sudo apt-get install winehq-stable winetricks

Albert

MacのAlfredのようなランチャ。

image.png

jumpapp

jumpapp chromeといったコマンドでアプリを切り替えてくれるコマンドラインツール
現在開いているウィンドウの名前を参照し最初にマッチしたものをショートカットを押すごとに循環して切り替えてくれる
xbindkeysと併用し特定のキーを押した時特定のアプリに切り替えるというようなことが出来る

$ cat ~/.xbindkeysrc
# Chromeにジャンプ
"jumpapp chrome"
  control + alt + c

"jumpapp pantheon-terminal"
  control + alt + t

"jumpapp slack"
  control + alt + s

"jumpapp code"
  control + alt + v

コンテナ内でビルドしたパッケージをホスト側でインストールする

$ docker run -it $(pwd):/app -w /app ubuntu:bionic
$ apt-get update && apt-get install build-essential debhelper pandoc shunit2 git -y
$ git clone https://github.com/mkropat/jumpapp.git
$ cd jumpapp
$ make deb
$ exit
$ cd jumpapp
$ sudo apt-get install wmctrl
$ sudo dpkg -i jumpapp*all.deb

Shutter

スクリーンショット作成ソフト

image.png

デフォルトだと編集機能が無効になっているが有効化するには以下の3つのパッケージをダウンロードしてインストールする

https://launchpad.net/ubuntu/+archive/primary/+files/libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libgoocanvas3_1.0.0-1_amd64.deb
https://launchpad.net/ubuntu/+archive/primary/+files/libgoocanvas-common_1.0.0-1_all.deb

sudo gdebi libgoo-canvas-perl_0.06-2ubuntu3_amd64.deb
sudo gdebi libgoocanvas3_1.0.0-1_amd64.deb
sudo gdebi libgoocanvas-common_1.0.0-1_all.deb

Shutterのプロセスをkillして再起動すると編集機能が使えるようになっている

Peek

Gifでスクリーンキャストを作成出来る

スクリーンショット 2018-11-19 04.45.24.png

以下でインストール

sudo add-apt-repository ppa:peek-developers/stable
sudo apt update
sudo apt install peek

Slack

slackも忘れずに

wget https://downloads.slack-edge.com/linux_releases/slack-desktop-3.3.3-amd64.deb
sudo dpkg -i slack-desktop-3.3.3-amd64.deb

まとめ

elementary OS 5.0 Junoをセットアップした.
elementary OSを仕事でも使い始めてから2年ほど経つが相変わらず特に不満等はなくシンプルでとてもいいOSだと思う。
5.0になりOS標準のツール類も色々整備され普通に使う分には特に困らなくなった。

Linuxデスクトップに求めるものを何とするかは人によって好みは変わると思うが、個人的にはデスクトップ環境の過度な属人化はポータビリティが下がるような気がしてあまり好きではないのでどちらかというとMacのような環境に人が最適化するようなOSに近いelementary OSの考え方は合ってるのかなと思う。

若干リリースサイクルが遅いことが心配されたelementary OSだが0.4 Lokiからバージョンの振り方も変わりリリースサイクルの改善への意欲があるように思えるので今後にも期待したい。