シェルで SWT setAlpha() メソッドを使用しています。透過性は、KDE および GNOME 環境で正しく機能します。つまり、ターミナルで次のように入力します。
java -jar program.jar
しかし、ウィンドウマネージャーシェルなしで純粋なXでJavaアプリケーションを起動すると、シェルは透明ではなく、白い背景になります。コマンド 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
唯一の問題は、Kwin がかなり大きく、多くの依存関係があることです。私は 256 MB の RAM を搭載したコンピューターでプログラムを実行する必要があるため、透明性をサポートし、Kwin と同じように SWT で動作する、もう少し軽量なウィンドウ マネージャーを知っている人がいるでしょうか?