簡體   English   中英

在Ubuntu中沒有桌面環境的情況下啟動程序時窗口周圍沒有陰影

[英]No shadows around window when I start program without desktop environment in Ubuntu

操作系統:Ubuntu 16.04

我編寫了一個Qt程序並在沒有桌面環境的情況下運行它。

這是我有關如何在沒有桌面環境的情況下運行它的問題。

如何在沒有桌面環境的情況下運行GUI應用程序並使它全屏顯示?

很快,我通過兩個步驟進行操作:

  1. 在/ etc / lightdm中添加lightdm.conf以啟動我的xsession;
  2. 在/ usr / share / xsession中添加一個.desktop文件以啟動我的程序:

    2.1啟動compiz作為窗口管理器;

    2.2啟動我的程序。

腳本的最后兩行是這樣的:

compiz&
/home/kevin/myapp

現在我還有另一個問題

當程序中彈出一個窗口時,窗口周圍沒有陰影 ,就像桌面環境中的程序一樣。

因此,彈出窗口與其父窗口之間沒有清晰的邊界。

但是,當我在桌面環境中運行它時,彈出窗口周圍有陰影。

如何在彈出的窗口周圍留下陰影?

將您的問題歸結為它的本質,您要問的是為什么,當您在沒有窗口管理器的情況下運行X11程序時,卻沒有得到窗口管理器的裝飾。 答案當然是“因為沒有窗口管理器”。

https://zh.wikipedia.org/wiki/X_window_manager

簡而言之,X11窗口(通常)只是矩形,它們使應用程序可以在專有區域中進行繪制,而不會干擾其他應用程序。 它可以像平常一樣管理輸入,但在視覺上,它只是矩形。

X11確實允許運行一個特殊的程序,稱為“窗口管理器”。 每當您想顯示一個窗口時,該程序就會知道,並對該窗口進行處理。 特別是,標准的做法是將窗口包裝在窗口管理器的窗口內,並為窗口顯示一堆控件。 這些功能包括最大化,最小化,關閉,輕松移動窗口,調整大小等。

您可以使用名為xwininfo的程序查看此額外窗口。 您會看到,當您不使用管理程序運行程序時,它只是您的窗口。 與管理器一起運行時,您的窗口是其他一個或多個(取決於WM)窗口的子窗口。

您談論的陰影也是窗口管理器所做的事情。 如果沒有它運行,您將無法獲得它。

至於解決方案,我可以想到兩個:

  1. 編寫您自己的迷你窗口管理器。 它既可以是官方的窗口管理器,也可以只用一個更大的窗口包裹您自己的應用程序窗口,該窗口會增加一個黑色像素像素。

要么

  1. 使用窗口管理器,並要求它不要將其控件添加到窗口中。 窗口管理器之間的詳細信息略有不同,但是DOCK窗口類型可能會滿足您的要求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM