Hyperの壁紙をCLIから変更する

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 に不具合があるためです。

zshのselect文で文字化け(未解決) - 何にしても生っかじりの朴念仁

別にしょーもないバグですけどこれってちゃんとIssue立ってるんですかね?謎です。

参考

linux  WSL  Windows 

関連記事