夜勤(日没/日の出)に応じて端末の色を変更できますか?

夜勤(日没/日の出)に応じて端末の色を変更できますか?

夜勤(日の出/設定)に基づく条件付きターミナルカラーが欲しいです。

私はmacOS BigSur 11.2.3とzshを含む基本的な端末を使用しています。

答え1

特定の端末エミュレータがわかりませんがxterm(多くの端末エミュレータからAPIをコピーしました)、次のことができます。

printf '\e]11;%s\a' colorname

背景色を設定します。どこカラー名Xライブラリ関数でサポートされているすべての色仕様が可能ですXParseColor()

zsh次に、次のように、各プロンプトの前に空の太陽の位置に対応する色を使用してエスケープシーケンスを送信できます。

MY_LONGITUDE=$(curl -s 'http://ip-api.com/line?fields=lon')

# sanitise to avoid command injection vulnerability
[[ $MY_LONGITUDE = (-|)<0-180>(.<->|) ]] || MY_LONGITUDE=0

zmodload zsh/datetime
settermbg() {
  local sun_time distance_to_noon hue value chroma
  ((         sun_time = (${1-EPOCHSECONDS} + MY_LONGITUDE * 86400 / 360) % 86400 ))
  (( distance_to_noon = (sun_time - 43200. ) / 43200 )) # between -1 and 1

  ((              hue = (distance_to_noon + 1) * 180 ))
  ((            value = 100 - distance_to_noon ** 2 * 50 ))
  ((           chroma = distance_to_noon ** 2 * 60 ))

  printf '\e]11;TekHVC:%5g/%5g/%5g\a' $hue $value $chroma
}

precmd_functions+=(settermbg)

ここで使用される色規格の値TekHVC:hue/value/chromaは、太陽が空で最も高く、背景が最も明るく最も白く見える正午(太陽の時)までの距離に基づいて計算されます。

ここで、あなたの硬度(太陽が空で最も高い時期を決定するために使用されます)は、提供されたオンラインサービスを使用してあなたのIPアドレスに基づいて決定されますip-api.com。必ずしも正しい値を提供するわけではありません。旅行しない場合は、ハードコードする必要があります。

関連情報