Linuxデスクトップ2016

2016年のLinuxデスクトップ環境をQiitaのほうでも残しておこうと思います。

### ディストリビューション

OSは、`Arch Linux`を使用しています。特に不便は感じていません。

昔は、`Manjaro Linux`を使っていました。Manjaro LinuxからArch Linuxへ移行したのは、1,2年くらい前だったと思います。

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

具体的には、MacBookにインストールしたり, Nexus7にインストールしたり, USBなどにインストールしたりです。Gentooのほうがハード対応が良いのですが、ビルドに時間がかかるためArchを使っております。

### 自動アップデート

Arch Linuxは、自動アップデートするように設定することがあります。

```bash:
$ sudo visudo
%wheel ALL=(ALL) NOPASSWORD:/usr/bin/pacman -Syu --noconfirm, /usr/bin/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
```

あと、手動でもアップデートしやすいようにエイリアスを設定しています。

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

### ログインマネージャー

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

ただ、毎度、`startx`する使い方もありだと思います。

### ウィンドウマネージャー

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

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

i3の特徴としては、設定ファイルが書きやすいことと、アイコンメニューを使いやすいというのがあります。`i3blocks`なんかも良いですね。

### ターミナル

私の場合、ターミナルは、Xと使い分けています。`urxvt`と`lilyterm`を使います。

urxvtは定番なので、lilytermについて紹介しますと、メニューからの設定が簡単にできたり、キーバインドやテーマ設定も簡単です。

シェルは、zsh, bashを使いますが、`zsh`メインです。理由はやはり、Tab選択ですかね。

エディタは`vim`を使います。

これらは、`tmux`から使うことが多いですね。

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

プロセス監視は、`htop`とかが便利です。


### フォント

フォントは、`dejavu`と`ricty`を使用します。端末は、rictyベースのものを使用し、その他は、dejavuです。

rictyベースというのは、フォント合成でアイコンフォントを使用するためです。

気になる方は、以下の記事で、簡単なフォント合成を紹介しています。

https://syui.github.io/blog/2016/02/12/terminal-status-line/

### メディア

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

mplayer2, mpvなどがメジャーですが、移行はしてません。しかし不便もあります。

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

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

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

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

```bash:
$ 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`です。早い処理が必要なときは後者を使います。

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

### ファイルマネージャー

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

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

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

また、spacefmは、`sudo`で使っても便利です。

次にアイコンですが、私は`numix`を使用します。

spacefmのデフォルトは`adwaita`を選択しますが、これが超絶ダサいので一括削除してnumixに置き換えます。


```bash:
$ cd /usr/share/icons
$ sudo rm -rf Adwaita
$ sudo cp -rf Numix Adwaita
```

adwaitaはアップデートされないようignoreなどをpacman.confに書いておくと良いかもしれません。通常は、gtk2で設定するとよいです。


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

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

### ディスク

GUIでは、ディスクは、`gparted`で操作するのが便利ですね。

Archユーザーは、`fdisk`や`cfdisk`などがおなじみですが。

### 仮想環境

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

`virtualbox(vagrant)`上で使用するArch Linuxについては、モジュールなどの関係から最新カーネルに追従するArch Linuxとの相性はあまり良くないと感じていますね。ゲスト:ArchLinux。

Arch Linux上で使用するvirtualboxについても同様。ホスト:ArchLinux。

ただし、これもignoreなどで対応すれば良い問題でもあるかもしれませんが。

コンテナから1つの処理を走らせる`docker`においては特に問題はありませんが、やはり、情報が不足気味。あまり使われていないのでしょうか。

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

あと、`wine`なども使うことがあります。

### インターネットブラウザ 

ブラウザは、`firefox`, `chromium`を使います。

デフォルトの設定は、ほとんどを無効化して使いますね。また、アドオンは殆ど入れないです。

無効にする設定はjavascript, cookie, plugin, historyなど。もちろん、flashも基本使いません。しかし、不便があればその都度、有効にしたり例外を定義したりします。

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

たくさんの広告が載っているサイトなどへアクセスする場合は、接続方法に気をつけたりもします。

接続は、[vpn gate](http://www.vpngate.net/ja/)からtor proxy経由でアクセスするのが望ましいと思われます。理由は、基本的には、vpn gateのほうに載せられている通りです。

この場合、hostやtorrcを適切に設定しないと、接続が相当遅延しますので、常用は実用的ではありません。ここで、気をつけなければいけないのは、例えば、curl接続の場合などに利用される`http_proxy`などです。環境変数をroot, userで設定する必要があったり。あと、私は、wget派ではなく、curl派。

上記のような関係で、個人的には、`socks5 protocol`を利用する事も多いですね。

### オーディオ

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

過去は、alsaを使用していましたが、alsaのほうが分かりやすかった気がします。

このような移行は、bluetooth関連によるところが大きく、現在、`Bluez5`と`blueman`を使用しています。

### 日本語入力

日本語入力には、あまりこだわりはありません。

`xdotool`や`xmodmap`などを補助的に利用し、`fcitx-mozc`を使います。

まあ、日本語入力というより、キーボード全般ということで。

### ネットワーク

ネットワークは、`netctl`を使用して接続するのが基本ですね。

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

見て分かるように、接続はこのように自動化しています。切り替えも、`ifconfig xxxbar down`から`netctl start xxxfoo`してもよいけど、自動化してもよいでしょう。`systemctl`を使えば出来ます。

アドレス関連は、メインは`IP=dhcp`を利用しますが、サーバーなどは`IP=static`でAddressを固定することもあります。必要に応じて。netctlについて知りたければ、とりあえず、`/etc/netctl/example`を見れば設定方法がわかります。

VPNなどを利用する場合は、`networkmanager`が便利なこともあります。その場合は、以下の様な感じで使います。

```bash:
$ sudo pacman -S networkmanager networkmanager-openvpn network-manager-applet
$ sudo systemctl start NetworkManager
$ nm-applet
```

ただし、`netctl`とは相性が悪いため、設定を切っておくこと。接続できない場合は、`netctl stop`したり、`ifconfig eth0 down`したり。

ファイアウォールは、`iptables`を使用します。デフォルトでは有効になっていないため、設定ファイルを置き起動させることから。

```bash:
$ sudo cp /etc/iptables/empty.rules /etc/iptables/iptables.rules
$ sudo systemctl start iptables
$ sudo systemctl enable iptables
```

スキャナは、`fing`なんか便利ですね。iOSとかで有名なアプリですが。`nmap`とか定番ですが。

トラフィック監視は、`iptraf-ng`なんか便利です。`wiresharek`など定番ですが。

### ディスプレイ

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

### まとめ

あとは、よく使うものはあまり思いつきませんね。

Linuxデスクトップは普通に使えて便利です。

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

面倒なので、個別にリンクを貼っていません。ごめんなさい。

https://wiki.archlinuxjp.org/