我正在使用RDESKTOP和SeamlessRDP。这样我就可以在Linux机器上打开Windows应用程序。我还加入了Devilspei2,这样我就可以控制窗户的装饰。devilspei2使用lua作为配置管理。我把一切都做好了。剩下的唯一问题是将打开的(对话框)窗口移动几个像素,因为VNC窗口将显示为有装饰(但没有装饰)。我通过对移动所需的像素量进行硬编码来获得代码。问题是我们这里有多个发行版,它们的窗口装饰有不同的像素大小。
我想得到的是以像素为单位的装饰尺寸,而不是对它们进行硬编码,这样它就可以完美地适用于我所有的发行版。
这是自动取款机的代码:
if get_window_class()=="SeamlessRDP" then
undecorate_window();
--x-1 and y-28 works for one distro but for the other I need to use x-6 and y-27
if get_window_type()=="WINDOW_TYPE_DIALOG" then
x, y = xy();
xy(x-1, y-28);
end
end
从脚本中可以看到。如果我能以某种方式调用窗口装饰的大小,然后使用它们,而不是硬编码像素,那就更好了。
编辑(回答):
尽管我在下一篇文章之前找到了答案,但我还是想接受它,因为它确实显示了正确的路径。我只是在这里进一步评论,以显示完整的答案:
--get x and y's for decorated and non-decorated windows
x1, y1, width1, height1 = get_window_geometry();
x2, y2, width2, height2 = get_window_client_geometry();
--calculate pixels to slide window
xpixel = x2-x1;
ypixel = y2-y1;
--check if class is seamlessrdp
if get_window_class()=="SeamlessRDP" then
undecorate_window();
--if window is a dialog then move it
if get_window_type()=="WINDOW_TYPE_DIALOG" then
xy(x1-xpixel, y1-ypixel);
end
end