File manager problem

There is a “Places” column in the “Left Pane” in Komodo. After clicking RMB and selecting the “Show in File Manager” command from the pop-up menu, I get the following error instead of opening the file manager window:

[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [koISysUtils.ShowFileInFileManager]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: chrome://komodo-places/content/places.js :: ManagerClass.prototype.doShowInFinder :: line 2059"  data: no]
                                        [timestamp deleted by me]

The issue was also present in Komodo 8.5.3, 8.5.4, 9.0.0 and now in 9.0.1. I use Linux with MATE Desktop Environment (fork of GNOME 2), there is the Caja as the default file manager. It is possible that Komodo is trying to run Files, the default file manager in GNOME 3.

Is there any way to change the default file manager for Komodo in the Settings or config files?

Create an issue about that. Changing the file manager for “Show in File Manager” seems to be a good feature in Komodo.
Also I’m getting the same error on elementary OS 0.3 Freya (or Ubuntu 14.04, lol)

[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [koISysUtils.ShowFileInFileManager]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: chrome://komodo-places/content/places.js :: ManagerClass.prototype.doShowInFinder :: line 2372"  data: no]
                                         Mon May 04 2015 00:20:40 GMT+0300 (MSK)

I’m not able to reproduce this but please do file a bug since @Defman was able to reproduce: https://github.com/Komodo/KomodoEdit/issues/new

Could you also try selecting a file in Places the open Commando and search for “cmd_places_showInFinder” then run that command. I’m assuming the same result will occur but I’m interested non the less.

  • Carey

I tried that.

[Exception... "Component returned failure code: 0x80004005 (NS_ERROR_FAILURE) [koISysUtils.ShowFileInFileManager]"  nsresult: "0x80004005 (NS_ERROR_FAILURE)"  location: "JS frame :: chrome://komodo-places/content/places.js :: ManagerClass.prototype.doShowInFinder :: line 2372"  data: no]
                                         Tue May 05 2015 10:15:39 GMT+0300 (MSK)

Because you’re using Windows where the file manager is same for Win 7, Win 8 and Win 10. On Linux we have more than one file manager because of a lot of different desktop environments (aka DE)

You don’t think much of my testing skills do you @defman haha. I tested this on Ubuntu 14.04. But yes, it works on Windows as well which, yes, uses a different file manager :wink:

Thanks for filing the bug.

  • Carey

I thought you’re a “Windows developer” in Komodo team and your tests are only for Windows, huh :smile:

Hi @careyh, thanks for the reply. I ran the “cmd_places_showInFinder” command using Commando, your assumption was 100% correct. The result was the same, as quoted in the first post of this topic.

Some additional info to be more helpful: I wrote I use MATE, the fork of GNOME 2 desktop environment. Is it possible, that Komodo detects GTK+ toolkit or GTK+ based DE and tries to run the default file manager Nautilus/Files? (I wrote Files in the first post, because in GNOME 3 the Nautilus is called Files, however the package name seem to be still nautilus. But it is the same software, the default file manager of GNOME 3.) I also remembered that sometimes in the past I had Nautilus/Files instaled on MATE DE as a part of dependency, not used in fact. When Nautilus/Files was installed in the system, the Komodo was always launching Nautilus after the “Show in File Manager” command. Later i got rid with Nautilus because the depending software was no longer needed. Nautilus/Files of the GNOME3 version is PITA to use IMHO.

If you’re interested, the code in question is here: https://github.com/Komodo/KomodoEdit/blob/9.0.1/src/components/koSysUtils.py#L247

Looks like we get the WindowManager then use the default file manager. I found some useful info that could help use make this code more robust.

You could actually quite easily try implementing that yourself if you’re interested.

  • Carey

1 Like

I took a look at the code. I would like to help very much by participating, however this is far beyond my knowledge of Python. I know just basics of Python, no OOP in Python and I have no real-world experience with Python programming. I am sorry.

There’s nothing from OOP in this case. Only sys.system function.
This code works for me fine but not for @careyh

def ShowFileInFileManager(self, filename):
    # nsILocalFile handles some of this
    localFile = components.classes["@mozilla.org/file/local;1"].createInstance(components.interfaces.nsILocalFile)
    localFile.initWithPath(filename)
    try:
        localFile.reveal()
        return
    except COMException, e:
        # reveal is not implemented, try the old stuff
        pass
    if sys.platform not in ['win32','darwin']:
        if os.path.isfile(filename):
            filename = os.path.dirname(filename)
        os.system('xdg-open "%s" &' % filename) # works for me, not for careyh

Definitely not asking you to fix it @Don. No need to apologies. I was just letting you know where the code was as you sounded interested. We’ll have a fix for this soon.

  • Carey