技術メモ、Tips、忘備録

技術系のメモ、試してみたこと、その他

【Windows Terminal】右下にキャラクターを表示させる【海外でよくある】

どんなやつ?

こんなやつです。
f:id:monkey999por:20201023170852p:plain

1.画像の用意

まずは透過画像の用意です。Transparent animeとかでググるといいでしょう。
わたしはここを使わせていただきましたm(__)m

こんな感じでいくつかダウンロード!
上記のサイトからダウンロードする場合、リサイズして200pxくらいがちょうどいいです。
f:id:monkey999por:20201023171627p:plain

2.setting.jsonの書き換え

以下のように書き換えます。透過率は0~1の間でいじってみてください。

// ファイルのパス。使用可能な拡張子は`.jpg`、`.png`、`.gif `。
"backgroundImage": "%USERPROFILE%\\Documents\\my_contents\\Transparent_image_with_wt\\item\\1.png",

// 背景画像のストレッチ モード。元の画像をそのままのサイズで使用
"backgroundImageStretchMode": "none",

// 背景画像の配置。右下
"backgroundImageAlignment": "bottomRight",

// 背景画像の不透明度。0~1の間で設定。0に近いほど透明。
"backgroundImageOpacity": 0.8

そして起動。完成です。

3.表示する画像をランダムにしてみる

ここまでの内容だと画像が固定されてしまっているので、ちょっとつまらないです。ランダムにしてあげましょう。
調べてみた感じwindows terminalにそのような設定は無さそうだったので、ちょっと工夫します。

仕組み

1.読み込み先の画像パスを固定

"backgroundImage": "%USERPROFILE%\\Documents\\my_contents\\Transparent_image_with_wt\\main.png",

2.以下のようなバッチを用意。 ※2020/10/24追記..実行時に画面に文字が出ないように修正

@chcp 65001 > nul
@pushd %~dp0

@rem windows terminalが読み込む画像パスにランダムで画像を配置する

@set /a n=0
@for  %%A in (..\Transparent_image_with_wt\item\*) do @if exist %%A ( @set /a n=n+1 )

@rem 最初のランダムは使えない
@echo %RANDOM% > nul

@set /a R=(%RANDOM%*%n%/32768)+1

@copy /Y ..\Transparent_image_with_wt\item\%R%.png ..\Transparent_image_with_wt\main.png > nul

@wt

3.上記のバッチにパスを通す
4.windows terminalを起動するとき、はwin+rでランチャー起動⇒作成したバッチファイル名を入力しエンター。

何回か試してみます。
f:id:monkey999por:20201023175024p:plain
f:id:monkey999por:20201023175059p:plain
f:id:monkey999por:20201023175344p:plain

まだ画像が少ないんでかぶる率も高いですが、動作はOKですね!
あとは起動時に一瞬コマンドプロンプトが表示されるのが少し嫌ですが、まあ良しとしましょう。
読んでいただきありがとうございました。

参考

Anime transparent background PNG cliparts free download | HiClipart
Windows ターミナル プロファイルの設定 | Microsoft Docs

・免責事項

当方は、当記事にコンテンツを掲載するにあたって、その内容、機能等について細心の注意を払っておりますが、コンテンツの内容が正確であるかどうか、最新のものであるかどうか、安全なものであるか等について保証をするものではなく、何らの責任を負うものではありません。また、当方は通知することなく当記事に掲載した情報の訂正、修正、追加、中断、削除等をいつでも行うことができるものとします。また、当記事、またはコンテンツのご利用により、万一、ご利用者様に何らかの不都合や損害が発生したとしても、当方は何らの責任を負うものではありません。