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のマニュアルページ。