Yesterday I tried to layout a bunch of program windows via xdotools moveto and resize. In theory they should have been all the same size, but they came out all different, and none had the targeted size. They all had space around them. What is involved in this process? Are there invisible borders, or stuff like that?
I noticed something similar the other day when playing around with
xdotool
. I asked it where a window was and then moved the window to that position - what should have been a no-op - and the window moved. I figured it was an interaction with the Cinnamon window manager. Yours (if not Cinnamon) may be doing the same.xdotool
reports where it “thinks” a window is. Requesting where a window be moved withxdotool
is handed off to the window manager, which may or may not take into account window spacing, borders, the phase of the moon, etc., and so that might put the window in a slightly different place.You could try
wmctrl
instead. It’s not as feature rich, but can definitely move windows around and might have different results for you. (I know I use it for one thing in particular and that seems to work, but then it has been a while since I set it up and I can easily imagine having tweaked the numbers until things looked right.)There’s also that some software really doesn’t like to be moved or resized and will refuse to change. That’s bad practice, but there’s nothing that can be done really, unless you have an especially forceful window manager.
Maybe you are running Wayland and not X11?
Nope, I switched back to X11 after I found, that xdotool couldn’t work with Wayland, and ydotool doesn’t support window handling.
Autsch! I would never do that… X11 is such a broken mess, but then my window management needs seem to be very different from yours.
Applications do have a say in how big they get rendered (typically by giving a min/max/preferred size), which window managers may or may not resepct/adjust for after the window comes up. Maybe it is just that.
Most windows in X are actually two windows: one inset inside the other. That’s how you get a border & title bar. Does that account for the error you’re seeing?