端末最大化時の明るさの増加

端末最大化時の明るさの増加

Vimを実行しているターミナルウィンドウを最大化したり、前景として表示したりするときに明るさを上げたいです。プロセスを最小化または背景化するときは、明るさを通常にリセットしたいと思います。

Vimの黒い背景を使用するときは、通常Chromeの白い背景よりも高い明るさが必要なので、自動的に発生するようにしたいと思います。

プログラムで明るさを減らすためにこれを使用します。

$ echo 1 | sudo tee /sys/class/backlight/acpi_video0/brightness

ウィンドウがVimを実行している端末の場合、どういうわけかGUIウィンドウの最小化/最大化イベントに接続して、上記のイベントをスクリプトとして実行できますか?

答え1

次のことができます。

xdotool search --onlyvisible . behave %@ focus getwindowgeometry |
while read x id && read x && read x; do
  eval "$(xprop -notype -id "$id" \
            8s '=$0\n' WM_CLASS \
            32a '="$0+"\n' _NET_WM_STATE)"
  [ "$WM_CLASS" = gnome-terminal ] &&
    [ "$_NET_WM_STATE" = "_NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ" ]
  rc=$?
  if [ "$rc" != "$last_rc" ]; then
    if [ "$rc" -eq 0 ]; then
      echo "set high brightness"
    else
      echo "set low brightness"
    fi
    last_rc=$rc
  fi
done

echo ...実際に明るさを設定するコマンドに置き換えられます。

アイデアは、xdotoolウィンドウのフォーカスが変更されたときに通知を受け取ることです。次に、xprop報告されたウィンドウIDを使用して、xdotool現在フォーカスがあるウィンドウがgnome-terminal最大化されていることを確認します。

xdotoolただし、起動後に接続されたWindowsでは機能しません。

より安定したアプローチは、現在アクティブなウィンドウを繰り返すことです。

while :; do
  # wait for a focus event:
  sh -c 'exec xdotool search --onlyvisible . behave %@ focus exec kill "$$"' 2> /dev/null

  id=$(xdotool getactivewindow)
  eval "$(xprop -notype -id "$id" \
            8s '=$0\n' WM_CLASS \
            32a '="$0+"\n' _NET_WM_STATE)"
  [ "$WM_CLASS" = gnome-terminal ] &&
    [ "$_NET_WM_STATE" = "_NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_MAXIMIZED_HORZ" ]
  rc=$?
  if [ "$rc" != "$last_rc" ]; then
    if [ "$rc" -eq 0 ]; then
      echo "set high brightness"
    else
      echo "set low brightness"
    fi
    last_rc=$rc
  fi
done

詳細は以下から確認できます。xdotoolのマニュアルページ

関連情報