gdelmas / IntelliJDashPlugin

A smart and simple plugin that provides keyboard shortcut access for Dash, Velocity or Zeal in IntelliJ IDEA, RubyMine, WebStorm, PhpStorm, PyCharm and Android Studio.
MIT License
1.09k stars 73 forks source link

Cannot open Zeal on Linux #71

Closed NTICompass closed 6 years ago

NTICompass commented 6 years ago

I'm using version 3.3 of the plugin - the one IntelliJ shows me when I click "Browse repositories". When I try to use the plugin, I get the following error:

Dash Plugin Error: The BROWSE action is not supported on the current platform!

I am using Zeal version 0.6.0 and when I run the following in the terminal, it works fine:

xdg-open "dash-plugin://keys=mysql,php&query=substring"

Out of curiosity, I tried downgrading to version 3.2.5 of the plugin and that gave the same error. This may be an error with my configuration, but I am not sure what the issue is or how to debug it.

gdelmas commented 6 years ago

hi @NTICompass,

i am assuming you are on linux. as far as i can see in the codebase the only place where this error can occur is here: https://github.com/gdelmas/IntelliJDashPlugin/blob/43607b8681326d8f41632e0556e17559b2fa7843/src/de/dreamlab/dash/launcher/AbstractLauncher.java#L43

i assume the following three lines are failing with the query string. https://github.com/gdelmas/IntelliJDashPlugin/blob/43607b8681326d8f41632e0556e17559b2fa7843/src/de/dreamlab/dash/launcher/DashPluginSchemeLauncher.java#L15-L17

it would be great if you could try these in isolation. i assume zeal is registered correctly. as far as i remember there is a --register argument for it. maybe that helps. it could also be some kind of rights issue.

NTICompass commented 6 years ago

I made a small test Java program, compiled and tried to run it:

import java.awt.*;
import java.net.URI;

class test{
        public static void main(String ...args) throws Exception{
                Desktop desktop = Desktop.getDesktop();
                URI uri = new URI(args[0]);
                desktop.browse(uri);
        }
}

Running java test "dash-plugin://keys=mysql,php&query=substr" gives me:

Exception in thread "main" java.lang.UnsupportedOperationException: The BROWSE action is not supported on the current platform!

So, it looks like it's an issue with Java or my Linux install. Further research shows that Java.awt.Desktop is unreliabale and does not work everywhere. It requires GNOME libraries on Linux as per https://stackoverflow.com/a/102625 and https://stackoverflow.com/a/18004334

So, I should be able to get this working by figuring out how to get libgnome2-0 installed on Arch Linux (actually, Manjaro). I'm using Enlightenment as my desktop, BTW.

Actually, it seems like using Java 7 (instead of 8) also works - weird. Unfortunately, IntelliJ uses its own built-in Java 8, so trying to get libgnome installed may be the solution.

gdelmas commented 6 years ago

thanks for your research. let me know if installing libgnome2-0 helps, or if you find another more portable solition, we might be able to integrate in the codebase.

NTICompass commented 6 years ago

Installing libgnome (https://aur.archlinux.org/packages/libgnome) did fix the issue, and it works from in IntelliJ now.

The only other "solution" I found was https://stackoverflow.com/a/18004334 but that has a bunch of system-specific stuff in it...