[Wine] [SOLVED] wrapper script for launching unix programs

leniviy wineforum-user at winehq.org
Fri Mar 19 11:34:00 CDT 2010


just made a script to start gedit and mplayer when doubleclick file in TotalCommander or uTorrent. Handles full and relative paths. Not handles 'name=value' -like arguments

Hope it helps someone

usage example:

Code:
# winemultipath echo a "C:" '.\.java'   d='C:\'
a /home/il/.wine/dosdevices/c:/ /home/il/.wine/dosdevices/z:/home/il/.java d=C:\




winemultipath :

Code:
#!/bin/bash
# wrapper script for launching unix programs from wine
# converts all "C:\foo"-like arguments into valid unix paths
set -- "$@" _end_of_params_
while true; do
  [ "$1" = _end_of_params_ ] && { shift; break; }
  a="$1"
  # -a "${1//\\/}" != "$1"
  if [ ! -f "$1" -a ! -d "$1" ]; then
    b="`winepath -u "$1"`"

    # either the file exists or $1 looks like "C:\foo"
    [ -f "$b" -o -d "$b" -o "${1/#[a-zA-Z]:/}" != "$1" ] && a="$b"
  fi
  set -- "$@" "$a"
  shift
done

#echo "$@" >&2
exec "$@"




sample shell assoc, shell-open.reg :

Code:

REGEDIT4

[HKEY_CLASSES_ROOT\mmediafile\shell\open\command]
@="z:\\usr\\bin\\winemultipath mplayer \"%1\""

[HKEY_CLASSES_ROOT\.flv]
@="mmediafile"
"Content Type"="video/flv"

[HKEY_CLASSES_ROOT\.mp4]
@="mmediafile"
"Content Type"="video/mp4"

[HKEY_CLASSES_ROOT\.avi]
@="mmediafile"
"Content Type"="video/avi"

[HKEY_CLASSES_ROOT\.mkv]
@="mmediafile"
"Content Type"="video/x-matroska"

[HKEY_CLASSES_ROOT\.mp3]
@="mmediafile"
"Content Type"="audio/mp3"

[HKEY_CLASSES_ROOT\.wav]
@="mmediafile"
"Content Type"="audio/wav"

[HKEY_CLASSES_ROOT\.ogg]
@="mmediafile"
"Content Type"="audio/ogg"

[HKEY_CLASSES_ROOT\geditfile\shell\open\command]
@="z:\\usr\\bin\\winemultipath gedit \"%1\""

[HKEY_CLASSES_ROOT\.c]
@="geditfile"
"Content Type"="text/x-csrc"

[HKEY_CLASSES_ROOT\.cpp]
@="geditfile"
"Content Type"="text/x-csrc"










More information about the wine-users mailing list