phoenix-power2016年のLinuxデスクトップ環境

幾つかのエントリーを読んで、自分も2016年のLinuxデスクトップ環境を書き残しておこうかなということで、私の現在の環境を大雑把にではありますが、残しておきます。

ディストリビューション

OSは、Arch Linuxを使用している。特に不便は感じてない。

私の場合、Linuxデスクトップを本格的に使い始めたのがManjaro Linuxからだったので、Arch Linuxへの移行は必然的だった。ManjaroはArchベースだ。

他のディストリビューションについては詳しくないし、触ったこともないので、基本的にLinux初心者。

どうしてManjaro LinuxからArch Linuxに移行したのかというと、その時に使っていたイメージが公式ではなく、カスタムイメージ、つまり個人がカスタマイズして公開しているものだったことが関係している。使っているうちに、自分でイチから構築してみようと思い立ったのがきっかけ。

Arch Linuxは巷で言われているように、アップデートが早い。そして、個人的な印象だが、とても安定している。また、たとえ起動しなくなったとしても、Archユーザーなら多分対応できると思われる。

Arch Linuxの個人用途は、様々なデバイスにインストールして、デスクトップ用途やサーバー用途に使っている。

具体的には、MacBook Air(Macは削除), Nexus7(Android-Chroot), USBなどにインストールして使っているが、このような使い方をしているので、ビルドに時間がかかるGentooはあまり向いてないと思われる。

Arch Linuxは、自動アップデートするように設定していて、これは多くのユーザーがやってることかもしれない。

pacman -Syuが日課と化しているユーザーもいるようで、私の場合、この辺は自動化している。もちろん、自動アップデートの危険性は理解しているが、正直、その危険性は手動の時とあまり変わらないと思うので、自動化している。

以下、大雑把ではあるが自動アップデートの内容を書いていく。ただし、正確ではないので注意されたし。しかし、やってることは大体わかると思う。例えば、再起動時及び、1時間ごとにアップデートする設定は以下のとおり。

1
2
3
4
5
6
7
8
9
10
11
$ sudo visudo
wheel NOPASSWORD:pacman -Syu --noconfirm, yaourt -Syua --noconfirm

$ crontab -e
0 * * * * sudo pacman -Syu --noconfirm && sudo yaourt -Syua --noconfirm
@reboot sudo pacman -Syu --noconfirm && sudo yaourt -Syua --noconfirm

$ sudo systemctl enable cronie
$ sudo systemctl start cronie

$ alias u="sudo pacman -Syu --noconfirm && sudo yaourt -Syua --noconfirm"

関係ないけど、エイリアスも書いておく。

その他にも、Arch Linuxを利用する理由はいくつかあるが、大きいものを述べると、(1)ArchWikiが充実している、(2)ロゴがカッコいい、など。

ログインマネージャー

slimを使用している。ログインマネージャーを利用する理由は特にないが、あえて言うなら、Xでの自動ログインの設定が簡単からだ。/etc/slim.confを編集すればいい。

また、ログアウトした時の画面もそれっぽいデスクトップになるので良い。殆どログアウトしないけど。

ウィンドウマネージャー

ウィンドウマネージャーは、awesomeからi3に移行した。

i3の感想としては、awesomeよりもすごく快適になったと思う。

i3の特徴としては、設定ファイルが書きやすいことと、アイコンメニューを使いやすいというのがある。

アイコンフォントを取り入れるには、CSSのような記述を行う。様々なプラグインが設定のしやすさを補っている。

ちなみに、他のウィンドウマネージャーは使ったことがないので、その点の比較は分からない。awesomeくらいしか使ってこなかった。

CLIユーザーは、WMをタイル型で選択するのが良いのではないだろうか。特に不便は感じたことがないし、普通のやつよりも便利が良いと思う。

ターミナル

私の場合、ターミナルは、Xと分けているが、urxvtとlilytermを使う。

urxvtは定番なので、lilytermについて紹介する。

lilytermの良い所は色々あるが、例えば、メニューからの設定が簡単にできる。キーバインドやテーマも一発。また、プロセスも自動で保護する仕様である。

シェルは、zsh, bashを使うが、zshメイン。エディタはvim。これらは、tmux上から使っている。

tmuxは様々な問題を抱えており、特に、2バイト文字の表示が端末とtmuxの設定などによって変わってくる。tmuxは主に、パッチを当てなければ、tmux-powerlineが使いにくい。

殆どは端末上で過ごしており、アプリもここから実行する事が多い。例えば、twitterならtweetvimがあるし、chatならweechatがある。また、それ以外にも多数のCLIクライアントが存在している。

フォント

フォントは、dejavuとrictyを使用。rictyには、アイコンフォントを合成して使っている。端末は、rictyベースだが、その他は、dejavuだ。

アイコンフォントは、例えば、font-awesome, octiconsをbowerなどで持ってくればよい。オリジナルはicomoonで作成。合成は、fontforgeで行う。スクリプトによる調整が必要。

ちなみに、フォントにパッチを当てなければpowerlineなどの表示が乱れることがあるので、その都度、対応する。パッチは、vim-powerlineのところに置いてあったと思う。

メディア

音楽は、昔からmplayerで聴いている。

mplayer2, mpvなどがメジャーではあるが、移行はしていない。メジャーなものは、tmux-powerlineなどのスクリプトを見れば分かる。

反対に、mplayerはapiがなく不便も多い。

例えば、audaciousはaudtoolを使って現在再生中の音楽情報を取得したりできる。しかし、mplayerではそうも行かない。下記のように出力される情報を活用して取得する必要があるので、不便な点も多い。

1
$ mplayer -identify foo.mp3 2> /dev/null | grep -e ID_FILENAME

動画は、cvlcを使っている。ここで言うcvlcというのは、vlcのインターフェイスにncursesを利用したものを言う。

そういえば、私は音楽、動画ともに常に2.5倍速再生している。そのため、下記のようなエイリアスを利用する。

1
2
3
4
$ alias cvlc="cvlc -I ncurses --rate=2.5"

$ alias mylist="find `pwd` -maxdepth 1 -mindepth 1 | grep -v "\/\." >! mylist"
$ alias mplayer="mplayer -speed 2.5 -af scaletempo,volnorm -novideo -loop 0 -playlist mylist"

動画処理などは、ffmpegを使う。ちなみに、画像処理はimagemagickやgraphicsmagickだ。

画像viewerはfehを使用するが、圧縮されたものはmcomixを使用する。GUIでは、gthumbが使いやすいので、spacefmなどで設定している。

ファイルマネージャー

ファイルマネージャーは昔からspacefmを使用するが、この辺、様々な設定と関連しているので、説明が面倒。よって、ポイントだけ述べる。

例えば、画像サムネイルを表示するための設定や自動マウントのための設定、アイコンやテーマの設定など。

まず、自動マウントについては、udevなどの設定が必要になる場合がある。これは、フォーマットにも関連する。例えば、exfatを自動マウントしたりとか。

次にアイコンの設定だが、私は昔からnumixを使用している。spacefmのデフォルトはadwaitaを選択するが、これが超絶ダサいので一括削除してnumixに置き換える。adwaitaはアップデートされないようignoreなどをpacman.confに書いておくと良いかもしれない。通常は、gtk2で設定するがこれに関しては後述する。

1
2
3
$ cd /usr/share/icons
$ sudo rm -rf Adwaita
$ sudo cp -rf Numix Adwaita

そういえば、gtkにnumixのテーマを当てることで、X全般に適用されるのでやっておく。ただし、下記はgtk3の設定なので注意。

~/.config/gtk-3.0/settings.ini
1
2
3
4
[Settings]
gtk-auto-mnemonics = 1
gtk-visible-focus = automatic
gtk-icon-theme-name = "Numix"

仮想環境

仮想環境下で利用するArch Linuxについて説明する。

virtualbox(vagrant)上で使用するArch Linuxについては、モジュールなどの関係から最新カーネルに追従するArch Linuxとの相性はあまり良くないと感じている。Arch Linux上で使用するvirtualboxについても同様である。ただし、これもignoreなどで対応すれば良い問題でもあるかもしれない。

コンテナから1つの処理を走らせるdockerにおいては特に問題はない。コンテナから複数の処理を簡単に実行できるsystemd-nspawnにおいても特に問題はないように感じる。

インターネットブラウザ

ブラウザは、firefox, chromiumを使う。デフォルト設定のほとんどを無効化し、アドオンは殆ど入れない。無効にする設定はjavascript, cookie, plugin, historyなどである。もちろん、flashも基本使わない。しかし、不便があればその都度、有効にしたり例外を定義したりする。

また、様々な設定がデフォルトでオフになっていて、その上アドオン無しでキー操作できるdwbも使うことがある。端末では、w3mを使用する。

接続は、vpngateからtor proxy経由でアクセスするのが望ましいと思われる。理由は、vpngateのほうに載せられている通り。この場合、hostやtorrcを適切に設定しないと、接続が相当遅延すると思われる。

また、例えば、curl接続の場合などに利用されるhttp_proxyなどの環境変数をroot, userで設定する必要がある。その関係で、個人的には、socks5 protocolを利用する事も多い。ちなみに、私は、wget派ではなく、curl派。

オーディオ

正直、オーディオに関してはあまり納得していない。現在は、pulseaudioのpasystrayを使用。過去は、alsaを使用していた。

これは、bluetooth関連によるところが大きく、現在、Bluez5とbluemanを使用している。

日本語入力

日本語入力には、あまりこだわりはない。xdotoolやxmodmapなどを補助的に利用し、fcitx-mozcを使う。

関係ないが、xdotoolは便利でよく使う。

ネットワーク

ネットワークは、netctlを使用して接続する。

wifiは、wifi-menuで書き出せるので、その設定ファイルを利用する。

見て分かるように、接続はこのように自動化をしている。また、切り替えも、ifconfig xxxbar downからnetctl start xxxfooしてもよいけど、自動化してもよい。

メインはIP=dhcpを利用するが、サーバーなどはIP=staticでAddressを固定することもある。

netctlについて知りたければ、とりあえず、/etc/netctl/exampleを見れば良いと思われる。

ディスプレイ

マルチモニタは、arandrを使って出力されるコマンドを使えば簡単に調整できる。

創作活動

創作活動、具体的には、作曲やイラスト、ゲーム制作などには、Linuxは基本的に向いていない。

私が使うツールはMacやWindows用のものが多い。

また、タイル型WMも全く合わない。gimpなど創作アプリには、微妙なウィンドウを構築するものが多いからだ。

wineも用途によってたまに使うが、最適とはいえない。また、Linuxをホストとして使うvirtualboxもイマイチな点が多く実用性はよろしくない。

それらがなければ、Linuxデスクトップは普通に使える。

特にカーネルから情報を取れるのが良いし、また、選択の自由さがある。

現在は役割を限定してLinuxデスクトップを使っているが、そのうち色々な用途で使っていきたいと思っている。

この記事で紹介されてるもので、知らないツールなどがあれば、以下のサイトで調べれば分かると思う。

https://wiki.archlinuxjp.org/