デスクトップ環境をMacからUbuntuに移行する 2018

7,8年ほどMacなデスクトップ環境で生きてきたが,ここ最近のAppleMac愛の欠如も鑑みて,自宅のデスクトップマシンをMacOS((High Sierra)からUbuntu18.04に切り替えた. 時間が立つと古くなると思うが,1年に1回ぐらいは見直しをしたいので,その時のためのメモがてら記事として残す.

そもそもなぜ移行するのか?

以下2点でMac固執する必要が無くなったのと心機一転.

  1. MacOSのハードウェアの更新が遅すぎる
    • 新型Mac miniが出てこないので, 新しいデスクトップマシンがそもそも組めない(Mac Pro? 知らない子ですね
  2. Chromebookを業務で利用し始めたので, そもそもアプリがChrome動けばほとんど使えるようになった
    • TerminalとSlack以外はほぼブラウザベースアプリしか使ってない事実...

移行前の懸念点及び移行した後の結果

以下3点が移行前に気になっていた点と移行してみての結果. 総評としては許容可能レベルということで常用することにしました.

  • ユーザーインタフェース周りが不便にならないか
    • ☁ Magic Trackpad2がUbuntuでドライバが安定したものが出ていない & 慣性スクロールがうまく効かないのダブルパンチにより,利用を断念
      • ひとまずマウスで耐えきれるようにキーボード周りを整備
  • フォントのアンチエイリアスが我慢可能なレベルか?
  • キーボード操作がMac + Karabiner相当ができるか?
    • ☀ いろいろと選択肢があったが, xkeysnailを使って代替可能. 自分が使っている機能は全部移行できた. :+1:

利用ハードウェア

自宅は一時期,ノートPCをメインマシンにしていた時期もあったけど, 椅子に座って作業をするためには固定端末がないとなかなかやらないという自分のだめさ加減もあって, 今はデスクトップ専用マシンを用意しています. 今回は以下2点のために,Intel NUC NUC7i7DNHEを採用.

  • 机の構成の自由度を取りたいので小型マシンにして,モニタの裏側に置きたい
    • 昔はタワー型使ってたけど足元においててそこがホコリの温床になるので最近は撤去
  • 机の上に設置なので,音がうるさいのも嫌

Ryzenが話題になってる現状では貧弱な4コア8スレッドだけど,まぁ,k8s動かすわけでもないので許容する. メモリ・SSDは旧マシンのを転用.(DDR4 2100MHz 32GB)

たまーにCPU使用率が50%を超えてくるとファンの音がするが, 常用時はほぼ無音なので今のところ満足してます.

導入アプリ

真ん中にブラウザと作業中ウインドウを持ってきておいて,左右にSlackやTweetdeckおいたりしてます f:id:u1s:20180819221513p:plain

Chrome WebApp

基本的にはChromebookで生きていけるようにしてるので, ほぼこれで事足りる. Chrome WebAppはChromeOSじゃないので使えなくなってしまったが, Web Page Shortcurt機能(More tools -> Create Shortcut で使える)でアプリ化ができるので,採用.

メーラー

Inboxをメインで使っているが, 複数プロファイルの使い分けがWebAppだといまいちだったので, Wavebox( https://wavebox.io/ )を利用.

余談だが,Waveboxだとmail以外の機能もプロファイルを使い分けて使えるので仕事用や副業用などで複数G Suite環境があるときに便利です.

上記以外

SlackもWebAppで入れることは出来るのだけど, WebAppだとMulti Team構成の時にウインドウが複数に分かれてしまうという欠点がある. Native Appで入れるとMultiTeam対応しているので,debパッケージで個別にインストール. aptで入れることは出来るのだが,日本語変換周りが腐る事象があったため, Slack公式サイトからdebパッケージ落としてきて, gdebi で依存関係解消してインストール.

Desktopの設定

Topbar / Titlebarの消去

普段のエンジニアリング系作業はTerminalで作業が多いのだけど, Terminalを利用するときにTerminal以外のものが表示されると非常に気になるので消し去りたい. 具体的にはTopbarとTitlebar.(topbar相当はtmuxで表示してるという事情もある)

これらは標準設定だと消すことができないが, gnomeのextensionを入れることで削除可能. 以下, 入れ方.

sudo apt install chrome-gnome-shell
  1. Chrome Extensionを入れる
  2. hide-top-bar( https://extensions.gnome.org/extension/545/hide-top-bar/ ) を入れてgnome-shell-integrationからactiveにする
  3. hide-title-bar( https://extensions.gnome.org/extension/1267/no-title-bar/ ) を入れてgnome-shell-integrationからactiveにする

キーボード入力中にマウスカーソルを消す

一応,以下でnuclutterを入れることで消せるらしいのだが,chromeでうまく効いてくれない・・・ gnome-terminalでは動く

$ sudo apt install unclutter
$ vi /etc/default/unclutter
EXTRA_OPTS="-keystroke -root"

Terminalの設定

前述のGnome自体の設定でタイトルバー・トップバーを消せて特に不満もないので, gnome-terminalをそのまま採用してます.カラースキームはMacでiTerm2使ってるときにも使っていたSolarized darkを採用.

Font

fontはNerd font(terminalで独自定義のemojiを利用できるようにしているプロジェクト) のパッチがあたったNoto sansを利用.

git clone https://github.com/ryanoasis/nerd-fonts
cd nerd-fonts
# bulkでパッチがあたったフォントがインストールされる. 使いたいのが決まってるなら引数に入れれば個別に入れることも可能
./install.sh 

Terminalの自動起動設定

マシンが立ち上がってきたときにTerminalが起動していてほしいので,以下を設定しておき,自動起動させる. 本当はtmuxinatorも起動させたいのだが, tmuxinatorをrbenvで動いているruby側にインストールしてしまってるので実行パスの引き渡しができなくて今のところは断念している.

cat .config/autostart/gnome-terminal.desktop
[Desktop Entry]
Exec=gnome-terminal --maximize
Type=Application

Terminalの中身

とりあえず起動すると全画面表示で以下みたいな構成になるようにしてます. Terminalは透過設定にしておいて, 前述のウインドウが起動してる状態だと透けた状態で資料見ながらTerminal使うスタイル. f:id:u1s:20180819221543p:plain

  • 仮想端末管理: tmux
  • tmuxのウインドウ管理: tmuxinator
  • Shell: Zsh
    • 良いタイミングだったのでfishにしても良かったけど,今回は見送り(単に面倒だっただけ
  • Zsh plugin管理: zplug
    • 元々はantigenだったけど,整理がてら変更
    • plugin installがコンフィグで楽にかけるようになったし,ロードも速くなってくれて満足
  • Zsh theme: powerlevel9k
    • 重たいし,NerdFont必須だけど表示のスタイリッシュさで採用
    • colorlsも入れるとterminalが賑やかに...
    • k8s context表示も標準であるので, 自分がどの環境に対して作業してるのかとかも見やすくて良い感じ