Linux デスクトップ環境 2018

元々macOSがあまり好きではなくUbuntuなりArchLinuxで開発したいという気持ちがあり、かといってMacBookにLinux入れたくなかった。

ついに新しいラップトップをかったので、Linuxで開発環境を構築して運用しているよって話です。

ブログ書く意気込みとしては Linux デスクトップ環境 2017 - k0kubun's blog に影響されている感じです

コンセプトは自分が使いやすい(設定を弄りやすい。GUI含めて細かい所まで弄りやすい)です。

そもそもmacOSのどういうところが嫌いなの?

UNIX互換な環境が欲しいならMacで十分じゃないの?っていう人は多いと思うので僕がmacOSに対して感じている不満に付いてまとめます。

  • Window Manager
    • 同一のアプリケーションを二つのウィンドウで起動している時(Chromeの「新しいウィンドウで開く」) Command + Tabで片方のウィンドウしか選択できない
    • ショートカットキーだけでカレントウィンドウのワークスペース移動ができない
    • Window Managerに自由がない(好みのWindow Managerに差し替えられない)
  • ターミナルエミュレーター
    • まともな速度でレンダリングできてTrueColor出せて日本語入力できるターミナルエミュレーターが存在しない(iTerm2はレンダリング遅い)
  • macOSのアップデートが信用できない
  • セットアップ時にxcode抱き合せセットをダウンロードさせられるのがつらい

現在のLinuxデスクトップ環境

ディストリビューション

プログラマが開発環境を作るなら、Arch Linux vs Ubuntuみたいな所だと思うが僕はUbuntuを選択しました。

理由については後述するとしてさきに二つのディストリのメリデメを挙げようと思います。

Ubuntu

メリット

  • UbuntuServerのノウハウが生きる(aptの使い方だとか)
  • インストールしたらハードウェアのこと考えなくてもとりあえず動く
  • WindowManagerに関してもとりあえずデフォルトでGNOMEが入るので悩まないのがいい

デメリット

  • aptで入ってくるパッケージのバージョンが古い
    • 例えばtmuxは未だに2.5が入ってくる
  • 最初から色々入っており小さくないので壊れた時(Archに比べて)直しにくい
  • バージョン上げるのが大変

Arch

メリット

  • ローリングリリースなので普段からパッケージを更新しとけばバージョンを上げるのが大変といったことがない
  • Ubuntuより新しいパッケージが入ってくるのが早い
  • 充実したAURとyaourt
    • Git repositoryからHEADを直接インストールできたりと柔軟性がある
  • 最初は殆ど何も入ってないのでUbuntuに比べて壊れた時に直しやすい
    • ArchWikiが優秀というのはある

デメリット

  • ハードウェアのドライバどれいれるかとか調べないといけない
    • 初回だけとはいえそういうところで消耗したくない…
  • Ubuntuに比べてアップデートが頻繁でたまに壊れたりする

んで僕がUbuntuを選択した理由なんだけど、これは単純でハードウェアのドライバ周りで消耗したくなかったからです。

カーネルのアップデートで突然ドライバが壊れてマシンが使い物にならないとかが嫌なので…

Window Manager

最初はGNOME3のWMを使ってたんだけど妙に使いにくかったのでOpenboxに変更しました

OpenboxっていうのはWindowを管理するソフトウェアで壁紙を表示する機能とかもない。

ただマシン負荷が少ないのとちょっとconfigファイルを弄るだけでカスタマイズができるので、コンセプトの細かいところまでチューニングしやすいを満たしてくれていい。

ただ機能不足感は否めないので他のソフトウェアも併用して行くことになるんだけどこれは後述で。

キーリマッパー

xmodmap一択。といってもそんなに沢山リマップするわけでもないのでこれで十分だと思ってる(Caps -> Ctrlと無変換をShiftにするくらい)

ターミナルエミュレーター

macOSに比べると何使っても描画が早いのであんま拘らずに済んだ。gnome-terminalを使っています。

iTerm2を使っているとターミナルマルチプレフィクサ的な機能(分割とか別タブとか)が欲しくなるのでtmuxを使ってます。

余談なんだけど職場ではmacOSを使っているのだがiTerm2だと満足できなくなってしまい職場のMacにもtmuxを入れました

IM & IME

WindowsでもMacでもSKKを使っているのでUbuntuでもibus-skkを使っている。他のSKkと操作形態があまり変わらないのが嬉しいです

ファイラ

正直あまり使わないがCLIで動くrangerを使っている。

といっても使うのは「"~"みたいなファイルが間違えて作成されてしまった時にシェルのコマンドで一歩間違えるとホームディレクトリがバッサリ消えそうで怖いからコマンドでやるのはちょっとなぁ」 と思う時くらいしか使わないです

ブラウザ

GoogleChromeです。無難な選択すぎて書くことがないですね。

Twitterクライアント

TweetDeckを使っています。mikutterでもいいんだけど設定をGUIからポチポチやる気が出なかったのでゼロコンフィグでそこそこ快適に動作して機能も豊富なTweetDeckをチョイス

とはいえそろそろTwitterもユーザーストリーミング終了とか言っているのでmastodonに移りたい気持ちがあり、Twitterとmastodon両方を同時に見れるツールが欲しいなぁと思い始めています

音楽プレイヤー

Google Play Music

ブラウザで音楽が聞けて便利な世の中になりましたね

Shell

fishを使っています。が各位好きなのが使えるラインですね。

Openboxと併用して使ってるソフトウェア

Openboxだけだと主に以下の機能が足りないのでそれぞれ別のソフトウェアを使って補っています

  • 通知
  • 時計
  • ボリューム調整
  • Spotlight (Alfred)

通知

dunstを使っている。見た目がリッチじゃないんだけどまぁ通知はでてくれればいいのでこれで満足しています

時計

ないと不便なのでなんとかしました。
tint2というソフトウェアがWindowsで言うタスクバーを提供してくれるのでこれを使っています

ボリューム調整

pavucontrol。ショートカットキーで起動する感じにしています

Spotlight(Alfred)

コマンドラインランチャー的な役割でしか使ってなかったので(辞書検索とかもしなかった)dmenuを使っています

感想

macOSでの不満点を解決できていて開発環境としてはかなり快適で満足度が高いです。keynoteが使えないので凝ったプレゼンとかどう作るのみたいな課題はまだあるけど最悪Macを開けばいいかなとも思っていてあまり重要だとは感じていないです

Linuxで開発しているエンジニア各位の開発環境も興味あるのでもしこの記事を見たLinuxで開発してる人も開発環境晒してくれると嬉しいです。

書いたらTwitter: @h1manoa までMention飛ばしてくれると僕がハッピー

おまけ