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

C# 如何在Linux上的GTK sharp窗口前引入另一个应用程序?,c#,linux,mono,debian,C#,Linux,Mono,Debian,我有一个用GTK为Linux构建的应用程序,它不是全屏的。 相反,我将其设置为一个无边界窗口,当这样启动时,它会自动成为屏幕的大小: _window.Decorated = false; _window.SetSizeRequest (_window.Screen.Width, _window.Screen.Height); _window.Move (0, 0); 现在,当程序启动时,我也会启动xvkbd(或者任何键盘),因为这意味着在某个时候会成为一个触摸屏应用程序,比如: xvkbd -

我有一个用GTK为Linux构建的应用程序,它不是全屏的。 相反,我将其设置为一个无边界窗口,当这样启动时,它会自动成为屏幕的大小:

_window.Decorated = false;
_window.SetSizeRequest (_window.Screen.Width, _window.Screen.Height);
_window.Move (0, 0);
现在,当程序启动时,我也会启动xvkbd(或者任何键盘),因为这意味着在某个时候会成为一个触摸屏应用程序,比如:

xvkbd -always-on-top
如果像这样启动xvkbd,它无论如何都会出现在我的应用程序后面,尽管它不是“真正的”全屏。当装饰被打开时(所以有一个边框等等),它会正确地出现在它的前面,但这不是我想要从我的应用程序中得到的


是否有人知道如何使键盘显示在应用程序前面而不使其成为窗口应用程序?我曾尝试使用wmctrl将应用程序移动到前端,但这在应用程序中也不起作用。

询问后回答得相对较快,但我已经解决了问题

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

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

如果您希望在应用程序关闭时返回任务栏,请在终端中调用“lxpanel”(作为退出应用程序中的一个进程)