Subject: Re: bug#18698: Our WindowMaker wrapper pollutes PATH in the entire X session

From: [email-masked] (Ludovic Courtès)
Date: Sun, 01 Mar 2015 15:39:39 +0100

宋文武 <[email-masked]> skribis:

> Ludovic Courtès <[email-masked]> writes:
>
>> 宋文武 <[email-masked]> skribis:
>>
>>> Ricardo Wurmus <[email-masked]> writes:
>>>
>>>> The fix may have resulted in unintended side-effects.  On a fresh
>>>> installation of the System Distribution v0.8.1 WindowMaker is installed
>>>> by default, but it is not completely functional.
>>>>
>>>> For example, the attempt to change the style via the menu results in
>>>> this error to be displayed:
>>>>
>>>>     Could not execute command:
>>>>         setstyle /gnu/store/...windowmaker.../share/WindowMaker/Styles/Black.style
>>>>
>>>> Likewise, selecting "Configure Window Maker" from the right-click menu
>>>> results in this error:
>>>>
>>>>     Could not execute command: exec WPrefs
>>>>
>>>> The "setstyle" executable is located in
>>>> /gnu/store/...windowmaker.../bin/, but is not in the PATH.
>>> Yes, the $out/bin of windowmaker is not in $PATH, and same for sawfish.
>>>
>>> Instead of wrapping every executable of session-type, we can:
>>>
>>> #1: Add the package to system profile ('packages').
>>>   It's not clear to me how to do it now, until we have something
>>>   like the NixOS's module system.
>>
>> What I have in mind is to add a ‘packages’ field in ‘service’.  That
>> would allow service implementations to contribute packages to the global
>> profile.  Thoughts?
> It's fine, but we may also need a 'dbus-service' field (for wicd).

Hmm right.  And dbus policy, and policykit something, and...

Clearly the NixOS way where each service can change anything in the
global config makes it easy; we need to find a middle ground where we
don’t end up allowing services to do anything.  Food for thought...

>>> #2: Make SLiM use '/run/current-system/profile/share/xsessions' as
>>>     session_dir.
>>>   So simply add a package providing xsession file to 'packages' should
>>>   make it available to SLiM.  And all DE and many window-managers provide
>>>   xsession files already (eg: openbox, sawfish, xfce), we can patch
>>>   the rest (eg: WindowMaker) to install one.
>>
>> IIUC the bug initially reported here would remain: the user’s $PATH
>> would be polluted with the window manager’s stuff, no?
> I think the 'polluted' means we have a $PATH contains:
>   /gnu/store/xxx-windowmaker/bin
> install it to profile doesn't have this issue.

Right, but WindowMaker is not necessarily in the user’s profile.

Still, maybe the initial solution, which added WindowMaker to $PATH, is
the least undesirable solution.

Thoughts?

Ludo’.