How to run Dolphin instead of Nautilus?

For various reasons, one being that I like it more, I want to run Dolphin as my default file manager in stock Ubuntu 12.04. I've installed dolphin.

I've done:

sudo mv /usr/bin/nautilus /usr/bin/natilus.back && sudo ln -s /usr/bin/dolphin /usr/bin/nautilus

which makes any program calling Nautilus open Dolphin instead. This is all fine and dandy so far but dolphin wants to call konsole as the default terminal but I would like to make it call gnome-terminal as default instead.

I tried:

sudo ln -s /usr/bin/gnome-terminal /usr/bin/konsole

making a link of gnome-terminal called konsole, but that did not work. I don't get an error from Dolphin anymore but just nothing happens. The terminal panel is just blank.

Anyone know how to do this, or if there is a better way to implement dolphin as default FM I'm all ears.


UPDATE 20120727

Since then I realized that I had not used a sym link in the first place. Instead, I used a more clever approach

  1. Make a folder in your home directory called bin

    mkdir ~/bin
    
  2. Make a script called Nautilus that executes Dolphin and put it in this folder

    gedit ~/bin/nautilus
    

    Then copy this code into it and save

    #!/bin/bash
    exec dolphin $@
    exit 0
    

This is the safest way to make Dolphin your default browser, as well as going into the /usr/share/applications folder and changing the 3 nautilus .desktop files to launch Dolphin instead of Nautilus.

BUT this does not fix the two problems Dolphin has

  1. it wants to launch the konsole terminal instead of gnome-terminal.
  2. it's icons are hideous and qt4-qtconfig can not change them.

UPDATE 20120810

To fix the ugly oxygen icons to match your system theme, qt4-qtconfig tool is not sufficient. You will need to install the KDE system settings application

sudo apt-get install systemsettings 

Launch the application
From there go to Application Appearance>Icons and change as needed

My default File Manager in Ubuntu 12.04 GNOME-SHELL is now THE QT DOLPHIN FILE MANAGER. I'M A GENIOUS!!!! This works perfect! THANKS TO YOU ALL!!


Solution 1:

There are several caveats in what you tried to do. I already mentioned the danger introduced by your approach:

Next time nautilus is going to be updated, your dolphin gets overwritten (as your link points there). Same goes for gnome-terminal.

So we figured, this was not a good idea :)

But there are some ways to try working around, so "x" gets run when "z" was requested -- but I'm not aware of any as soon not "z", but "/full/path/to/z" gets called. As long as it is just "z":

  • creating an alias for z, like alias z=x (works on a per-user-level -- or globally, depending on where it was defined)
  • creating a "replacement" for z in a location mentioned in the PATH before the location the real z resides in

A little more details on the second approach. Taking your original problem, you want to have dolphin executed whenever nautilus is called upon. You already found nautilus at /usr/bin/nautilus. Now let's (probably correctly) assume your $PATH contains (in this order) /usr/local/bin:/usr/bin -- so you see /usr/local/bin would be searched before /usr/bin. So we simply create a shell script /usr/local/bin/nautilus with the following content:

#!/bin/bash
/usr/bin/dolphin %$@

So what will happen? If you (or some script/program/daemon/...) invokes nautilus, this will execute /usr/local/bin/nautilus (as this is the first "nautilus" found in the PATH), which simply starts /usr/bin/dolphin -- voila! But if the "whatever" uses the full path, this won't work.

So you say: Hey, why didn't Izzy say "just do a ln -s /usr/bin/dolphin /usr/local/bin/nautilus?" Sure you can do that -- and it will work the same. But using a script as shown may come in handy if you need to introduce additional parameters which are not passed with the original call. With above script, dolphin simply gets passed the same parameters the original call used (%$@). But you can play around with things in the script, replace parameters, etc. As for your current problem, the link would be enough (as long as nautilus doesn't get called with the full path).