WindowsでHyperを使っていますが、わりと頻繁にターミナルの壁紙を変えたくなるので、CLIから移動せず(直接設定ファイルを弄らず)に変更できるようにしました。
今のところ問題は起きてませんがWSL内からWSL外のファイルを書き換えるので自己責任でお願いします。
方法
シェルスクリプトでローカルの画像ファイルを選択し、Hyperの設定ファイル .hyper.js
を sed で置換するだけ。
準備
CSSの設定
そもそも背景画像が設定されていなければどうしようもないので、.hyper.js
内で設定しておく。
.terms_terms
クラスに設定するといいみたいです。
【参考】実際に使っている設定
交換する壁紙の用意
どこでもいいですがサブディレクトリまでは見れないので一階層にまとめておいてください。
パスの設定
スクリプト内の以下の定数を環境に合わせて設定します。
パスはWindows形式で入力してください(/mnt/c/...
とか C:/...
は🙅)。
WALLPAPER_DIR
: 背景画像ファイルがあるフォルダのパスHYPER_CONFIG
: Hyper設定ファイル(.hyper.js)のパス
#!/usr/bin/env bash
WALLPAPER_DIR='C:\wsl\wallpaper\'
HYPER_CONFIG='C:\Users\example\AppData\Roaming\Hyper\.hyper.js'
PATH_JS=$(echo ${WALLPAPER_DIR} | sed -e "s,\\\,/,g")
PS3="Select number> "
select FILE in `\ls $(wslpath ${WALLPAPER_DIR}) | grep "^.*\.\(png\|jpe\?g\)$"` exit
do
if [ "${FILE}" = "exit" ]; then break; fi
sed -i -E "s,${PATH_JS}.*\"\)",${PATH_JS}${FILE:-default.png}\"\)"," $(wslpath ${HYPER_CONFIG})
done
動作
実行するとファイル一覧が表示されるので、対応する数字を入力すると、壁紙がその画像に切り替わります。
終了するときは最後の選択肢として表示される"exit"の番号を入力するか、C-cを入力してください。
デフォルトでは以下の仕様です。
- 拡張子が *.jpg *.jpeg *.png のものだけ一覧表示します
- 存在しないファイルが指定されると、
default.png
を読み込みます
まとめ
シェルスクリプトはたのしい
おわり
補遺
シバンにBashを指定しているのは、Zshの select
に不具合があるためです。
別にしょーもないバグですけどこれってちゃんとIssue立ってるんですかね?謎です。