{"action":"created","issue":{"url":"https://api.github.com/repos/i3/i3/issues/1658","labels_url":"https://api.github.com/repos/i3/i3/issues/1658/labels{/name}","comments_url":"https://api.github.com/repos/i3/i3/issues/1658/comments","events_url":"https://api.github.com/repos/i3/i3/issues/1658/events","html_url":"https://github.com/i3/i3/issues/1658","id":68373513,"number":1658,"title":"Feature request: Matching window types in command criteria","user":{"login":"Hubro","id":597206,"avatar_url":"https://avatars.githubusercontent.com/u/597206?v=3","gravatar_id":"","url":"https://api.github.com/users/Hubro","html_url":"https://github.com/Hubro","followers_url":"https://api.github.com/users/Hubro/followers","following_url":"https://api.github.com/users/Hubro/following{/other_user}","gists_url":"https://api.github.com/users/Hubro/gists{/gist_id}","starred_url":"https://api.github.com/users/Hubro/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Hubro/subscriptions","organizations_url":"https://api.github.com/users/Hubro/orgs","repos_url":"https://api.github.com/users/Hubro/repos","events_url":"https://api.github.com/users/Hubro/events{/privacy}","received_events_url":"https://api.github.com/users/Hubro/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/i3/i3/labels/accepted","name":"accepted","color":"fbca04"},{"url":"https://api.github.com/repos/i3/i3/labels/enhancement","name":"enhancement","color":"84b6eb"},{"url":"https://api.github.com/repos/i3/i3/labels/missing-log","name":"missing-log","color":"ededed"},{"url":"https://api.github.com/repos/i3/i3/labels/missing-version","name":"missing-version","color":"ededed"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":8,"created_at":"2015-04-14T13:26:41Z","updated_at":"2015-04-17T21:29:13Z","closed_at":null,"body":"Some applications (e.g. [Shutter][1]) doesn't provide any window roles or instance names to distinguish between its various windows. It does, however, have different window types. The main window is a \"normal\" window, and all other windows are \"dialog\" windows:\r\n\r\nMain window:\r\n\r\n    _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_NORMAL\r\n\r\nPreferences window:\r\n\r\n    _NET_WM_WINDOW_TYPE(ATOM) = _NET_WM_WINDOW_TYPE_DIALOG\r\n\r\nIt would be very useful to be able to match these window types in the command criteria. According to the [freedesktop.org WM spec][2], the different window types are:\r\n\r\n  - `_NET_WM_WINDOW_TYPE_DESKTOP`\r\n  - `_NET_WM_WINDOW_TYPE_DOCK`\r\n  - `_NET_WM_WINDOW_TYPE_TOOLBAR`\r\n  - `_NET_WM_WINDOW_TYPE_MENU`\r\n  - `_NET_WM_WINDOW_TYPE_UTILITY`\r\n  - `_NET_WM_WINDOW_TYPE_SPLASH`\r\n  - `_NET_WM_WINDOW_TYPE_DIALOG`\r\n  - `_NET_WM_WINDOW_TYPE_DROPDOWN_MENU`\r\n  - `_NET_WM_WINDOW_TYPE_POPUP_MENU`\r\n  - `_NET_WM_WINDOW_TYPE_TOOLTIP`\r\n  - `_NET_WM_WINDOW_TYPE_NOTIFICATION`\r\n  - `_NET_WM_WINDOW_TYPE_COMBO`\r\n  - `_NET_WM_WINDOW_TYPE_DND`\r\n  - `_NET_WM_WINDOW_TYPE_NORMAL`\r\n\r\nThey could be used in command criteria like this:\r\n\r\n    [class=\"Shutter\" type=\"normal\"]\r\n\r\nAnd this:\r\n\r\n    [class=\"Shutter\" type=\"dialog\"]\r\n\r\n---\r\n\r\ni3 version 4.8 (2014-06-15, branch \"4.8\")\r\n\r\n  [1]: https://launchpad.net/shutter\r\n  [2]: http://standards.freedesktop.org/wm-spec/wm-spec-latest.html#idm140200472629520"},"comment":{"url":"https://api.github.com/repos/i3/i3/issues/comments/94079126","html_url":"https://github.com/i3/i3/issues/1658#issuecomment-94079126","issue_url":"https://api.github.com/repos/i3/i3/issues/1658","id":94079126,"user":{"login":"Airblader","id":2392216,"avatar_url":"https://avatars.githubusercontent.com/u/2392216?v=3","gravatar_id":"","url":"https://api.github.com/users/Airblader","html_url":"https://github.com/Airblader","followers_url":"https://api.github.com/users/Airblader/followers","following_url":"https://api.github.com/users/Airblader/following{/other_user}","gists_url":"https://api.github.com/users/Airblader/gists{/gist_id}","starred_url":"https://api.github.com/users/Airblader/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Airblader/subscriptions","organizations_url":"https://api.github.com/users/Airblader/orgs","repos_url":"https://api.github.com/users/Airblader/repos","events_url":"https://api.github.com/users/Airblader/events{/privacy}","received_events_url":"https://api.github.com/users/Airblader/received_events","type":"User","site_admin":false},"created_at":"2015-04-17T21:29:13Z","updated_at":"2015-04-17T21:29:13Z","body":"For this we need to add handling for `_NET_WM_WINDOW_TYPE` (obviously), including changes of the type during runtime.\r\n\r\nAs per spec, a window can have multiple window types. @stapelberg Do we want to support multiple window types or only store the preferred one?"}}