我有一个用GTK#构建的应用程序,它不是全屏的。取而代之的是,我让它成为一个无边框的窗口,当启动时它会自动变成屏幕的大小,如下所示:
_window.Decorated = false;
_window.SetSizeRequest (_window.Screen.Width, _window.Screen.Height);
_window.Move (0, 0);现在,当程序启动时,我还启动了xvkbd (或任何键盘,实际上),因为这意味着在某个时刻变成一个触摸屏应用程序,如下所示:
xvkbd -always-on-top如果xvkbd像这样启动,它会以某种方式出现在我的应用程序后面,尽管它不是“真正的”全屏。当装饰被打开时(所以有一个边框之类的),它会正确地出现在它的前面,但这不是我想从我的应用程序中得到的。
有没有人知道一种方法,可以让键盘出现在应用程序的前面,而不是让它成为一个有窗口的应用程序?我尝试使用wmctrl将应用程序移到前面,但这在应用程序中也不起作用。
发布于 2015-07-01 23:04:30
在询问之后相对较快地回答,但我已经解决了我的问题。
_window.Decorated = false;
_window.SetSizeRequest (_window.Screen.Width - 1, _window.Screen.Height - 1);
_window.Move (0, 0);
TerminalCommand ("pkill", "lxpanel");这将关闭边框,使窗口不是全屏的,也不是无边框的全屏(因为它关闭了1个像素(不明显))。然后,我将窗口移到左上角,并终止任务栏。这允许我通过执行以下操作来调用键盘:
TerminalCommandNoWait("xvkbd", "-always-on-top");(TerminalCommand只是封装了一个在linux终端中运行这些命令的进程)
因为窗口管理器不会将其识别为全屏应用程序,所以它将允许您使用键盘应用程序,直到再次单击另一个应用程序(或者可以在键盘应用程序上调用"always on top“)。
如果你想在应用程序关闭时恢复任务栏,在终端中调用"lxpanel“(作为退出中的应用程序中的一个进程)。
https://stackoverflow.com/questions/31163178
复制相似问题