Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在没有窗口管理器的情况下在SWT中创建透明shell?_Java_Linux_Swt_Transparency_Xorg - Fatal编程技术网

Java 如何在没有窗口管理器的情况下在SWT中创建透明shell?

Java 如何在没有窗口管理器的情况下在SWT中创建透明shell?,java,linux,swt,transparency,xorg,Java,Linux,Swt,Transparency,Xorg,我在shell上使用SWT setAlpha()方法。透明度在KDE和GNOME环境中正常工作,即在终端中键入: java -jar program.jar 但是当我在没有窗口管理器的纯X上启动java应用程序时,shell是不透明的,并且有白色背景。我使用命令startx和X执行我的~/.xinitrc脚本,该脚本包含: cd /home/user java -jar ./program.jar 以下是方法代码: public void showTransparentShell() {

我在shell上使用SWT setAlpha()方法。透明度在KDE和GNOME环境中正常工作,即在终端中键入:

java -jar program.jar
但是当我在没有窗口管理器的纯X上启动java应用程序时,shell是不透明的,并且有白色背景。我使用命令startx和X执行我的~/.xinitrc脚本,该脚本包含:

cd /home/user
java -jar ./program.jar
以下是方法代码:

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.0

Linux中需要什么来提高透明度?必须为其安装哪些组件/库/包 “透明度效应”起作用了吗

编辑:经过数小时的谷歌搜索,我找到了解决方案,我只是在java程序之前启动Kwin:

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

唯一的问题是than Kwin相当大,有很多依赖性。我必须在256MB内存的计算机上运行我的程序,所以也许有人知道一种更轻的窗口管理器,它支持透明性,并将以与Kwin相同的方式与SWT一起工作?

我终于找到了解决问题的方法。也许这对其他人会有帮助。linux中的SWT使用cairo绘制透明效果,需要以下库:

libswt-cairo-gtk-3-jni
libcairo2
libxcomposite1
libxdamage1
必须加载以下XOrg扩展:

Composite
DAMAGE
GDK要求合成窗口以绘制透明度,所以我需要使用窗口管理器。KWin太重了,我改用xfwm4。xfwm4具有必须启用的内置合成器。要在xfwm4中启用合成,只需编辑属性文件:

~/.config/xfce4/xfconf/xfce-perchannel-xml/xfwm4.xml
并设置:

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