備忘録 blog

Docker/Machine Learning/Linux

現時点での好きなLinux環境

自分の気に入っている、Linux環境上でのソフトウェア群をまとめてみた。

Desktop Environment

KDE

重厚長大だが、充実した機能とカスタマイズ性が、どのKDEのバージョンでも維持されており、それがKDEの魅力でもある。Qt製で、Qtのバージョンアップに従ってKDEもバージョンアップを重ねており、現行バージョンはKDE Plasma 5である。KDE 4の頃はめちゃくちゃカスタマイズしていたが、KDE Plasma 5になってから面倒になってデフォルト設定のまま使うようになってしまった*1

Xmonad

マシンスペックによってはKDEはさすがに重すぎるので、計量デスクトップ環境を導入したくなることがある。そのときに選んだのはXmonadだった。キーバインドを覚えなければならないので、触れていないと使い方を完全に忘れてしまうという欠点はある。その一方で、カスタマイズ性が高く、デスクトップを自在に構成することができるのが、大きな利点であり、マウスなどなくとも大抵の操作ができることに感動する。

Linux Distributions - Arch Linux

Linux Distributionの違いを規定する大きな要素の1つにPackage Managerがあると考えており、Package Managerのあり方に、そのディストリビューションのコンセプトが反映されているというように感じる。

Package Manager

apt-get, aptitude, yum, dnf, zypper, portage, pacman, ...., の様々なツールがあるが、pacmanの、公式リポジトリから導入できるパッケージはバイナリとして導入できて、そうでないソフトウェアは、ビルドファイルがAURと呼ばれるコミュニティベースのリポジトリに共有されており、そこからダウンロードする場合は原則として手元でビルドするという仕組みになっているのが、portageのように全てのソフトウェアをビルドするというほど時間がかからず、一方で、パッケージマネージャに管理されていないソフトウェアをインストールするのがそれほど面倒ではない*2ことが、一番気に入っている理由かもしれない。

Shell - fish

ssh環境ではだいたいの場合で、bashがデフォルトなのでそれを使っているが、zsh + oh-my-zshに比べてfishのほうがfish_configによる設定が容易だったので、fishを利用している。fishはカスタマイズの容易性ももちろんのこと、補完が過去の入力履歴をもとに常に先取り的に行われるというのが便利である。bashでもしばしばback-i-searchを使うことが多いので、私の場合のだいたいのコマンド操作は、過去のコマンド入力の繰り返しであるか、その改変にすぎないということが肌感覚で分かったので、fishに移行したときはその便利さに驚いた。

Editor - Emacs

最初のあいだは、頑張ってEmacs Lispで設定ファイルを記述していたが、最近それに倦んでいるので、Spacemacsを使う。

.spacemacs に設定を記述する。dotspacemacs-configuration-layersは今はこんな感じで書いている。

   dotspacemacs-configuration-layers
   '(
     yaml
     (auto-completion haskell :variables  haskell-completion-backend 'ghc-mod)
     ;; better-defaults
     emacs-lisp
     git
     github
     tmux
     command-log
     org
     spacemacs-layouts
     (ibuffer :variables ibuffer-group-buffers-by 'projects)
     semantic
     cscope
     gtags
     latex

     (ruby :variables
           ruby-version-manager 'rbenv
           ruby-enable-enh-ruby-mode t)
     go
     (haskell :variables
              ;;haskell-completion-backend 'intero
              haskell-process-type 'stack-ghci
              haskell-enable-hindent-style "johan-tibell")
     rust
     scheme
     python
     markdown
     javascript
     react
     c-c++
     html
     docker
     typescript
     dash
     ansible
     sql
     osx
      (shell :variables
             shell-default-height 30
             shell-default-position 'bottom)
     ;; spell-checking
     syntax-checking
     version-control
     )

Other

あとはだいたいこのあたりを使っているが、あとはほとんど設定せずデフォルト状態で使っているので、これ以上細かく述べない。

*1:ただし、メニューバーは上にあるのが好みである

*2:コミュニティが発達しているので、だいたいのソフトウェアがAURで公開されている