reposition window partly outside screen (kwin related)

Duncan 1i5t5.duncan at
Fri May 25 13:18:23 BST 2018

Martin Koller posted on Tue, 22 May 2018 14:43:09 +0200 as excerpted:

> I want my application to show the Qt virtual keyboard when it's running
> on a touchscreen.
> To avoid that the virtual keyboard covers the input field, I'd like to
> move the whole application window upwards so that the input field is
> always visible above the VKB, and move the window back downwards when
> the keyboard hides.
> However kwin seems to restrict the y-coordinate to only positive values.
> Using xfwm4 this is possible (except when the window is fullscreen or
> maximized).
> How can this be solved (best in a way which works regardless of the
> window manager) ?

IIRC, I've not used a virtual keyboard since playing with them a bit way 
back in my MS era, which ended in 2001, so I've no specific experience of 
that utility, but three possible suggestions (following on from each 
other) altho you may have tried them:

1) Is it possible using kwin rules to (if only temporarily, I'm skipping 
a description of how to get to the window rules config here as I assume 
you know or can find it easily enough, ask if you need more detail) set 
it where you want?  Presumably this wouldn't work permanently as working 
with the app permanently partially offscreen would be at minimum 
inconvenent, but demonstrating that you could do it at least temporarily 
would help for the next step.

* Note that your mention of only being able to get positive Y values so 
far suggests that you might need to set/force more than the position.  In 
particular, "ignore requested geometry" may need to be forced on, and 
possibly "obey geometry restrictions" forced off.

I have quite a number of window rules setup, and I know some window 
positioning rules simply didn't work (even with force) until I set these 
additional rule-points to avoid the app overruling kwin's otherwise too 
gentle prodding.

2) I'd also try the wmctrl utility.  It does similar things to kwin 
window rules, but is command-line based and thus scriptable, making it 
possible to dynamically invoke the script (perhaps making it a position 
toggle, partial offscreen vs. full onscreen) with for instance a hotkey 
when necessary.  

* You can use the match rules you setup above to help you devise the 
match rule(s) for wmctrl.

* I regularly use this technique (along with a static kwin rule setup to 
overrule the window insistence points as above if necessary, while doing 
the dynamic positioning with wmctrl in a script) to accomplish "dynamic" 
positioning that I can't do with a kwin window rule because it's not 

3) You said "my application", implying you're writing it and that once 
you get it worked out with the above tools how to behave as you wish 
using these external tools, you can code up the same behavior builtin to  
the application itself.

Duncan - List replies preferred.   No HTML msgs.
"Every nonfree program has a lord, a master --
and if you use the program, he is your master."  Richard Stallman

More information about the kde mailing list