如何从脚本中获取当前窗口类名?

如何从脚本中获取当前窗口类名?

在我的脚本中,我想根据当前活动的应用程序执行不同的操作。如何获取当前活动窗口类名称?

有一个非常相似的问题:xdotool:如何测试当前窗口是否属于bash脚本中的某个类?但是人们只想检查活动窗口和按类名搜索的窗口是否相同。虽然我想实际获取班级名称。

我也看过https://superuser.com/a/615946/873855人们想要获取窗口名称的地方。我的任务与此非常接近。 xdotool 或 wmctrl 可以做到这一点吗?

答案1

如果您想在 X11 或 Wayland 中的 XWayland 窗口中执行此操作,可以使用 xdotool 完成(返回应用程序类的名称):

$ xdotool getactivewindow getwindowclassname
VSCodium

如果活动窗口是非X11(wayland),它将返回:

XGetWindowProperty[_NET_ACTIVE_WINDOW] failed (code=1)
xdo_get_active_window reported an error

答案2

解决办法是:

WINDOW_ID=$(xdotool getactivewindow)
CLASS_NAME=$(xprop -id $WINDOW_ID | rg WM_CLASS | cut -d '"' -f2)

我找不到相关文档getwindowclassname

相关内容