You are not logged in.

#1 2025-02-25 05:33:29

redshoe
Member
Registered: 2015-12-16
Posts: 250

Python matplotlib xprop window class show up as python script name

What I am trying to do is to float windows on i3 window manager. I am specifically having problem with python matplotlib figure object. Before python 3.13 update, xprop showed matplotlib object xprop class as 'matplotlib'. But afterthe python 3.13 update, xprop class of matplotlib objects are different every time by changing the class string to python script. So for example, when I plot something with sample.0.py script, the class string would be "sample.0.py" for its xprop class. Why is this happening? Is there a way to somehow use other attributes of xprop than class for i3 window manager for the matplotlib object to be floated?

Thanks.

Offline

#2 2025-02-25 15:00:20

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,076

Re: Python matplotlib xprop window class show up as python script name

you can use every other attribute of xprop other than class, yes. see https://wiki.archlinux.org/title/I3#Cor … ng_dialogs for some other examples.

Offline

#3 2025-02-26 00:53:26

redshoe
Member
Registered: 2015-12-16
Posts: 250

Re: Python matplotlib xprop window class show up as python script name

Thank you for your reply.

So, from below xprop output, I can use anything that starts with WM_ prefix?

_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_VERT
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: True
		Initial state is Normal State.
		bitmap id # to use for icon: 0x160000b
		bitmap id # of mask for icon: 0x1600012
		window id # of group leader: 0x1600001
_GTK_THEME_VARIANT(UTF8_STRING) = 
XdndAware(ATOM) = BITMAP
_NET_WM_ICON(CARDINAL) = 	Icon (90 x 90):
_GTK_APPLICATION_OBJECT_PATH(UTF8_STRING) = "/org/matplotlib/Matplotlib3"
_GTK_UNIQUE_BUS_NAME(UTF8_STRING) = ":1.52"
_GTK_APPLICATION_ID(UTF8_STRING) = "org.matplotlib.Matplotlib3"
_NET_WM_OPAQUE_REGION(CARDINAL) = 0, 0, 849, 1415
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 23068681, 23068682
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x1600008
WM_CLIENT_LEADER(WINDOW): window id # 0x1600001
_NET_WM_PID(CARDINAL) = 27393
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLIENT_MACHINE(STRING) = "archlinux"
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified minimum size: 7 by 42
		program specified base size: 0 by 0
		window gravity: NorthWest
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_CLASS(STRING) = "histo.py", "Histo.py"
WM_ICON_NAME(STRING) = "Figure 1"
_NET_WM_ICON_NAME(UTF8_STRING) = "Figure 1"
WM_NAME(STRING) = "Figure 1"
_NET_WM_NAME(UTF8_STRING) = "Figure 1"

When I try to use WM_NAME(STRING), I get a script error. It seems that my xprop output does not have neither WM_WINDOW_ROLE nor WM_WINDOW_TYPE.

Offline

#4 2025-02-26 11:26:32

V1del
Forum Moderator
Registered: 2012-10-16
Posts: 25,076

Re: Python matplotlib xprop window class show up as python script name

wm_name should map to title in i3, but it doesn't look like you have much useful here for explicitly singling out matplotlib other than the GTK_APPLICATION_ID which you're unlikely be able to access: For which map to which see: https://i3wm.org/docs/userguide.html#command_criteria

Offline

#5 2025-02-26 20:58:13

redshoe
Member
Registered: 2015-12-16
Posts: 250

Re: Python matplotlib xprop window class show up as python script name

Is it possible to use widcard (*)? Since all the python scripts would be in *.py, I am wondering if I can use use wildcard to work around this.

Offline

Board footer

Powered by FluxBB