つい先日、2018年10月にelementary OS 5.0 Juno (Ubuntu 18.04 LTSベース) がリリースされたので評価用にサブマシンに入れて一通りセットアップした。
んでその時のメモ
環境
- 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の時に「ひらがな」を入力方法として指定すれば日本語を入力することが出来るようになる
このホットキーに慣れてるならこれで問題ないが個人的には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
4Kディスプレイのため、HiDPI 設定を入れる。--force-device-scale-factor
で倍率を指定。また --force-dark-mode
でダークモードにする。
$ sudo vim /usr/share/applications/google-chrome.desktop
~~中略~~
Exec=/usr/bin/google-chrome-stable --force-device-scale-factor=1.5 --force-dark-mode
~~中略~~
Exec=/usr/bin/google-chrome-stable --incognito --force-device-scale-factor=1.5 --force-dark-mode
$ sudo cp /usr/share/applications/google-chrome.desktop ~/.local/share/applications/
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のように半透明で以前使ったコマンドをサジェストしてくれる
zsh-syntax-highlighting
: fishのようにコマンドを打ってる際にハイライトしてくれる
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 update
$ sudo apt-get install code
Docker
もはや開発で避けて通れないが、Ubuntuデスクトップを使う場合でも環境を汚さずにパッケージのビルドやら出来て便利
$ sudo apt-get install apt-transport-https ca-certificates software-properties-common
$ 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
# docker-compose
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ sudo chmod +x /usr/local/bin/docker-compose
Mozc UT2 (日本語辞書強化)
Mozcはよく出来ているもののGoogle本家の日本語辞書のように常にアップデートされている訳ではないので少し変換が弱い
例えば「インターネット」を「Internet」と変換することは本家Google日本語入力では出来るがMozcでは出来ない。また流行り物系の単語にも弱い(「ユーチューバー」→「Youtuber」と変換出来なかったり)
そこでUTUMI Hirosiさんが辞書ファイルを強化したパッチ版のMozcを公開しているのでそれを使うことにする
mozc-ut2用のdockerイメージを作ったのでpullして中の.debファイルをコピーする
$ sudo docker run -d --name mozc-ut2 shufo/mozc-ut2:bionic
$ sudo docker cp mozc-ut2:/app/ ./deb/
$ sudo 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」で変換出来ることを確認する
Synergy
Logicool FlowのようにPC間をまたいでマウス、キーボードを共有出来るツール
Logicool Flowと違うのはLogicool製品じゃなくても使えるところとLinuxでも使えるところ
これもセットアップする際には慣れたPCから慣れたキーボードとマウスで作業を行えるので最初に入れている
ちなみに有料だが買い切りなので一度買えばずっと使えるのでおすすめ
Clipped
elementary OS専用だがクリップボードマネージャ
シンプルでインクリメンタルサーチ、履歴の保持と基本的な機能が揃っていたのでこれにした
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のようなランチャ。
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
スクリーンショット作成ソフト
デフォルトだと編集機能が無効になっているが有効化するには以下の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でスクリーンキャストを作成出来る
以下でインストール
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
DBeaver
LinuxでGUIでDBを扱うならDBeaverが中々いい
MySQLやPostgreSQL, Refshiftなど多様なDBに対応していて扱いやすい
DBeaverの最新バージョンでelementary OSでメモリリークするバグが起こっていたのだけどelementary OSのシェル(Pantheon)が問題を引き起こしていたみたいなので解決方法を以下に書く
dbeaver.iniでGTKのバージョンを直接指定する行を先頭に足す
$ sudo vim /usr/share/dbeaver/dbeaver.ini
以下の2行を先頭に足す
--launcher.GTK_version
2
最終的にこんな感じになる
--launcher.GTK_version
2
-startup
plugins/org.eclipse.equinox.launcher_1.5.100.v20180827-1352.jar
--launcher.library
plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.800.v20180827-1352
-vmargs
-XX:+IgnoreUnrecognizedVMOptions
--add-modules=ALL-SYSTEM
-Xms64m
-Xmx1024m
※2019-06-04追記 最新版の6.0.5だとGTK 2が無効にされてしまったためこの方法がうまくいかない。6.0.0にダウングレードすると動く
まとめ
elementary OS 5.0 Junoをセットアップした.
elementary OSを仕事でも使い始めてから2年ほど経つが相変わらず特に不満等はなくシンプルでとてもいいOSだと思う。
5.0になりOS標準のツール類も色々整備され普通に使う分には特に困らなくなった。
Linuxデスクトップに求めるものを何とするかは人によって好みは変わると思うが、個人的にはデスクトップ環境の過度な属人化はポータビリティが下がるような気がしてあまり好きではないのでどちらかというとMacのような環境に人が最適化するようなOSに近いelementary OSの考え方は合ってるのかなと思う。
若干リリースサイクルが遅いことが心配されたelementary OSだが0.4 Lokiからバージョンの振り方も変わりリリースサイクルの改善への意欲があるように思えるので今後にも期待したい。