【Windows Terminal】右下にキャラクターを表示させる【海外でよくある】
どんなやつ?
こんなやつです。
1.画像の用意
まずは透過画像の用意です。Transparent anime
とかでググるといいでしょう。
わたしはここを使わせていただきましたm(__)m
こんな感じでいくつかダウンロード!
上記のサイトからダウンロードする場合、リサイズして200pxくらいがちょうどいいです。
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
でランチャー起動⇒作成したバッチファイル名を入力しエンター。
何回か試してみます。
まだ画像が少ないんでかぶる率も高いですが、動作はOKですね!
あとは起動時に一瞬コマンドプロンプトが表示されるのが少し嫌ですが、まあ良しとしましょう。
読んでいただきありがとうございました。
参考
Anime transparent background PNG cliparts free download | HiClipart
Windows ターミナル プロファイルの設定 | Microsoft Docs
【効率的にググる】Chromeの検索窓から、amazonやgithubの検索エンジンを使用するショートカット
前置き
私もついさっき知りました。タイトルのような便利な機能があったなんてまったく知らなかった。。
サクッとやり方だけ説明します。
使い方
例: amazomで検索する場合
Google Chrome
を開く- 左上の検索欄に
amazon.co.jp
と入力後、Tab
キーを押す - 以下のような表記になるので、調べたいワードを入力してエンター。
- 試しに
こたつ
で検索すると、amazonの検索結果が表示されます。
めっちゃくちゃ簡単かつ便利な機能ですね!
利用可能な検索エンジンについて
chrome://settings/searchEngines
に定義されているものが検索可能なようです。
私の場合はこんな感じです。
キーワード
がChromeの検索窓に入力する文字で、クエリURL
が実際にリクエストするURLのようですね。
ほかの例だと、例えば、
・Github.com
⇒ Githubでプロジェクト検索
・translate.google.com
⇒ 入力した文字をGoogle翻訳の翻訳結果を表示
・youtube.com
⇒ youtubeで動画を検索
となります。
以上になります。
読んでいただきありがとうございました。
参考
Set your default search engine - Computer - Google Chrome Help
Chrome のキーボード ショートカット - パソコン - Google Chrome ヘルプ
【Windows Terminal】起動時のシェルをWSL2(またはその他のシェル)に変更する
2020/10/23 追記
以下の記事は誤りです。(正確には誤りではないですが、やり方としては正しくないです。)追記した以下の内容が正しいです。
タイトルのことはWindows ターミナルのグローバル設定 | Microsoft Docsに記載の方法でできます。
私の場合はUbuntuにしたかったので、setting.jsonの"defaultProfile"
をwsl2のguid
に変更します。
ドキュメントをちゃんと読まないとダメですね。
前置き
タイトルの通りです。使ってますか?Windows Terminal
こんな風にいろんなシェルをペインで分けて使ったり、プロンプトを好きにカスタマイズしたりして使う、軽量なシェルクライアントです。
今回はそのWindows Terminalでデフォルトで起動されるシェルを変更します。
設定(Json)
Windows Terminalは設定にjsonを使います。開発者向けのツールだけありますね。
(ちなみに最初設定の開き方で迷いました。cmd.exeとかだと左上を右クリックなんですけ。これはタブバーにある▽
マークから開けます)
ここに設定方法が書いてありますが、少しわかりづらかったのでこうして記事にしました。
結論から書くと、こんな感じでデフォルトの起動するシェルを変えられます。以下はwslを起動しています。
"defaults": { // SETTINGS TO APPLY TO ALL PROFILES // "commandline": "例: cmd.exe" "commandline": "wsl" }, "list": [ // PROFILE OBJECTS ]
余談(よくわからなかったこと)
MS Docs見ると、こんな感じの説明がされてたんですが、
コマンド ライン これは、プロファイルで使用される実行可能ファイルです。 プロパティ名: commandline 必須かどうか: オプション 受け入れ可能: 実行可能ファイル名を表す文字列 既定値: "cmd.exe"
【Python】「間違えようのないやり方が、一つだけある」という考え方
先日、 言語設計者たちが考えること (THEORY/IN/PRACTICE) | Federico Biancuzzi, Shane Warden, 伊藤 真浩, 頃末 和義, 佐藤 嘉一, 鈴木 幸敏, 村上 雅章 |本 | 通販 | Amazonという本を読みました。
数多く存在するプログラミング言語、その言語の設計者たちが何を考え、どんな目標をもって取り組んでいるのかということがインタビュー形式で読める書籍となっています。
この本の中で、Pythonの生みの親であるGuido van Rossumu氏の「間違えようのないやり方が、一つだけある」という考え方が非常に良いものだと思ったので記事に残しておきたいと思いました。
私自身Pythonはやったことがないのですが、Pythonの設計として上記の考え方は非常に重要視されています。
プログラムって書ければいいというだけにはいきません。むしろ他人が書いたものを読むことの方が圧倒的に多いです。
そこで目的を達成するための方法が一つに絞られる、というこの考え方は、読む側にとって非常にありがたいものです。
言語レベルで手法が標準化されているのはありがたいですね~
そのうちPython触ってみたいですね
【WSL2】wsl2のインストールで0x80370102 エラーが出たときの対処方法【HP】
Windows 10でwsl2をインストールするときに一発でうまくいかなかった部分の対応をメモしときます。
以下の手順で進めました。
Install Windows Subsystem for Linux (WSL) on Windows 10 | Microsoft Docs
MS StoreでUbuntuをインストールし起動すると、以下のエラーが起こりました。
WslRegisterDistribution failed with error: 0x80370102
手順にもある通り、コンピューターのBIOS内部で仮想化が有効化されていないことが原因のようです。
私の場合はHPのPCなので、F10でBiosを起動し、System Configuration
⇒ Virtualization Technology
をEnable
にすればうまくいきました。
Powershellで引数をMandatory(必須)にするときに地味にハマったこと
事象
Powershellでスペースありの文字列型の引数を受け取るとき、受け取った値にダブルクォーテーションがついてたりついてなかったりするので、それについて。
以下のようにparam
を使って引数を受け取る自作関数があったとします。
function Get-Hoge{ param( [Parameter(Mandatory)] [string]$arg ) Write-Host $arg }
で、関数を呼ぶ時は以下の2つの呼び出し方があります。 渡すのはスペースを含む文字列とします。
パターン1
PS C:\Users\nogam> Get-Hoge -arg "has space" has space
これは問題なさそうですね。
パターン2(Mandatoryにより入力待ちから入力する場合)
PS C:\Users\nogam> Get-Hoge コマンド パイプライン位置 1 のコマンドレット Get-Hoge 次のパラメーターに値を指定してください: arg: "has space" "has space"
のほうは、ダブルクォーテーション付きで渡されます。
"has space"ではなくhas spaceとだけ入力すれば、ふつうにhas spaceが渡されます。
これを回避するためには、以下のようにTrim
すればよいです。
Write-Host $arg.Trim("`"")
何がハマったのか
ここからはPowershellの仕様とは関係ない運用的な話になります。
例えば、上記の関数が以下のようにファイルパスを受け取るような関数だった場合を考えます。
function Open-HogeFile{ param( [Parameter(Mandatory)] [string]$file_path ) $file = [System.IO.File]::Open($file_path, [System.IO.FileMode]::Open) $file $file.Close() }
パターン1の場合
PS C:\Users\nogam> Open-HogeFile -file_path "C:\Users\nogam\Downloads\hoge.txt" CanRead : True CanWrite : True CanSeek : True IsAsync : False Length : 11 Name : C:\Users\nogam\Downloads\hoge.txt Position : 0 Handle : 4228 SafeFileHandle : Microsoft.Win32.SafeHandles.SafeFileHandle CanTimeout : False ReadTimeout : WriteTimeout :
問題なさそうです。しかしパターン2だと
PS C:\Users\nogam> Open-HogeFile コマンド パイプライン位置 1 のコマンドレット Open-HogeFile 次のパラメーターに値を指定してください: file_path: "C:\Users\nogam\Downloads\hoge.txt" "2" 個の引数を指定して "Open" を呼び出し中に例外が発生しました: "パスに無効な文字が含まれています。" 発生場所 C:\Users\nogam\Downloads\test.ps1:6 文字:5 + $file = [System.IO.File]::Open($file_path, [System.IO.FileMode]:: ... + ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : ArgumentException null 値の式ではメソッドを呼び出せません。 発生場所 C:\Users\nogam\Downloads\test.ps1:8 文字:5 + $file.Close() + ~~~~~~~~~~~~~ + CategoryInfo : InvalidOperation: (:) []、RuntimeException + FullyQualifiedErrorId : InvokeMethodOnNull
当然ですが失敗します。
ところで、「この引数の渡し方は失敗するのがわかっているのに、なぜそんな渡し方をするの?」と思いますよね。
それは、この関数の運用を考えると見えてきます。この関数の利用者は、
1.エクスプローラーからファイルを右クリック⇒パスをコピー
2.関数を実行するときに、コピーしたパスをペースト
という手順を踏むことが多くなるはずです。
上記の1.でコピーしたパスはダブルクォーテーション付きでコピーされます。
また、この関数を利用するのがPowershellをあまり利用しない人だった場合、関数実行時に指定する引数と対話型プロンプトから指定する引数で渡し方が違うとは想像しにくいです
なので、引数はTrimして受けるのがいい気がしますね。
ここまでお読みいただきありがとうございます。