[rfc][icedtea-web] fixinf of desktop icon behaviour

Adam Domurad adomurad at redhat.com
Fri Dec 21 09:06:58 PST 2012


On 12/21/2012 11:58 AM, Jiri Vanek wrote:
> On 12/21/2012 05:38 PM, Adam Domurad wrote:
>> On 12/21/2012 11:05 AM, Jiri Vanek wrote:
>>> Hi! This is fix for 
>>> http://icedtea.classpath.org/bugzilla/show_bug.cgi?id=725 - JNLP 
>>> applications will prompt for creating desktop shortcuts every time 
>>> they are run
>>>
>>> When I have seen Omairs original patch it was too much complicated, 
>>> So I want at least to try this one.
>>
>> Do you know why Omair used explicit locking? I couldn't quite figure 
>> it out
> nope ;(
>>
>>> It is pretty simple. The disadvantage however is:
>>> +    public File getFinalLinuxDesktopIconFile() {
>>> +        return new 
>>> File(System.getProperty("user.home")+"/Desktop/"+getDesktopIconFinalName()+".desktop");
>>> +    }
>>>
>>> to be dependent on System.getProperty("user.home")+"/Desktop/" and 
>>> .desktop suffix.
>>>
>>> However .. can it be enough?
>>>
>>> The second patch is for testing purposes of this case which I would 
>>> like to push forward as soon as possible.
>>>
>>> J.
>>
>>> doNotAskToDesktopIconCreationWithXtrustAll.patch
>>>
>>>
>>> diff -r a24c48429ff1 
>>> netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java
>>> --- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Fri 
>>> Dec 21 13:19:14 2012 +0100
>>> +++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Fri 
>>> Dec 21 16:58:29 2012 +0100
>>> @@ -171,6 +177,9 @@
>>>        * @return true if a desktop shortcut should be created
>>>        */
>>>       private boolean shouldCreateShortcut(ShortcutDesc sd) {
>>> +        if (JNLPRuntime.isTrustAll()) {
>>> +            return true;
>>> +        }
>>>           String currentSetting = JNLPRuntime.getConfiguration()
>>> .getProperty(DeploymentConfiguration.KEY_CREATE_DESKTOP_SHORTCUT);
>>>           boolean createShortcut = false;
>>
>> This is OK for head.
>
> thank you.
>>
>>>
>>> fixedRecreationOfDesktopIcon.patch
>>>
>>>
>>> diff -r a24c48429ff1 
>>> netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java
>>> --- a/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Fri 
>>> Dec 21 13:19:14 2012 +0100
>>> +++ b/netx/net/sourceforge/jnlp/runtime/ApplicationInstance.java Fri 
>>> Dec 21 16:58:29 2012 +0100
>>> @@ -146,7 +146,13 @@
>>>       private void addMenuAndDesktopEntries() {
>>>           XDesktopEntry entry = new XDesktopEntry(file);
>>>           ShortcutDesc sd = file.getInformation().getShortcut();
>>> -
>>> +        if (entry.getFinalLinuxDesktopIconFile().exists()) {
>>
>> How would this behave if it was ever run on a non-Linux system ?
>
> It will create file which will probably not exists. So it will return 
> false and so do the next lines -  so it do correct.
>>
>>> +            if (JNLPRuntime.isDebug()) {
>>> + 
>>> System.out.println("ApplicationInstance.addMenuAndDesktopEntries(): 
>>> file - "
>>> +                        + 
>>> entry.getFinalLinuxDesktopIconFile().getAbsolutePath() + " already 
>>> exists. Not proceeding with desktop additions");
>>> +            }
>>> +            return;
>>> +        }
>>>           if (shouldCreateShortcut(sd)) {
>>>               entry.createDesktopShortcut();
>>>           }
>>> diff -r a24c48429ff1 netx/net/sourceforge/jnlp/util/XDesktopEntry.java
>>> --- a/netx/net/sourceforge/jnlp/util/XDesktopEntry.java    Fri Dec 
>>> 21 13:19:14 2012 +0100
>>> +++ b/netx/net/sourceforge/jnlp/util/XDesktopEntry.java    Fri Dec 
>>> 21 16:58:29 2012 +0100
>>> @@ -78,7 +78,7 @@
>>>
>>>           String fileContents = "[Desktop Entry]\n";
>>>           fileContents += "Version=1.0\n";
>>> -        fileContents += "Name=" + sanitize(file.getTitle()) + "\n";
>>> +        fileContents += "Name=" + getDesktopIconFinalName() + "\n";
>>>           fileContents += "GenericName=Java Web Start Application\n";
>>>           fileContents += "Comment=" + 
>>> sanitize(file.getInformation().getDescription()) + "\n";
>>>           fileContents += "Type=Application\n";
>>> @@ -122,6 +122,11 @@
>>>           return iconSize;
>>>       }
>>>
>>> +    public File getShortcutTmpFile() {
>>> +        File shortcutFile = new 
>>> File(JNLPRuntime.getConfiguration().getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR) 
>>> + File.separator + FileUtils.sanitizeFileName(file.getTitle()) + 
>>> ".desktop");
>>> +        return shortcutFile;
>>> +    }
>>> +
>>>       /**
>>>        * Set the icon size to use for the desktop shortcut
>>>        *
>>> @@ -148,9 +153,7 @@
>>>        * Install this XDesktopEntry into the user's desktop as a 
>>> launcher
>>>        */
>>>       private void installDesktopLauncher() {
>>> -        File shortcutFile = new File(JNLPRuntime.getConfiguration()
>>> - .getProperty(DeploymentConfiguration.KEY_USER_TMP_DIR)
>>> -                + File.separator + 
>>> FileUtils.sanitizeFileName(file.getTitle()) + ".desktop");
>>> +        File shortcutFile = getShortcutTmpFile();
>>>           try {
>>>
>>>               if (!shortcutFile.getParentFile().isDirectory()&& 
>>> !shortcutFile.getParentFile().mkdirs()) {
>>> @@ -234,4 +237,12 @@
>>>           }
>>>       }
>>>
>>> +    public String getDesktopIconFinalName() {
>>> +        return sanitize(file.getTitle());
>>> +    }
>>> +
>>> +    public File getFinalLinuxDesktopIconFile() {
>>> +        return new 
>>> File(System.getProperty("user.home")+"/Desktop/"+getDesktopIconFinalName()+".desktop");
>>
>> A deployment property could still be good. This seems a little 
>> hardcoded.
>
> Yah hardcoded but nice and doing as expected.  How does deployment 
> property behave when desktop icon is removed manually (what is what we 
> actually all do:) ?
>
> Is there some system independent way how to get usr's desktop? It will 
> solve this, but I think there is not.
>
> So when (System.getProperty("user.home")+"/Desktop/" will become 
> invalid we can elaborate here by array of locations?

Ok if you want to take that route. Also some light research indicates 
this works on Windows as well.

You can push for now IMO, we'll get Omair to comment on his approach 
when he's available.

>
> I still don't like the cannon (to kill a chicken) which deployment 
> property was....
>>
>>> +    }
>>> +
>>>   }
>>
>> happy hackerdays,
>> -Adam
>
-Adam



More information about the distro-pkg-dev mailing list