ノートに入れたLubuntuの様子がおかしくなって以来、いろいろと調子が悪いのでDebian sidに乗り換えてみた。

OSインストール

stableのインストール

余ってるLANケーブルがなかったので、ここのnon freeなパッケージ(無線LANのドライバ)とかバンドルされているnetinstなisoを使った。

デスクトップ環境は後で入れればいいだろーって思ってデスクトップ環境なしでインストールしたらWPA-PSKなwifiに繋げなくて、繋ぐためにwpasupplicantとか入れたいけどそのためにはwifiに繋がないとって感じになってしまったので、デフォルトでMATEを選択してインストールし直した。

インストールはTUI、英語で行った。

unstableへアップグレード

unstable(sid)にアップグレードする前に最低限の設定をする。

# apt-get install vim zsh sudo
# update-alternatives --config editor
# chsh
# adduser <user name> sudo

でrootユーザーのデフォルトのエディタをvimに、シェルをzshに変更。作業用ユーザーにsudo権を付与。ここで一回再起動。

:::color:gray 余談。Ubuntuだとrootユーザーが存在しないため最初に作るユーザーは始めからsudoグループに入っているが、usermod -Gだと指定したでグループで所属グループを上書きしてしまうので、うっかり-aかsudo指定を抜かしてsudoグループからハブってしまうと本格的に何もできなくなるので恐ろしい。

Ansibleのuserモジュールはusermodの単純なシノニムでになっているのだが、-aに相当するappend=yesを抜かしてしまい、ログインに使うユーザーをdockerグループに入れてやろうとして、sudoグループからハブってしまうというのをVPSでやらかしてしまったことがある。ウェブコンソールからリカバリモードで起動すればrootユーザーになれるので、そこからユーザーをsudoグループに入れてあげれば復帰できるんだけど、VPSのウェブコンソールの使いづらさを含め、もう二度としたくない失敗の一つである。余談ココマデ。 :::

# mv /etc/apt/source.list /etc/apt/source.list.bak
# vim /etc/apt/source.list

でsource.listをバックアップしてから編集

deb http://ftp.jp.debian.org/debian/ sid main non-free contrib
deb-src http://ftp.jp.debian.org/debian/ sid main non-free contrib

の2行だけで十分。ここより先からは後戻りできないので軽く決意してから、

# apt-get update
# apt-get dist-upgrade

でアップグレード。結構時間かかる。再起動するといろいろと新しくなってる。2016年5月18日現在では

$ cat /etc/issue         
Debian GNU/Linux stretch/sid \n \l
$ uname -r
4.5.0-2-amd64

という感じになる。Ubuntu16.04で4.4.0-22なのでちゃんと先へ行っているのが確認できた。

言語設定

英語でインストールしたので

# vim /etc/locale.gen

ja_JP.UTF-8をアンコメント。

# locale-gen

でロケールを反映。中途半端な翻訳が嫌なのでデフォルトはen_US.UTF-8のままで。

デスクトップ環境(MATE)のセットアップ

日本語入力

fcitx + mozcの一択だと思う。

$ sudo apt-get install fcitx fcitx-mozc
$ im-config

でダイアログが出るのでfcitxを選択。fcitxの設定画面を開いて入力メソッドをmozcを追加。これで多分日本語が打てるようになる。

GTKテーマ

Ambiance & Radiance Flat Colorsというのを使っている。デフォルトはさすがにアレな感じがあるが、gnome-look.orgで人気なやつなら割となんでもいい。

フォントまわり

MATE

デフォルトのフォントがひどいので、普段見慣れているUbuntu Font Familyを使う。zipファイルで配信されているのでダウンロードしたら、

$ unzip ubuntu-font-family-0.83.zip
$ mkdir -p ~/.fonts
$ mv ubuntu-font-family-0.83 ../.fonts
$ fc-cache -fv

でフォントを追加。MATEを使っているのでコントロールセンターの外観のフォントタブから

のように指定し、レンダリング周りは

という感じに設定。個人的には画像のようにスムージングはSubpixel、ヒンティングはSlightが一番綺麗に描画しているように見えた。あとで自作PCに入れてるUbuntu Unityでの設定を見てみたら、全く同じ設定にしてたようだ。

※参考:Ubuntu Unityのフォントレンダリングの設定

Chromium向け(Google Chrome、Atom)

FirefoxはMATEの設定を描画に反映してくれるのだが、ChromeとAtomはその設定をうまく拾ってくれない。どんな感じになるかというと、

こんな感じに文字の幅がガタガタになってしまう。フォントファミリーはUbuntuがあたっているが、レンダリングオプションがちゃんと渡っていないようである。なので、

$ mkdir -p ~/.config/fontconfig
$ vim ~/.config/fontconfig/fonts.conf

<?xml version='1.0'?>
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
<fontconfig>
  <match target="pattern">
   <edit name="dpi" mode="assign">
     <double>96</double>
   </edit>
  </match>
  <match target="font">
    <edit name="embeddedbitmap" mode="assign"> <bool>false</bool></edit>
    <edit name="lcdfilter" mode="assign"> <const>lcdlight</const> </edit>
    <edit name="antialias" mode="assign"> <bool>true</bool> </edit>
    <edit name="hinting" mode="assign"> <bool>true</bool> </edit>
    <edit name="autohint" mode="assign"> <bool>false</bool> </edit>
    <edit name="hintstyle" mode="assign"> <const>hintslight</const> </edit>
    <edit name="rgba" mode="assign"><const>rgb</const></edit>
  </match>
</fontconfig>

ってな感じにMATEで設定したのと同様なものを書いてやると、

みたいに綺麗に表示してくれるようになる。そんなに頻繁にいじるものでもないんだけど、やっぱり同じ設定を二箇所で当ててることになるので、この辺上手くまとめる手段はないだろうか。少しキモチワルイ。

キーボードショートカット

Windowsキー(Mod4)に割当がないので、これをプリフィクスにして機能を割り当てる。自分がやったのは

  • 次のワークスペースへ移動: Mod4 + Right
  • 前のワークスペースへ移動: Mod4 + Left
  • ウィンドウをワークスペース{{n}}に移動: Mod4 + {{n}}キーnには1〜4が入る)
  • ウィンドウ最大化: Mod4 + Space
  • ウィンドウを戻す(Restore window): Shift + Mod4 + Space
  • MATEターミナル起動: Mod4 + T
  • Chrome起動: Mod4 + C
  • Firefox起動: Mod4 + F
  • Atom起動: Mod4 + E

一般的なラップトップ型PCの操作上の欠点はドラッグがしづらいことなので、ドラッグが必要なウィンドウの移動ウィンドウのリサイズの機会をいかに廃していくか、というワークアラウンドをとることになり、1つワークスペースあたり最大化したウィンドウを1つだけ表示する、というのが個人的な着地点となった。今回セットアップしたノートPCは、12インチで解像度もFWXGA(1366x768)でそんなに広くないので、画面があまる感じもなくいい感じ。

アプリケーションのセットアップ

MATE環境なのでMATE端末を使う。gnome-terminalとほとんど同じだが組み込みのスキームにSolarized darkが入ってないので自分で色を入力する

  • Text color: #839496
  • Background color: #002B36
  • Platte: XTerm

こんな感じになる。ChromeはGoogleアカウント、FirefoxはFirefix Sync、Atomはsync-settings で設定等同期してるし、dotfilesもGithubで管理してるので、大してやることはなかった。

最後に

タイル型ウィンドウマネージャ使わないの?

awsomeとかxmonadとかi3とかタイル型に挑戦したかったけど、結局自分が満足できるような環境にするためにどれくらい知識を詰めないといけず、それに実現するのにどれくらい時間がかかるか考えたら萎えてきてやめた。

繋ぎのつもりで入れたMATEが結構いい感じに使えるようになってしまったのも大きい。普段使ってるUnityと設定の方法もほとんど同じで気楽だし。

なぜDebian?

今でこそUbuntu 16.04がリリースされた直後なのでUbuntuを使ってればパッケージはほとんど最新のものが使える状態だけど、半年もすれば新しいバージョンが出てだんだんそれらも古くなってくる。そう考えたら二年ごとに恐怖に震えながらapt-get dist-upgradeして不具合と戦うかクリーンインストールするくらいならローリング・リリースのディストロがいいな、と思ってDebian sidを選んだ。

とはいえ、Dockerが使える今Linuxであれば環境を統一する必要はないので、Archでも良かった感はある。アップグレードとかで壊れたら今度はArchを入れようと思う。

まあLinux遍歴の一ページということで。