File association in wine

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hello everybody, i've made a little script that associates every extension known by linux in wine, unless the extension isn't already associated to some other program. So you can doubleclick on a file from winefile and have it opened with the corresponding linux application.
It's a quick and dirty script that generates a .reg file, it isn't freedesktop compliant, i am a KDE and only KDE user  [Wink] 

The script reads the global mime database located at /usr/share/mime/globs, merges it with the user database located at /usr/share/mime/globs then generate an extension.reg file.
Every extension is associated to a "kdestart.exe" script that you can put somewhere in the PATH and customize as you like (and maybe make it freedesktop.org compliant  [Wink] )

Here's the script (copy and paste in a file, make it executable and run it)

WINEPREFIX=${WINEPREFIX:-$HOME/.wine}
FILEOUT=extension.reg
echo REGEDIT4 > $FILEOUT
echo >> $FILEOUT
for ext in `cat $HOME/.local/share/mime/globs /usr/share/mime/globs | grep  "*."|cut -f 2 -d :|sort --unique -f | cut -f 2 -d "*"`; do
    ext2=`echo $ext|cut -f 2- -d .`
    esiste=`grep -i '\\[Software\\\\\\\\Classes\\\\\\\\'$ext'\\]' $WINEPREFIX/system.reg | wc -l`
    if [ $esiste == "0" -a $ext != $ext2 ] ; then
        echo Aggiungo estensione $ext $ext2
        echo "[HKEY_CLASSES_ROOT\\"$ext"]" >> $FILEOUT
        echo @=\"$ext2.document\" >> $FILEOUT
        echo "[HKEY_CLASSES_ROOT\\"$ext2".document]" >> $FILEOUT
        echo @=\"$ext2.document\" >> $FILEOUT
        echo "[HKEY_CLASSES_ROOT\\"$ext2".document\\shell]" >> $FILEOUT
        echo "[HKEY_CLASSES_ROOT\\"$ext2".document\\shell\\open]" >> $FILEOUT
        echo "[HKEY_CLASSES_ROOT\\"$ext2".document\\shell\\open\\command]" >> $FILEOUT
        echo @=\"C:\\\\windows\\\\command\\\\start.exe kdestart.exe \\\"%1\\\"  >> $FILEOUT
        echo >> $FILEOUT
    fi
done


Once run, merge the resulting file to the registry (regedit extension.reg)

And here's the kdestart.exe script, put it where it can be found ($HOME/bin or /usr/local/bin) and make it executable

#!/bin/bash
echo $@ >> $HOME/kdestart.log
i=`winepath -u "$@"`
echo $@ $i >> $HOME/kdestart.log
kfmclient exec "$i"
#------------------------------------------------------------------

The last line, i.e. the command used to launch ISN'T freedesktop compliant and can be executed only under KDE.

Hope this can be useful to someone.






[Index of Archives]     [Gimp for Windows]     [Red Hat]     [Samba]     [Yosemite Camping]     [Graphics Cards]     [Wine Home]

  Powered by Linux