[PATCH] libwine: Add WINEUSER environment variable

Andrew Eikum aeikum at codeweavers.com
Mon Feb 10 08:25:54 CST 2020


On Mon, Feb 10, 2020 at 08:11:31AM -0600, Andrew Eikum wrote:
> On Sat, Feb 08, 2020 at 07:59:58PM +0100, Myah Caron wrote:
> >  * If a user would rather not use their own username in the prefix.
> >  * If a user wants multiple users in a wine prefix (e.g. as separate
> > profiles for programs).
> 
> Wine doesn't handle having multiple "users" nor changing the
> Windows-side username very well. I've forgotten the details, and
> unfortunately didn't document them very well[1], but I remember this
> being very problematic when we tried it for Proton. I don't think
> adding a WINEUSER variable makes sense until multiple user profiles
> are well supported.
> 
> [1] Frustrating lack of information here:
> https://github.com/ValveSoftware/Proton/issues/605#issuecomment-416249569
> 

I dug through my old emails. Apparently the games that showed a
problem with multiple users were Mount & Blade and Mount & Blade: With
Fire and Sword. However, I didn't document what the actual problem
was...

Andrew

> >  * If the prefix was created with proton, which replaces the username
> > with steamuser, this allows the data under the home directory to be
> > usable under vanilla wine without needing symlinks or renaming the
> > directory.
> >  * Similarly, this allows prefixes created under a different username
> > (e.g. transferred from a different system) to be used.
> > 
> > Signed-off-by: Myah Caron <qsniyg at mail.com>
> > ---
> >  libs/wine/config.c | 4 ++--
> >  1 file changed, 2 insertions(+), 2 deletions(-)
> > 
> > diff --git a/libs/wine/config.c b/libs/wine/config.c
> > index 2a3314cbfd..d05f021267 100644
> > --- a/libs/wine/config.c
> > +++ b/libs/wine/config.c
> > @@ -263,14 +263,14 @@ static void init_paths(void)
> >      struct stat st;
> > 
> >      const char *home = getenv( "HOME" );
> > -    const char *user = NULL;
> > +    const char *user = getenv( "WINEUSER" );
> >      const char *prefix = getenv( "WINEPREFIX" );
> >      char uid_str[32];
> >      struct passwd *pwd = getpwuid( getuid() );
> > 
> >      if (pwd)
> >      {
> > -        user = pwd->pw_name;
> > +        if (!user) user = pwd->pw_name;
> >          if (!home) home = pwd->pw_dir;
> >      }
> >      if (!user)
> > --
> > 2.25.0
> > 
> > 
> > 
> 



More information about the wine-devel mailing list