joewing / jwm

Joe's Window Manager
http://joewing.net/projects/jwm
MIT License
520 stars 84 forks source link

Document how to discover WM_CLASS values to use in config file #609

Open sccook5 opened 7 months ago

sccook5 commented 7 months ago

Request for documentation improvement. The documentation for the configuration file .jwmrc should include instructions for how to discover the value of WM_CLASS for a window group or application.

Rationale: values for WM_CLASS are non-intuitive, and hence difficult to guess correctly. The values can't be found from the .desktop files. The trick for revealing the values using xprop is obscure.

viruscamp commented 1 month ago

execute xprop and click the window

❯ xprop
_NET_WM_USER_TIME_WINDOW(WINDOW): window id # 0x1c00014
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_STICK, _NET_WM_ACTION_BELOW, _NET_WM_ACTION_ABOVE
_NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 0, 0
_NET_WM_STATE(ATOM) = _NET_WM_STATE_STICKY, _NET_WM_STATE_FOCUSED
WM_STATE(WM_STATE):
                window state: Normal
                icon window: 0x0
_NET_WM_STRUT(CARDINAL) = 0, 0, 0, 32
_NET_WM_STRUT_PARTIAL(CARDINAL) = 0, 0, 0, 32, 0, 0, 0, 0, 0, 0, 0, 1439
_NET_WM_DESKTOP(CARDINAL) = 4294967295
_NET_WM_ICON_NAME(UTF8_STRING) =
_NET_WM_ICON(CARDINAL) =        Icon (150 x 150):
        (not shown)

XdndAware(ATOM) = BITMAP
WM_NAME(STRING) = "LXQt Panel"
_NET_WM_NAME(UTF8_STRING) = "LXQt Panel"
_MOTIF_WM_HINTS(_MOTIF_WM_HINTS) = 0x2, 0x1, 0x0, 0x0, 0x0
_NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DOCK, _KDE_NET_WM_WINDOW_TYPE_OVERRIDE, _NET_WM_WINDOW_TYPE_NORMAL
_XEMBED_INFO(_XEMBED_INFO) = 0x0, 0x1
WM_CLIENT_LEADER(WINDOW): window id # 0x1c0000b
WM_HINTS(WM_HINTS):
                Client accepts input or input focus: False
                window id # of group leader: 0x1c0000b
WM_CLIENT_MACHINE(STRING) = "arch-vb"
_NET_WM_PID(CARDINAL) = 660
_NET_WM_SYNC_REQUEST_COUNTER(CARDINAL) = 29360138
_GTK_APPLICATION_ID(UTF8_STRING) = "lxqt-panel"
_KDE_NET_WM_DESKTOP_FILE(UTF8_STRING) = "lxqt-panel"
WM_CLASS(STRING) = "lxqt-panel", "lxqt-panel"
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW, WM_TAKE_FOCUS, _NET_WM_PING, _NET_WM_SYNC_REQUEST
WM_NORMAL_HINTS(WM_SIZE_HINTS):
                user specified location: 0, 868
                user specified size: 1440 by 32
                program specified minimum size: 1440 by 32
                program specified maximum size: 1440 by 32
                window gravity: Static