mintty に背景画像を設定する

[mintty](https://mintty.github.io/) は `Cygwin`, `MSYS`, `Msys2` で使用されるターミナルエミュレータです。
普段 Windows マシンで開発している人にはおなじみのものかと思います。  

背景色や透過度をいじっていろいろとおしゃれにカスタマイズ出来るのですが、背景画像が設定できないのが個人的に難点でした。

ですが、[2018年6月](https://github.com/mintty/mintty/commit/bed2065c4f4dce5f7b81bad1e5332b6067fc4129) には、背景画像が設定できるようになっていたことを最近知りました。
この件について日本語でのページが少なかったので簡単に設定方法についてまとめてみようと思います。

# 設定可能なバージョン

[2.9.0](https://github.com/mintty/mintty/wiki/Changelog#290-1-july-2018) 以上である必要があります。

# 設定方法
[wiki](https://github.com/mintty/mintty/wiki/Tips#background-image)を確認します。
> Background image
> As an alternative to a background colour, mintty also supports graphic background. This can be configured with the option Background or set dynamically using special syntax of the colour background OSC sequence. The respective parameter addresses an image file, preceded by a mode prefix and optionally followed by a transparancy value. Prefixes are:
> 
> ```
* use image file as tiled background`
_ (optional with option Background) use image as picture background, scaled to window`
% use image as picture background and scale window to its aspect ratio`
= use desktop background (if tiled and unscaled), for a virtual floating window
```
> If the background filename is followed by a comma and a number between 1 and 254, the background image will be dimmed towards the background colour; with a value of 255, the alpha > transparency values of the image will be used.
> 
> Examples:
> 
> ```
Background=C:\cygwin\usr\share\backgrounds\tiles\rough_paper.png
-o Background='C:\cygwin\usr\share\backgrounds\tiles\rough_paper.png'
echo -ne '\e]11;*/usr/share/backgrounds/tiles/rough_paper.png\a'
echo -ne '\e]11;_pontneuf.png,99\a'
echo -ne '\e]11;=,99\a'
```
> Note that relative pathnames depend on proper detection of the current directory of the  foreground process. Note that absolute pathnames within the cygwin file system are likely not to work among different cygwin installations. To configure a background in $APPDATA/mintty/config (or %APPDATA%/wsltty/config), Windows pathname syntax should be used.

単純に `Background=` で画像ファイルを指定するだけです。
実際にやってみます。

※素材には [いらすとや](https://www.irasutoya.com/) さんのものをお借りしています。

```sh:.minttyrc
Background=/c/sample.jpg,140
```
![background_image_sample1.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154029/24c994d6-4b3d-ecd1-bc86-9464fcf1d394.png)

いい感じです。
## オプションなど

### 透過度
ファイル名のあとに`,140`の様に透過度？も指定可能です。

```sh:.minttyrc
Background=/c/sample.jpg,1
```
何も見えません。あまり小さすぎる値は適さないようです。
(**背景色を黒にしていることと関係あるかも？**)
![background_image_sample2.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154029/bb9a5497-b563-eb0a-efd1-89f3cf7fb37f.png)


```sh:.minttyrc
Background=/c/sample.jpg,254
```
だいぶくっきりです。逆にコンソール上の文字が読めないので大きすぎる値も微妙です。
![background_image_sample3.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154029/83fbbbb5-a9ad-7c2b-2649-6bd4a58124c0.png)


### `=` 以外の演算子

`Background` のあとには `=` 以外も指定可能なようですが、うまくいきません。。。
> ```
* use image file as tiled background
_ (optional with option Background) use image as picture background, scaled to window
% use image as picture background and scale window to its aspect ratio
= use desktop background (if tiled and unscaled), for a virtual floating window
```

```sh:.minttyrc
Background=/c/sample.jpg,254
```
```
Ignoring option 'Background*/c/sample.jpg,254' with missing value.
```
~~構文がうまく解釈されていないようです。通常の背景画像設定は出来たので、一旦これで満足しておきます。~~

---

**2019/05/17 追記**
公式ドキュメントを読み違えていました。

正しくは
```
Background=*/c/sample.jpg,140
```
の様に、`Background=`のあとに記載する必要があります。
@k-takata さん。ご指摘いただきありがとうございます！

ドキュメントを読んでみましたが、  

- prefix なし
- `*`
- `_`
- `%`
- `=`

僕の英語力では、それぞれの意味が正直良くわかりません。

実際に試したところ、

- `*`

に関しては、画像のサイズを維持したまま、ウィンドウ内を画像を繰り返す感じになりました。
![background_image_sample5.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/154029/512753f4-04bc-64a6-76ef-4a7a0f9dbcf8.png)

* prefix なし
- `_`
- `%`

に関しては、全部画面いっぱいに引き伸ばされるように見えます。。。
何が違うんだろう。

- `=`

に至っては全くわかりません。
何も背景に表示されなくなりました。