2013-08-24 28 views
1

我在shell上使用SWT setAlpha()方法。透明度正常工作在KDE和GNOME環境,即在輸入端子:如何在沒有窗口管理器的SWT中製作透明shell?

java -jar program.jar 

,但是當我開始在純X我的Java應用程序,而窗口管理器外殼是不是透明的,並具有白色背景。我用startx命令和X執行我的〜/ .xinitrc腳本,它包含:

public void showTransparentShell() { 
    transparentShell = new Shell(shell, SWT.NO_TRIM); 
    transparentShell.setAlpha(120); 
    transparentShell.setBackground(Display.getDefault().getSystemColor(SWT.COLOR_WHITE)); 
    transparentShell.setBounds(shell.getBounds()); 
    AlphaEffect.fadeOnClose(transparentShell, 900, new ExpoOut(), animationRunner); 
    transparentShell.open(); 
    AlphaEffect.setAlpha(animationRunner, transparentShell, 160, 900, new ExpoOut(), null, null); 
} 

我使用SWT-3.7-2和GTK的3.2:

cd /home/user 
java -jar ./program.jar 

這裏是方法的代碼。 0

Linux在透明度方面需要什麼?必須爲 「透明度效果」安裝哪些組件/庫/軟件包才能正常工作?

編輯:谷歌上搜索後數小時我碰到的解決方案來了,我只是我的java程序啓動前KWIN:

kwin& 
cd /home/user 
java -jar ./program.jar 

唯一的問題是不是KWIN是相當大的,有很多依賴關係的。我必須在256 MB內存的計算機上運行我的程序,所以也許有人知道有點輕的窗口管理器支持透明度,並將與Kwin一樣用SWT工作?

回答

3

我終於找到了如何解決我的問題。也許這對別人有幫助。 SWT在Linux中使用開羅繪製透明效果,需要以下庫:必須裝載

libswt-cairo-gtk-3-jni 
libcairo2 
libxcomposite1 
libxdamage1 

以下的XOrg擴展:

Composite 
DAMAGE 

GDK要求窗口進行合成繪製的透明度,所以我需要使用窗口經理。 KWin很沉重,我用xfwm4代替。 xfwm4有內置合成器必須是enabled.To啓用xfwm4合成只需編輯屬性文件:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml 

,並設置:

<property name="use_compositing" type="bool" value="true"/>