Ubuntu 13.04では、特定のアプリケーションがトレイアイコンを作成することをホワイトリストに登録する(そして結果としてブラックリストに登録する)可能性がなくなりました。それ以来、JavaアプリケーションのトレイアイコンとWineアイコンはハードコーディングされ、常に表示されます。
特定のppasがありますが、systray.whitelistを返すことで統一パッチを提供します(ただし、14.04には対応していません)Javaのトレイアイコンを非表示にする他の方法があるかどうかを知りたい_アプリ(JDownloaderなど)
私は、sni-qtパッケージへの読み取りアクセスを拒否するapparmor-profileを実装することで、qt-applicationsにそうする方法があることを知っています(たとえば、SkypeやSpotifyの場合)
Javaアプリケーションおよび/またはWineアプリケーションにapparmorプロファイルまたは同様の何かを実装する方法はありますか?
ありがとう
Sneetshersの答えは完璧ですが、より単純な(そして明白な)ソリューションを発見しました。このアプローチはJDownloaderで機能しますが、他のすべてのJavaプログラムでも機能するはずです。
ロゴrm ~/.jdownloader/jd/img/logo/jd_logo_128_128.png
を削除し、その後touch ~/.jdownloader/jd/img/logo/jd_logo_128_128.png
で無効なpngアイコンを作成します
このアプローチを使用すると、いJavaアイコンなしでTrayIconプラグインを使用できます(トレイを最小化するのに便利です)。
JDownloaderの場合、実際にはモジュール設計です。トレイアイコンは、以下から無効にできるプラグインとして提供されます。
JDownloader→アドオン→アドオンマネージャー→拡張機能→チェック解除Activate box for JD Light Tray
Javaアプリケーションの一般的な場合、カスタムポリシールールを記述することにより、Javaセキュリティマネージャを使用できます。
Java.policy
に~/.jdownloader
ファイルを作成するには、次のものが含まれます。
grant codeBase "file:/home/user/.jdownloader/-" {
// full access
// permission Java.security.AllPermission;
// AWTPermission full or only selected elements from it
// permission Java.awt.AWTPermission "*";
permission Java.awt.AWTPermission "accessClipboard";
permission Java.awt.AWTPermission "accessEventQueue";
// permission Java.awt.AWTPermission "accessSystemTray";
permission Java.awt.AWTPermission "createRobot";
permission Java.awt.AWTPermission "fullScreenExclusive";
permission Java.awt.AWTPermission "listenToAllAWTEvents";
permission Java.awt.AWTPermission "readDisplayPixels";
permission Java.awt.AWTPermission "replaceKeyboardFocusManager";
permission Java.awt.AWTPermission "setAppletStub";
permission Java.awt.AWTPermission "setWindowAlwaysOnTop";
permission Java.awt.AWTPermission "showWindowWithoutWarningBanner";
permission Java.awt.AWTPermission "toolkitModality";
permission Java.awt.AWTPermission "watchMousePointer";
// Added by try and learn
permission Java.io.FilePermission "/-", "read,write,delete";
permission Java.util.PropertyPermission "*", "read,write";
permission Java.util.logging.LoggingPermission "control";
permission Java.lang.RuntimePermission "*";
permission Java.net.NetPermission "*";
permission Java.security.SecurityPermission "*";
permission javax.net.ssl.SSLPermission "*";
permission Java.net.SocketPermission "*", "connect,resolve";
permission Java.lang.reflect.ReflectPermission "*";
};
カスタムポリシーを使用するようにjdownloader
起動スクリプトを変更します
Sudo nano /usr/bin/jdownloader
追加:-Djava.security.manager -Djava.security.policy=Java.policy
to Javaコマンド呼び出し:
exec Java ${Java_OPTIONS} -Djava.security.manager -Djava.security.policy=Java.policy -jar JDownloader.jar $*
これらは、jdownloaderを起動できる最小限のルールです。さらに権限を追加する必要がある場合があります。 deny
オプションがないため、必要なgrant
ルールをすべて記述する必要があります。
参照:
Java.awt
:クラスSystemTrayJava.awt
:クラスAWTPermissionJava.security
:クラスBasicPermission
AllPermission
を除くaccessSystemTray
を付与する一般的なテンプレートを作成する場合は、Direct Known Subclassesを参照してください。したがって、残りのすべてのJavaアプリに使用できます。
ところで、//
を行の先頭に追加して、ルールの1つをコメントしてみてください。そのため、拒否されたアクセス許可のエラーがどのように見えるかを確認できます。追加する権限を示します。また、私は多くの-
&*
を使用して、簡単な解決策を探しているのでルールを拡張しようとしています(デフォルトはAllPermission
でした)。応用。
以下に、可能なすべての許可を付与しようとするテンプレートを示します。
grant codeBase "file:/home/user/.jdownloader/-" {
// permission Java.security.AllPermission;
// permission Java.awt.AWTPermission "*";
permission Java.awt.AWTPermission "accessClipboard";
permission Java.awt.AWTPermission "accessEventQueue";
// permission Java.awt.AWTPermission "accessSystemTray";
permission Java.awt.AWTPermission "createRobot";
permission Java.awt.AWTPermission "fullScreenExclusive";
permission Java.awt.AWTPermission "listenToAllAWTEvents";
permission Java.awt.AWTPermission "readDisplayPixels";
permission Java.awt.AWTPermission "replaceKeyboardFocusManager";
permission Java.awt.AWTPermission "setAppletStub";
permission Java.awt.AWTPermission "setWindowAlwaysOnTop";
permission Java.awt.AWTPermission "showWindowWithoutWarningBanner";
permission Java.awt.AWTPermission "toolkitModality";
permission Java.awt.AWTPermission "watchMousePointer";
permission javax.sound.sampled.AudioPermission "*";
permission javax.security.auth.AuthPermission "*";
// permission javax.security.auth.kerberos.DelegationPermission "";
permission javax.xml.bind.JAXBPermission "*";
permission Java.nio.file.LinkPermission "hard";
permission Java.nio.file.LinkPermission "symbolic";
permission Java.util.logging.LoggingPermission "control";
// permission Java.lang.management.ManagementPermission "*";
permission javax.management.MBeanServerPermission "*";
permission javax.management.MBeanTrustPermission "*";
permission Java.net.NetPermission "*";
permission Java.util.PropertyPermission "*", "read,write";
permission Java.lang.reflect.ReflectPermission "*";
permission Java.lang.RuntimePermission "*";
permission Java.security.SecurityPermission "*";
permission Java.io.SerializablePermission "*";
permission Java.sql.SQLPermission "*";
permission javax.net.ssl.SSLPermission "*";
permission javax.management.remote.SubjectDelegationPermission "*";
permission javax.xml.ws.WebServicePermission "*";
// permission "*";
permission Java.io.FilePermission "/-", "read,write,execute,delete,readlink";
permission javax.management.MBeanPermission "*", "*";
// permission javax.security.auth.PrivateCredentialPermission "", "read";
permission javax.security.auth.kerberos.ServicePermission "*", "initiate,accept";
permission Java.net.SocketPermission "*", "accept,connect,listen,resolve";
permission Java.net.URLPermission "*";
};
注:
Java Policy Toolsは、ポリシーファイルを編集するためのGUIツールです。ドロップボックスから利用可能なすべてのオプションを見つけるのがより簡単になります。 Javaパッケージで既にインストールされているはずです。
明らかなより良い解決策は見当たらないので、これが役立つ可能性があります。
一緒にトレイを取り除くことができます!
xfce4-panel
が好きです)トレイベースの機能を今すぐ見逃した場合、ほとんどの場合、いくつかのイベントでデスクトップ通知を表示するスクリプトのように、何とかしてケースごとに交換可能です。
トレイアイコンを使用するすべてのアプリケーションでUbuntu 14.04で使用できるようにする場合、Unityにパッチが適用されたPPAを使用して、systrayホワイトリストを再度有効にすることができます。これを行うには、ターミナルを開き、次のコマンドを実行します。
Sudo add-apt-repository ppa:gurqn/systray-trusty
Sudo apt-get update
Sudo apt-get upgrade
次に、ALT + F2を押して「unity」と入力するか、ログアウトしてUnityを再起動します。 PPAはすべてのアプリケーションを自動的にホワイトリストに登録するようになったため、システムトレイを使用するために個々のアプリを手動でホワイトリストに登録する必要はありません。
変更を元に戻す
変更を元に戻し、UbuntuリポジトリからデフォルトのUnityパッケージに戻す場合は、以下のコマンドを使用してUnityシステムトレイホワイトリストPPAを削除します。
Sudo apt-get install ppa-purge
Sudo ppa-purge ppa:gurqn/systray-trusty
から http://www.webupd8.org/2013/05/how-to-get-systray-whitelist-back-in.html