i3ちょーいけてる(2)

#前回から
はい、前回の続きなんだが前回はまともにPCに入力する環境を作っただけで肝心のi3の設定までいかなかった。
しかしまあi3の設定なんてのは公式とarchのページ見とけばわかるのがほとんどだがいくつか変わったデスクトップ環境故に直面する問題があるわけで…それを個人的にまとめた。

#失われたボリュームコントロールを取り戻せ！
これはよいことの弊害だ、だよ？
i3は今まで慣れ親しんだデスクトップショートカットキーをバッサリ捨て去り、MODキー(windowsキー)にデスクトップ操作を集約させた。
これで頭ん中ではMODキー=デスクトップ操作、alt=アプリケーションのメニュー関連、ctrl=文字関連、と完全に住み分けすることができる。はずだ一般人には必要なのだ…。
さて肝心のボリュームコントロールだがまずはpactlをインストール。
```bash
yaourt -S pactl
```
そしてpacmdでアクティブなデバイスの割り振られた番号を特定する。

```bash
pacmd list-sinks | grep "* index" | sed -e 's/* index: //g'
```
どうやら* indexってアスタリスクがついてるデバイスがメインになってるらしい。
そして出てきた番号を元にconfigファイルに追記。

```~/.config/i3/config
bindsym XF86AudioRaiseVolume exec --no-startup-id pactl set-sink-volume "番号"  +10% && killall -SIGUSR1 i3status
bindsym XF86AudioLowerVolume exec --no-startup-id pactl set-sink-volume "番号"  -10% && killall -SIGUSR1 i3status
bindsym XF86AudioMute exec --no-startup-id pactl set-sink-mute "番号" toggle && killall -SIGUSR1 i3status
```

これでうまく動くはず。後ろのは私にもよくわかんね。
プリントスクリーンも死んでるがこれはi3の公式ドキュメントに確か書かれているはず。
swayというi3のwayland版のwmはまだまだいろいろぶっ壊れているのだが、デフォルトでffmpegを使って画像でも動画でも何でもキャプチャーござれという素敵機能がついている。全体的にまだまだぶっ壊れているが…。

#すべてボーダーレスで君もあなたもボーダーレス！

~~私がi3に替えた一番の理由であるのだが、アプリケーションのwindowにある数ピクセルの枠が気に入らない。枠があると見た目に段差が生まれ今のウェブの主流デザインのフラットさにはミスマッチだから。これは白Tに半ズボンで白Tの正面にプリントされた絵だけで流行を追っているようなそんなアンバランスさが画面に映りあまり好きではない。~~

なにか理由があって枠のサイズを0にしたいときは
```~/.config/i3/config
new_window none
new_float none
```
これは見た目に対してかなり強烈に働く。
1pxも無駄にしたくないときはぜひ活用すべき。
そして無駄にしてもよいならばi3-gapsというi3のforkで
windowとwindowの間に間隔を開けることができる拡張がついている。
これはunixpornの常連さんたちがいつも使っているので見栄えは折り紙つきである。

#どうしても指定の解像度で見たい場合はポップアップ
i3は万能とは程遠い。だが愛している。
しかし、まあ、どうしようもならない問題があってそれは
**タイルを指定のサイズで起動できない＆指定のサイズに変更できない！！**
これは大変。resizeというコマンドがあるんだがぶっ壊れている。
だがタイルをウィンドウ化(float)させると解像度を指定できるようになる。
floatさせるコマンドはwindowsキー+shift+space。とても簡単だ。
そしてそんな必要に迫られるときなど限られている。
ゲームを指定解像度でプレイしたい時や、動画をdot by dotで見たい時だ。
そしてそれは大抵1280x720であるからして…
```~/.config/i3/config
bindsym $mod+Shift+o resize set 1280px 720px
```
これで浮かせた時ボタンひとつで1280x720になれるはずだ。
大抵はいろんなアプリを他のワークスペースに突っ込みながらフルスクリーンにして作業するのがおすすめだがどうしてもという場合に活用してほしい。
ちなみにwindowsキー＋右クリックだとシームレスに枠を変形させられるからカーソルを直接操作するスクリプトならいけるかもしれない。
だからそんな希望を託して

```bash
rect=$(i3-msg -t get_tree | jq --raw-output 'recurse | select(.type? == "con" and .focused == true)| .rect[]')
echo $rect
```
現在のアクティブウィンドウからx座標,y座標,横の長さ,縦の長さを取得するコマンドをあなたに託したいと思う。jqを使った。
絶望から救ってください。
ちなみにswayではタイルも指定解像度に変更できるがやってみると、右下のタイルしかきっちり合った解像度にしてくれない。なぜだｗｗｗ

#mpv
シングルインスタンス？で起動しないプレイヤーはi3と相性が悪い。
再生する度にタイルのリサイズが起き、再生が終了するたびにリサイズが起こる。
これはぐちゃぐちゃーってなってあまり目に優しくない。
だからシングルで起動してもらうためにこんなスクリプトを作った。
まずpidof socatが必要。

```bash
yaourt -S pidof socat
```
そしてこっちがスクリプト

```bash
#!/bin/bash
#need socat pidof mpv
mpvsocket="/tmp/mpvsocket"
tmpplaylist="/tmp/tl.m3u8"
if pidof mpv;then
  output=""
  for media in "$@"; do
    output+="${media}\n"
  done
  echo -e $output > $tmpplaylist
  echo "loadlist \"$tmpplaylist\" replace" | socat - $mpvsocket && rm $tmpplaylist
else 
  mpv  --keep-open=yes --force-window=yes --input-ipc-server=$mpvsocket --ytdl-format='bestvideo[ext=mp4][width<=1920][height<=1080]+bestaudio[ext=m4a]' "$@"
fi
```

unixsocketを使ってmpvとプロセス間通信を行うスクリプト、なはず。
loadlistを使うことで複数のファイルにも対応している。
/tmpを使うのでセキュリティ的にあまりよろしくないんだろうけど、これ使うしかないよね？
作ってて気がついたんだがプレイリストファイルはcueファイルもしっかりと読み込んでくれた。
keep-openとforce-windowで再生終了後終了してぐちゃーってならないはず。
youtubeのオプションはh264の再生支援効かせながらも1080pで見たいというわがまま設定。
~~~もう全部mpv一人でいいんじゃないかなと思いcとgtkでプレイリスト作ってたが難航中。uiむずい。~~~
これと適当にmpv.desktopを改変して

```mpv-single.desktop
[Desktop Entry]
Type=Application
Name=mpv-single
GenericName=Multimedia player
Comment=Play movies and songs
Icon=mpv
Exec="どこか好きな場所"mpv-single.sh %U
Categories=AudioVideo;Audio;Video;Player;TV;
MimeType=application/ogg;application/x-ogg;application/sdp;application/smil;application/x-smil;application/streamingmedia;application/x-streamingmedia;application/vnd.rn-realmedia;application/vnd.rn-realmedia-vbr;audio/aac;audio/x-aac;aud$
X-KDE-Protocols=ftp,http,https,mms,rtmp,rtsp,sftp,smb
```
とか作れば再生できるはず。i3の設定でも

```bash
yaourt -S xclip
```

```~/.config/i3/config
bindsym $mod+m exec "どっか好きな場所"mpv-single.sh "$(xclip -o)"
```

とかしてクリップボードにコピーしたyoutubeのurlから直接mpvで再生とかできたりする。
mpv!mpv!

#まとめ
あまりまとまってない感じだが、実際の使用感はまずやってみなければわからない。
ぜひインストールしてみようぜ！
マウスメインの人こそ使うべき！
わからないことたくさんあるので群れよう。
i3タグの記事が増えることを願っています。

#参考文献
site:github.com なんちゃら
archlinuxの解説ページ
googleさん