ट्रे आइकन बनाने से जावा अनुप्रयोगों को कैसे रोकें?


16

Ubuntu 13.04 के साथ एक ट्रे आइकन बनाने से कुछ अनुप्रयोगों को श्वेतसूची (और परिणामस्वरूप ब्लैकलिस्ट) करने की संभावना समाप्त हो गई है। तब से जावा एप्लिकेशन और वाइन आइकन के ट्रे आइकन हार्डकोड और हमेशा दिखाई देते हैं।

हालाँकि, कुछ पीपीए हैं, जो कि systray.whitelist (14.04 के लिए नहीं, फिर भी) को वापस देकर एक एकता पैच प्रदान करते हैं, मैं यह जानना चाहूंगा कि क्या java apps के ट्रे-आइकन्स को छिपाने के अन्य तरीके हैं (जैसेDDownloader)

मुझे पता है कि apptor-प्रोफाइल को लागू करने से क्यूटी-अनुप्रयोगों के लिए ऐसा करने का एक तरीका है जो कि sni-qt पैकेज तक पहुंच से इनकार करता है (जैसे स्काइप, या स्पॉटिफ़ के लिए)

क्या एपर्मोर प्रोफाइल या जावा अनुप्रयोगों और / या वाइन अनुप्रयोगों के लिए कुछ समान लागू करने का एक तरीका है?

धन्यवाद


1
आप उनके आइकन तक पहुंच सकते हैं, और उन्हें पारदर्शी और छोटे होने के लिए बदल सकते हैं, इसलिए यह लगभग कोई जगह नहीं लेता है और अदृश्य है?
टिम

2
अच्छा विचार है, लेकिन नहीं। लगता है कि 16x16 स्थान जावा अनुप्रयोगों के लिए आरक्षित है। अदृश्य 1 पीएक्स एसवीजी में बदलकर, एक अभी भी एक 16x16 पारदर्शी आइकन नहीं मिलता है
wa4557

1
ठीक है, एक शर्म की बात है ...
टिम

जवाबों:


2

जावा ऐप्स के लिए:

  • दरअसल JDownloader केस के लिए, यह एक मॉड्यूलर डिज़ाइन है। ट्रे आइकन एक प्लगइन के रूप में आता है जिसे निम्न से अक्षम किया जा सकता है:

    JDownloader → Addons → Addon प्रबंधक → एक्सटेंशन → JD लाइट ट्रे के लिए सक्रिय करें बॉक्स को अनचेक करें

  • जावा अनुप्रयोगों के सामान्य मामले के लिए, कस्टम नीति नियमों को लिखकर जावा सुरक्षा प्रबंधक का उपयोग करना संभव है।

    1. इसमें 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 "*";
      };
    2. jdownloaderकस्टम नीति का उपयोग करने के लिए लॉन्च स्क्रिप्ट को संशोधित करें

      sudo nano /usr/bin/jdownloader

      जोड़ें: -Djava.security.manager -Djava.security.policy=java.policyजावा कमांड कॉल में:

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

ये न्यूनतम नियम हैं जिन्होंने मुझे jdownloader लॉन्च करने की अनुमति दी है। आपको अधिक अनुमतियाँ जोड़ने की आवश्यकता हो सकती है। क्योंकि denyआपके पास सभी आवश्यक grantनियमों को लिखने का कोई विकल्प नहीं है।

संदर्भ:

BTW, //लाइन की शुरुआत में जोड़कर एक नियम की टिप्पणी करने का प्रयास करें ; तो आप देख सकते हैं कि अस्वीकृत अनुमतियों की त्रुटि कैसी दिखती है। यह बताता है कि आपको किस अनुमति को जोड़ना चाहिए। यह भी ध्यान दें कि मैंने कई उपयोग किए हैं -और *नियमों का विस्तार करने की कोशिश कर रहा हूं क्योंकि मैं एक त्वरित समाधान की तलाश कर रहा हूं (डिफ़ॉल्ट 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 "*";
};

नोट :

जावा पॉलिसी टूल्स पॉलिसी फाइलों को संपादित करने के लिए एक जीयूआई उपकरण है। यह ड्रॉप बॉक्स से सभी उपलब्ध विकल्पों का पता लगाना अधिक आसान बनाता है। यह पहले से ही जावा पैकेज के साथ स्थापित होना चाहिए।

यहाँ छवि विवरण दर्ज करें


1

हालांकि Sneetshers का जवाब सही है मैंने एक सरल (और स्पष्ट) समाधान खोजा। यह दृष्टिकोण JDownloader के साथ काम करता है, लेकिन अन्य सभी जावा प्रोग्राम के साथ भी काम करना चाहिए।

बस लोगो को हटा दें rm ~/.jdownloader/jd/img/logo/jd_logo_128_128.pngऔर बाद में एक अमान्य png आइकन बनाएंtouch ~/.jdownloader/jd/img/logo/jd_logo_128_128.png

इस दृष्टिकोण का उपयोग करते हुए, कोई भी बदसूरत जावा आइकन के बिना ट्रायकोन प्लगइन (ट्रे को कम करने के लिए उपयोगी) का उपयोग कर सकता है


0

जैसा कि मैंने कोई स्पष्ट बेहतर समाधान नहीं देखा है, यह संभव है कि यह मदद करेगा:

आप पूरी तरह से ट्रे से छुटकारा पा सकते हैं!

  • यदि संभव हो तो इसे निष्क्रिय कर दें
  • या पूरे पैनल को कुछ अन्य द्वारा प्रतिस्थापित करें जिन्हें आप मैन्युअल रूप से कॉन्फ़िगर कर सकते हैं, बस एक ट्रे तत्व नहीं जोड़ सकते हैं। (मुझे xfce4-panelइस तरह की चीजें पसंद हैं)

यदि आप अब ट्रे-आधारित सुविधाओं को याद करेंगे, तो किसी मामले में सबसे अधिक बदली जाने वाली स्थिति होनी चाहिए, जैसे कि कुछ घटनाओं पर डेस्कटॉप सूचनाओं को दर्शाने वाला एक विभाजन।


1
ठीक है धन्यवाद, लेकिन यह स्पष्ट रूप से वह नहीं है जो मैं चाहता था। मुझे एकता-ट्रे पसंद है, मैं बस कुछ ट्रे-आइकनों को नापसंद करता हूं
wa4557

1
हां, यह आपके अंतर्निहित usecase को जानने के मामले में अंधेरे में एक शॉट था। एक 'एप्लाइंसेस-स्टाइल मशीन' के लिए, एक निश्चित एप्लिकेशन को चलाना, और केवल मूल मेनू के लिए डेस्कटॉप बार। विधि भी काम करेगा :) [लेकिन मुझे याद है कि मैंने एक बार कुछ कार्यक्रम का संदेश देखा है जिसमें कोई पैनल नहीं होने से इंकार कर दिया गया है ...]
वोल्कर सिएगेल

0

यदि आप चाहते हैं कि सभी एप्लिकेशन जो एक ट्रे आइकन का उपयोग करते हैं, तो वह Ubuntu 14.04 में इसका उपयोग करने में सक्षम हो, आप एक पीपीए का उपयोग कर सकते हैं जो एकता के साथ आता है सिस्ट्रे सफ़ेद रंग को फिर से सक्षम करने के लिए पैच। ऐसा करने के लिए, एक टर्मिनल खोलें और निम्नलिखित कमांड चलाएं:

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

फिर, ALT + F2 दबाकर और "एकता" दर्ज करके या लॉग आउट करके एकता को पुनरारंभ करें। PPA अब स्वचालित रूप से सभी एप्लिकेशन को श्वेतसूची में बदल देता है, इसलिए सिस्ट्रे का उपयोग करने में सक्षम होने के लिए मैन्युअल रूप से श्वेतसूची वाले ऐप्स की आवश्यकता नहीं है।

परिवर्तनों को वापस लाना

यदि आप परिवर्तनों को वापस लेना चाहते हैं और Ubuntu रिपॉजिटरी से डिफ़ॉल्ट यूनिटी पैकेज पर वापस जाना चाहते हैं, तो यूनिटी सिस्ट्रे वाइटेलिस्ट पीपीए को शुद्ध करने के लिए नीचे दिए गए कमांड का उपयोग करें:

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


1
उबंटू स्टाक एक्सचेंज से पूछने के लिए आपका स्वागत है! कृपया, लिंक के मरने के बाद पोस्ट को रोकने के लिए अपने उत्तर में लिंक का आवश्यक हिस्सा शामिल करें।
enedil

2
यह एक वैश्विक श्वेतसूची है, जिसका अर्थ है कि सभी कार्यक्रम श्वेतसूची में हैं। ब्लैकलिस्टिंग प्रोग्राम (शराब और जावा प्रोग्राम की तरह) पूर्ण विपरीत है और एकता के इस संस्करण के साथ काम नहीं करता है
wa4557
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.