Java uygulamalarının tepsi simgesi oluşturmasını nasıl önleyebilirim?


16

Ubuntu 13.04 ile belirli uygulamaların bir tepsi simgesi oluşturmasını beyaz listeye alma (ve sonuçta kara listeye alma) olasılığı ortadan kalkmıştır. O zamandan beri Java uygulamalarının tepsi simgeleri ve Şarap simgeleri sabit kodlanmıştır ve her zaman görünür durumdadır.

Systray.whitelist (henüz 14.04 için değil, ama) geri vererek bir birlik yama sağlayan belirli ppas olmasına rağmen, java uygulamalarının tepsi simgelerini gizlemek için başka yollar olup olmadığını bilmek istiyorum (örn. JDownloader)

Sni-qt paketine (örneğin Skype veya Spotify için) okuma erişimini engelleyen apparmor profilleri uygulayarak qt uygulamaları için bunu yapmanın bir yolu olduğunu biliyorum.

Java uygulamaları ve / veya Wine uygulamaları için belirgin profiller veya benzeri bir uygulama yapmanın bir yolu var mı?

Teşekkürler


1
Simgelerine erişebilir ve şeffaf ve küçük olacak şekilde değiştirebilirsiniz, böylece neredeyse yer kaplamaz ve görünmez mi?
Tim

2
İyi fikir, ama hayır. 16x16 yeri java uygulamaları için ayrılmış gibi görünüyor. Görünmez bir 1px svg değiştirerek, hala 16x16 şeffaf olmayan bir simge alır
wa4557

1
Tamam, bu bir utanç ...
Tim

Yanıtlar:


2

Java Uygulamaları için:

  • Aslında JDownloader durumda, Modüler bir tasarım. Tepsi simgesi, aşağıdakilerden devre dışı bırakılabilen bir eklenti olarak gelir:

    JDownloader → Eklentiler → Eklenti Yöneticisi → Uzantılar → JD Işık Tepsisi için Etkinleştir kutusunun işaretini kaldırın

  • Java uygulamaları için genel durum, Özel ilke kuralları yazarak Java güvenlik yöneticisini kullanmak mümkündür.

    1. İçinde java.policydosya oluştur ~/.jdownloaderşunları içerir:

      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 "*";
      };
    2. jdownloaderÖzel ilkeyi kullanmak için başlatma komut dosyasını değiştirme

      sudo nano /usr/bin/jdownloader

      Add: -Djava.security.manager -Djava.security.policy=java.policyjava komut çağrısına:

      exec java ${JAVA_OPTIONS}  -Djava.security.manager -Djava.security.policy=java.policy -jar JDownloader.jar $*

Bunlar, jdownloader'ı başlatmama izin veren minimum kurallardır. Daha fazla izin eklemeniz gerekebilir. Herhangi bir denyseçenek olmadığından, gerekli tüm grantkuralları yazmanız gerekir .

Referanslar:

BTW, //satırın başına ekleyerek kurallardan birini yorumlamaya çalışın ; Böylece, reddedilen izinlerin hatasının nasıl göründüğünü görebilirsiniz. Hangi izni eklemeniz gerektiğini söyler. Ayrıca çok kullandığımı -ve *hızlı bir çözüm ararken kuralları genişletmeye çalıştığımı fark ettim (varsayılanAllPermission zaten oldu) arıyorum ve uygulamayı hapse istemiyorum .

İşte tüm olası izinleri vermeye çalışan bir şablon:

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 "*";
};

Not :

Java İlke Araçları, ilke dosyalarını düzenlemek için bir GUI aracıdır. Bırakma kutusundaki mevcut tüm seçenekleri bulmayı daha kolay hale getirir. Java paketiyle zaten yüklenmiş olmalıdır.

resim açıklamasını buraya girin


1

Sneetshers'ın yanıtı mükemmel olsa da daha basit (ve açık) bir çözüm keşfettim. Bu yaklaşım JDownloader ile çalışır, ancak diğer tüm Java programlarıyla da çalışmalıdır.

Sadece logoyu kaldırın rm ~/.jdownloader/jd/img/logo/jd_logo_128_128.pngve daha sonratouch ~/.jdownloader/jd/img/logo/jd_logo_128_128.png

Bu yaklaşımı kullanarak, hala çirkin java simgesi olmadan TrayIcon eklentisi (tepsiye küçültmek için yararlı) kullanılabilir


0

Açıkça daha iyi bir çözüm görmediğim gibi, bunun yardımcı olması mümkündür:

Tepsiden tamamen kurtulabilirsiniz!

  • mümkünse devre dışı bırak
  • veya tüm paneli el ile yapılandırabileceğiniz başka bir şeyle değiştirin, yalnızca bir tepsi öğesi eklemeyin. ( xfce4-panelBu tür şeyleri severim )

Şimdi tepsi tabanlı özellikleri kaçırırsanız, çoğu olayda bazı durumlarda masaüstü bildirimlerini gösteren bir komut dosyası gibi bir şekilde değiştirilebilir.


1
Tamam teşekkürler, ama açıkçası istediğim bu değil. Birlik tepsisini seviyorum, tepsi simgelerinden bazılarını sevmiyorum
wa4557

1
Evet, altta yatan usecase'inizi bilmek açısından bu karanlıkta bir çekimden ibaretti. 'Cihaz' tarzı bir makine için, sabit bir uygulama çalıştırmanın yanı sıra yalnızca temel menüler için masaüstü çubuğu. yöntem bile işe yarayacaktı :) [Ama bir keresinde panelsiz başlamayı reddeden bazı programların bir mesajını gördüğümü hatırlıyorum ...]
Volker Siegel

0

Bir tepsi simgesi kullanan tüm uygulamaların Ubuntu 14.04'te kullanılabilmesini istiyorsanız, systray beyaz listesini yeniden etkinleştirmek için Unity yamalı bir PPA kullanabilirsiniz. Bunu yapmak için bir terminal açın ve aşağıdaki komutları çalıştırın:

sudo add-apt-repository ppa:gurqn/systray-trusty
sudo apt-get update
sudo apt-get upgrade

Ardından ALT + F2 tuşlarına basıp "birlik" girerek veya oturumu kapatarak Unity'yi yeniden başlatın. PPA artık tüm uygulamaları otomatik olarak beyaz listeye eklediğinden, sistemi kullanmak için tek tek uygulamaları manuel olarak beyaz listeye eklemenize gerek yoktur.

Değişiklikleri geri alma

Değişiklikleri geri almak ve Ubuntu depolarındaki varsayılan Unity paketlerine geri dönmek istiyorsanız, Unity systray beyaz listesi PPA'sını temizlemek için aşağıdaki komutları kullanın:

sudo apt-get install ppa-purge
sudo ppa-purge ppa:gurqn/systray-trusty

Gönderen http://www.webupd8.org/2013/05/how-to-get-systray-whitelist-back-in.html


1
Ubuntu Stak Exchange'e Sor! Lütfen, bağlantı koptuktan sonra yayının kesilmesini önlemek için bağlantınızın önemli bir kısmını cevabınıza ekleyin.
enedil

2
Bu küresel bir beyaz liste, yani tüm programlar beyaz listeye alındı. Kara liste programları (şarap ve Java programları gibi) tam tersi ve hiçbir birlik bu sürümü ile çalışmaz
wa4557
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.