linuxmint / linuxmint/muffin

[Bug] NET_WM_WINDOW_TILE_INFO assignments are ignored and / or overridden

Open
#612 14 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C
Stars
245
Forks
127
PR merge metrics
No merged PRs in 30d

Description

 * muffin version 4.8.1
 * Distribution - Mint 20.1
 * Graphics hardware: NVIDIA Corporation TU106 [GeForce RTX 2060] / nvidia-driver-470
 * 64 bit

Issue Question

I'm trying to tile xclock using xprop but it doesn't appear to be working. The window does not resize or change location after executing the command even though the properties appear to be updated. Is this a bug, or am I attempting to do something that is not supported / is out of alignment with how a window manager is intended to operate?

Steps to reproduce

Command execution (resolution: 5120x1415):

$ xdotool search -name xclock
144703498
$ xprop -id 144703498 -fs /tmp/xprop.formats -set _NET_WM_STATE "_NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_TILED"
$ xprop -id 144703498 -fs /tmp/xprop.formats -set _NET_WM_WINDOW_TILE_INFO "4, 1, 0, 720, 2560, 720, 0, 0"
$ xprop -id 144703498 -fs /tmp/xprop.formats -set _NET_FRAME_EXTENDS "0, 1, 24, 1"
$ xprop -id 144703498 | egrep "_NET_FRAME_EXTENDS|_NET_WM_WINDOW_TILE_INFO|_NET_WM_STATE"
_NET_FRAME_EXTENDS(CARDINAL) = 0, 1, 24, 1
_NET_WM_WINDOW_TILE_INFO(CARDINAL) = 4, 1, 0, 720, 2560, 720, 0, 0
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_TILED

Full xprop after command execution:

$ xprop -id 144703498
_NET_FRAME_EXTENDS(CARDINAL) = 0, 1, 24, 1
_NET_WM_WINDOW_TILE_INFO(CARDINAL) = 4, 1, 0, 720, 2560, 720, 0, 0
XKLAVIER_STATE(INTEGER) = 0, -269574400
_GTK_EDGE_CONSTRAINTS(CARDINAL) = 170
_NET_WM_STATE(ATOM) = _NET_WM_STATE_MAXIMIZED_VERT, _NET_WM_STATE_TILED
WM_STATE(WM_STATE):
		window state: Normal
		icon window: 0x0
_NET_FRAME_EXTENTS(CARDINAL) = 0, 0, 24, 0
_NET_WM_DESKTOP(CARDINAL) = 0
_NET_WM_ALLOWED_ACTIONS(ATOM) = _NET_WM_ACTION_MOVE, _NET_WM_ACTION_RESIZE, _NET_WM_ACTION_FULLSCREEN, _NET_WM_ACTION_MINIMIZE, _NET_WM_ACTION_SHADE, _NET_WM_ACTION_MAXIMIZE_HORZ, _NET_WM_ACTION_MAXIMIZE_VERT, _NET_WM_ACTION_CHANGE_DESKTOP, _NET_WM_ACTION_CLOSE, _NET_WM_ACTION_ABOVE, _NET_WM_ACTION_BELOW
_NET_WM_PID(CARDINAL) = 1829267
WM_PROTOCOLS(ATOM): protocols  WM_DELETE_WINDOW
SM_CLIENT_ID(STRING) = "1066fafc84f83a9828164419975251826000000021570350"
WM_CLIENT_LEADER(WINDOW): window id # 0x8a0000a
WM_LOCALE_NAME(STRING) = "en_US.UTF-8"
WM_CLASS(STRING) = "xclock", "XClock"
WM_HINTS(WM_HINTS):
		Client accepts input or input focus: False
		Initial state is Normal State.
		bitmap id # to use for icon: 0x8a00001
		bitmap id # of mask for icon: 0x8a00003
WM_NORMAL_HINTS(WM_SIZE_HINTS):
		program specified size: 164 by 164
		window gravity: NorthWest
WM_CLIENT_MACHINE(STRING) = "s27lxlap"
WM_COMMAND(STRING) = { "xclock" }
WM_ICON_NAME(STRING) = "xclock"
WM_NAME(STRING) = "xclock"

contents of /tmp/xprop.formats:

_NET_FRAME_EXTENDS 16c
_NET_WM_STATE 32a
_NET_WM_WINDOW_TILE_INFO 16c

Expected behaviour

The changes are detected and the window is tiled to the bottom left corner (LLC).

Other information

I did come across an issue with xprop being unable to assign multiple atom values, and have opened a related question to the xprop developers. But I am not sure if that is the underlying issue, as I have also tested with each _NET_WM_STATE atom value individually with the same results. From what I can tell by browsing this repository, _NET_WM_STATE_MAXIMIZED_VERT was added to accommodate some GTK behavior; however, it's my understanding that xclock does not use GTK.

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Reproduce the report with xclock, xdotool, and the three xprop assignments, then verify the resulting properties with the supplied xprop command. Trace muffin's handling of _NET_WM_STATE and _NET_WM_WINDOW_TILE_INFO; done means the reported assignments are acted on and xclock is tiled to the bottom-left corner.

Written by the indexing model from the issue text.

Assessment

Tech stack
c, linux
Domain
desktop, operating-systems
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
45/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.