如何在Linux上的GTK sharp窗口前面引入另一个应用程序?

时间:2015-07-01 13:46:02

标签: c# linux mono debian

我有一个使用GTK#for Linux构建的应用程序,不是全屏。 相反,我已经使它成为一个无边框窗口,在启动时自动变为屏幕大小:

_window.Decorated = false;
_window.SetSizeRequest (_window.Screen.Width, _window.Screen.Height);
_window.Move (0, 0);

现在,当程序启动时,我也会启动xvkbd(或任何键盘,真的),因为这有点像这样成为触摸屏应用程序:

xvkbd -always-on-top

如果像这样启动xvkbd,它会以某种方式显示在我的应用程序后面,尽管不是" true"全屏。当装饰品打开时(因此有边框等)它会正确显示在它前面,但这不是我想要的应用程序。

有没有人知道如何让键盘出现在应用程序前面而不会成为窗口应用程序?我尝试使用wmctrl将应用程序移到前面,但这在应用程序中也不起作用。

1 个答案:

答案 0 :(得分:0)

在询问后相对较快地回答,但我已经解决了我的问题。

_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终端中运行这些命令的进程)

由于窗口管理器不会将其识别为全屏应用程序,因此它将允许您使用键盘应用程序,直到再次单击其他应用程序(或者#34;始终位于顶部"可以在键盘应用程序上调用)。

如果您希望在应用程序关闭呼叫时返回任务栏" lxpanel"在终端中(作为退出申请的过程)。