Linux デスクトップ環境 2016

5年半くらい前に http://d.hatena.ne.jp/eagletmt/20100905/1283686004 というのを書いたけど、そこから今どう変わっているのか。

こう列挙してみると2016年になっても Linux デスクトップは… みたいな気持ちも無いわけじゃないけど、色んなコンポーネントを好きなように設定できたり入れ替えることができたり、場合によってはパッチをあてることもできて、そのへんが好きで使っている。 もちろん、仕事では Linux で動作するようなコードばかり書いたり読んだりしているので、そのへんの知識を手元でも使えたり手元とサーバの違いではまったりしにくいから、というのもあるけど。

ディストリビューション

相変わらずずっと Arch Linux を使っている。 パッケージの更新が早かったり、最小限のデフォルトしか設定されていないのでディストリビューションが勝手に設定しているデフォルトにはまることがなかったり、PKGBUILD がシンプルで独自パッケージを作りやすかったり、ArchWiki が非常に充実していたり、全然不満は無い。

ウィンドウマネージャ

awesomeLua を書くのがつらくなって XMonad を使うようになっている。 最近はほぼ Haskell を書くことが無いので XMonad のために GHC を入れるのは若干だるいけど、XMonad 自体は快適なので使い続けている。

ディスプレイマネージャの類は今も昔も使っていない。普通に getty でログインして startx 叩いている。

ターミナル

mlterm はよくできてるんだけど動作が遅かったりチラつきが多かったりして rxvt-unicode を使ってたんだけど、最近また mlterm を使うようになっている。 でもやっぱり mlterm は遅いので、また rxvt-unicode を使うようになるかもしれない…… rxvt-unicode は異常に速い。

rxvt-unicode だといわゆる East Asian Ambiguous Width の問題があって「▽」とかを半角として認識してレンダリングされて困るんだけど、そのへんは ambiwidth.rbUTF-8-CJK という charmap を作って回避している。 いまググったら同じ方法で回避している人がいた https://github.com/hamano/locale-eaw

ちなみに tmux も同じ問題をかかえていて、しかし tmux は glibcロケールの定義は完全に無視して独自のテーブルを持っているので、wcwidth を使うようにしたパッチをあてて使っている https://github.com/eagletmt/arch.wanko.cc/tree/master/aur-eagletmt/PKGBUILDs/tmux-cjkwidth

と思ったら tmux 本体もついに wcwidth を使うようになったっぽいので、次のリリースからはパッチ不要かも https://github.com/tmux/tmux/commit/26945d7956bf1f160fba72677082e1a9c6968e0c

日本語入力

相変わらず uimuim-skk を使っている。 昔は skk-jisyo.L を直接使っていたけど、今は yaskkserv を使っている。 SKK server completion に対応しているし、あと変換候補が L 辞書に見付からなかったときに Google Japanese Input から探してくれて便利。とくにアニメキャラの名前等の固有名詞。

各種ビューア

画像には今も feh を使っている…… 薄い本をスキャンして電子化していたりするんだけど、そういうのを読むときは mcomix を使っている。

音声や動画には、昔は MPlayer を使っていたけど、その fork の MPlayer2 を経由して、最近はさらに別の fork の mpv を使っている。 MPlayer 系は余計な GUI 要素がなくて、キーボードで完結できるのがよい。

PDF は Evince がよくできているので使っている。これ入れると GNOME 系の一部が依存で入ってくるけど仕方ない… 別途 poppler-data というパッケージも入れないと日本語を表示できない点に注意。 パスワードが設定されている PDF も Evince で普通に扱えるんだけど、まぁだるいので適当にパスワードを外したりしている… https://github.com/eagletmt/misc/tree/master/cxx/pdf-unlock

スクリーンショット、スクリーンキャプチャ

ImageMagick に import というコマンドが含まれているので、それでスクリーンショットは簡単にとれる。

スクリーンキャプチャが欲しいときは FFmpeg を使って ffmpeg -f x11grab で。

Bluetooth

これは他に代替無いだろってかんじだけど BlueZ 5 を使っている。 BlueZ 4 -> 5 と PulseAudio 4 -> 5 の過渡期があってその時期はつらみがあったけど、まぁ今は BlueZ 5 + PulseAudio 8 で問題無く使えている。 そのへんの使い方とか設定はだいたい ArchWiki を見ればわかる。 https://wiki.archlinux.org/index.php/Bluetooth https://wiki.archlinux.org/index.php/Bluetooth_headset

フォント

最近は Web ページで色んなフォントが設定されていたり Unicode の絵文字が普通に使われるようになって、fontconfig でそのへんをちょっと調整しないとつらい時代になった。 基本的にはプロポーショナルフォントには Migu等幅フォントには Ricty を使っている。 これでカバーできていない絵文字やハングル等は Noto Font を使っている。 Linuxレンダリングすると汚ないようなフォントが一部サイトでは font-family に指定されているので、fontconfig で sans-serif とか monospace に書き換えていたりする。 https://github.com/eagletmt/dotfiles/blob/master/dot.config/fontconfig/fonts.conf

こういうのを設定していると「この文字のグリフを含むフォントは何だろ?」というのを知りたくなると思うんだけど、標準の fc- 系のコマンドでそれを達成する方法が分からなかったので、自分で書いたりした https://github.com/eagletmt/misc/tree/master/cxx/fc-find

fontconfig の設定については、例によって ArchWiki が参考になる https://wiki.archlinux.org/index.php/Font_configuration