たとえば、rofiは次のように実行されます(またはコードで理解されているように、そうでなければ親ウィンドウから継承されます)。しかし、i3とpicomの設定では、クラス名と一致するよりも一般的なことをしたいと_NET_WM_WINDOW_TYPE_NORMAL
思います。_NET_WM_WINDOW_TYPE_POPUP_MENU
できることを知っていますが、xprop -set
どのように/どこで行うべきですか?それとも、これらすべてが虐待であり、私が違うことをするべきですか?
答え1
Matrix / IRCチャンネルでManuele Torre(emanuele6)と話した後、彼は次のソリューションを提案しました。
rofi -show &
rofi_pid=$! rofi_wid=$(xdo id -mp "$rofi_pid") &&
xprop -id "$rofi_wid" \
-f _NET_WM_WINDOW_TYPE 32a \
-set _NET_WM_WINDOW_TYPE _NET_WM_WINDOW_TYPE_POPUP_MENU
インマヌエル書の第6章の引用:
デフォルトでは、exec rofi...&はrofiコマンドです。 rofi_pid=$! は新しい rofi プロセスの pid です。 rofi_wid=$(xdo id -mp "$rofi_pid") 対応する _NET_WM_PID を持つウィンドウが存在するまで待ってから wid に出力します。最後に、原子を好きなように設定するxprop
これは設定されますが_NET_WM_WINDOW_TYPE
(少なくとも私にとっては)Picomはアニメーションを適用しません(ウィンドウがまだマップされているかどうかはわかりません)。
他のオプションはrofiフラグを使用することです。-normal-window
私はbspwmを使用しているので、rofi ... -normal-window
external_rulesで次のように設定しました。
# rofi set _NET_WM_WINDOW_TYPE
# bspwm doesn't manage these windows because rofi overrides redirect by default
case "$class" in
(*Rofi*)
#echo "manage=off" #this will break rofi focus don't use this
echo "layer=above"
echo "focus=on"
echo "state=floating"
xprop -id "$wid" \
-f _NET_WM_WINDOW_TYPE 32a \
-set _NET_WM_WINDOW_TYPE _NET_WM_WINDOW_TYPE_POPUP_MENU
;;
esac