操作系统:Ubuntu 16.04
我写了一个Qt程序并在没有桌面环境的情况下运行它。
这是关于如何在没有桌面环境的情况下运行它的问题。
How can I run my GUI application without desktop enviroment and make it fullscreen?
很快,我通过两个步骤完成此操作:
在/ usr / share / xsession中添加一个.desktop文件来启动我的程序:
2.1启动compiz作为窗口管理器;
2.2启动我的程序。
脚本中的最后两行是:
compiz&
/home/kevin/myapp
现在我有另一个问题。
当我的程序中弹出一个窗口时,窗口没有阴影,就像桌面环境中的程序一样。
因此,弹出窗口与其父窗口之间没有明确的边界。
但是,当我在桌面环境中运行它时,弹出窗口周围会出现阴影。
如何在弹出的窗口周围出现阴影?
答案 0 :(得分:0)
将您的问题归结为其基本要素,您所问的是为什么,当您在没有窗口管理器的情况下运行X11程序时,您无法获得Window管理器的装饰。答案当然是“因为没有窗口管理器”。
https://en.wikipedia.org/wiki/X_window_manager
简而言之,X11窗口只是矩形(通常),允许应用程序在专用区域绘制,而不会干扰其他应用程序。它像您习惯的那样管理输入,但在视觉上,它只是矩形。
X11允许运行特殊程序,称为窗口管理器。无论何时你想要显示一个窗口,该程序都会知道,并且可以在该窗口中执行操作。特别是,标准的做法是将窗口包装在窗口管理器的窗口中,并为窗口显示一组控件。这些包括最大化,最小化,关闭,移动窗口,调整大小等的简单方法。
您可以使用名为xwininfo
的程序查看此额外窗口。你会看到,当你在没有经理的情况下运行你的程序时,它只是你的窗口。当您使用经理运行它时,您的窗口是一个或多个(取决于WM)其他窗口的子项。
你谈到的阴影也是你的窗口管理员所做的事情。如果你在没有它的情况下跑步,你将无法得到它。
至于解决方案,我可以想到两个:
或