[Wine] Script to run Wine and save log

Gert van den Berg gert at mohag.net
Sat Jun 27 04:19:31 CDT 2009


On Thu, Jun 25, 2009 at 00:10, Austin English<austinenglish at gmail.com> wrote:
>
> Personally, I'd just do:
> if [ -x `which compiz` ]
> then
>    echo "You've got comipz installed. This is bad, and conflicts with
> Wine. Remove it."
> fi

The problem is that compiz might be installed and not running, or that
a recent kwin / metacity / <insert name of xfce4 windows manager here>
with compositing enabled might be used.

See: http://en.wikipedia.org/wiki/Compositing_window_manager#List_of_compositing_window_managers
for a list

The only really effective method would be a way to query the current
Windows manager to see if it supports compositing. If anyone know of a
scriptable way to do this please let me know.

> What's wrong with $USER? What exactly do you need this for, anyway?

I don't trust environment variables that can be set by the user. (I
know that $USER is not always defined, based on a script (bash of a
.bashrc on Solaris rather) I have that sets the terminal title to
$USER@`hostname` - ip (It works fine 90% of the time, but break with
certain methods of changing user ('su -' IIRC)))

Mainly to see whether the user is running as root.
>
>> I thought the group info might be useful for troubleshooting...
>
> Not particularly. The only time that I can think of is for distro's
> that make the video/audio devices owned by a video/audio group, and
> don't automatically add regular users to that group.
>
True. And that would be detectable by "Does your audio work in other
program? / Does glxgears run?"

Anyone with suggestion for detecting a running pulseaudio / esd? (ps
is not a nice option due to some versions accepting only BSD / Sys-V
style arguments)

A new version is attached, mainly adding some graphics card info,
fixing $WINE behaviour. Uploaded to http://www.mohag.net/wine_with_log

Gert

New version:
#!/bin/sh
# wine_with_log: Script for running wine while showing and logging output
# Gert van den Berg, June 2009
# This script is released into the public domain
#
# The script prefers a wine specified in WINE, wine-git in the home directory
# with the system's default wine version being tried if the other versions
# can not be found

logpath="$HOME/wine-logs"

# try WINE env var
if [ -x "`which \"$WINE\"`" ] > /dev/null # suppress printing of path
then
	wine="`which \"$WINE\"`"
# try wine-git in $HOME
elif [ -x "$HOME/wine-git/wine" ]
then
	wine="$HOME/wine-git/wine"
# Try default Wine
else
	wine="`which wine`"
fi

# Get Wine version number and check for wine's existance
if ! winever="`\"$wine\" --version`" 2> /dev/null; then
	echo "Fatal error: Cannot run wine with command '$wine'!" 1>&2
	exit 1
fi

# We don't export WINPREFIX, in case the dault change, but assume a
default of ~/.wine
WINEPREFIX="${WINEPREFIX:-$HOME/.wine}"
date="`date +%Y%m%d-%H:%M:%S`"

if [ -d "$WINEPREFIX" ]
then
	wineprefixstatus="Pre-existing"
else
	wineprefixstatus="Clean"
fi

if ! ( [ -d "$logpath" ] || mkdir "$logpath" 2> /dev/null )
then
	echo "Fatal Error: Cannot create / find log path '$logpath'" 1>&2
	exit 2
fi

BasicInfo="----------------------------------------------------------
Wine version: $winever
WINEPREFIX: '$WINEPREFIX'
WINEPREFIX state: $wineprefixstatus
Working directory: '`pwd`'
Date: `date`
OS info (uname -a): '`uname -a`'
Current user: `id -un`"

# Quote wine parameters
WineParams=""
for param in "$@"
do
	WineParams="$WineParams '$param'"
done

WineCmdInfo="----------------------------------------------------------
Command: \"$wine$WineParams\"
----------------------------------------------------------"

logname="$logpath/$1.$date.$winever.log"

(
	echo "$BasicInfo"
	# Commands with potential multi-line output
	if [ -x "`which glxinfo`" ] # Run only if glxinfo is in the path
	then
		echo '---------'
		echo "Glxinfo strings matching '^OpenGL.*string|^direct rendering:':'"
		"`which glxinfo`" |egrep '^OpenGL.*string|^direct rendering:'
	fi
	echo "$WineCmdInfo"
	"$wine" "$@" 2>&1
	echo "----------------------------------------------------------"
) |tee  "$logname"

################################ End

Sample output:
mohag at mohagpc:~/bin$ WINE=wine wine_with_log winecfg
----------------------------------------------------------
Wine version: wine-1.1.24
WINEPREFIX: '/home/mohag/.wine'
WINEPREFIX state: Pre-existing
Working directory: '/home/mohag/bin'
Date: Sat Jun 27 10:45:56 SAST 2009
OS info (uname -a): 'Linux mohagpc 2.6.28-13-generic #44-Ubuntu SMP
Tue Jun 2 07:55:09 UTC 2009 x86_64 GNU/Linux'
Current user: mohag
---------
Glxinfo strings starting with 'OpenGL.*string'; 'direct rendering:'
direct rendering: Yes
OpenGL vendor string: NVIDIA Corporation
OpenGL renderer string: GeForce GTS 250/PCI/SSE2
OpenGL version string: 3.0.0 NVIDIA 180.44
OpenGL shading language version string: 1.30 NVIDIA via Cg compiler
----------------------------------------------------------
Command: "/usr/bin/wine 'winecfg'"
----------------------------------------------------------
fixme:mixer:ALSA_MixerInit No master control found on USB Device
0x46d:0x89d, disabling mixer
----------------------------------------------------------



More information about the wine-users mailing list