Wine desktop integration: current directory of app launched with doubleclick?

Dan Kegel dank at kegel.com
Sat Apr 7 01:01:00 CDT 2007


I *almost* have a great success story to report; the only thing
keeping it from being a success story is the current directory
chosen by Nautilus when double-clicking on .exe files.

My wife hurt a finger trying to impersonate a Sampsonite Luggage gorilla,
and had to go to a hand doctor.  Along the way her hand got x-rayed,
and the doctor handed her a cd-rom with the x-ray pictures on it.
The disc has an autorun.inf on it that should start ViewSel.exe.
I don't know if that's supposed to work with Wine and Nautilus, but
probably doubleclicking on ViewSel.exe does the same thing.

ViewSel.exe puts up two big buttons:
low res (which launches a web browser on an html file),
and high res (which launches a DICOM viewer).
If you cd to the root of the cd-rom drive and run ViewSel, it works.
If the current directory is anything else, it doesn't work.

If you start the autorun app via Nautilus, those buttons don't work,
so presumably it sets the current directory to something other than
the root of the drive.  To see, I created a wrapper shell script, ~/bin/mywine,
containing
  #!/bin/sh
  pwd > /tmp/log
and used "Start with" to launch ViewSel.exe with ~/bin/mywine.
This showed that the current directory was $HOME.

I had a look at the gnome code to see how it decided, but it was
a bit hard to follow.  (See gnome_vfs_mime_application_launch_with_env.)
So I tried a little shell magic.  I created a new wrapper shell script
that assumes the argument is a path to a file, and
sets the current directory to the directory containing that file:

 #!/bin/sh
 DIR=`dirname "$1"`
 DIR=`cd "$DIR"; pwd`
 cd "$DIR"
 wine "$@"

That worked better; it let ViewSel.exe launch the DICOM viewer.

So... I suppose the next step is to look at the debian/ubuntu packages
for wine and see if that little wrapper script could be incorporated
into the default way file browsers start wine?
It sure would be nice if apps that expected the current directory
to behave like this (it's not uncommon!) Just Worked.
- Dan



More information about the wine-devel mailing list