KDE 4.3.4 cannot start

Sagara Wijetunga sagara at tomahawk.com.sg
Sat Jan 9 14:05:03 GMT 2010


James Tyrer wrote:
> Duncan wrote:
>   
>> James Tyrer posted on Thu, 07 Jan 2010 11:11:15 -0700 as excerpted:
>>
>>     
>>> Duncan wrote:
>>>       
>>>> James Tyrer posted on Wed, 06 Jan 2010 16:07:26 -0700 as 
>>>> excerpted:
>>>>
>>>>         
>>>>> However, these instructions are wrong:
>>>>>
>>>>> http://cblfs.cross-lfs.org/index.php/Starting_KDE
>>>>>
>>>>> I suggest that you try this for your ~/.xinitrc file:
>>>>>
>>>>> ------8<------8<------8<------8<------8<------8<------8<------8<------
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> eval `dbus-launch --sh-syntax --exit-with-session`
>>>>>
>>>>> exec startkde
>>>>>
>>>>> ------8<------8<------8<------8<------8<------8<------8<------8<------
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>           
>>>> According to the dbus-launch manpage I have here, the 
>>>> instructions at the given URL (the starting dbus ones) appear to 
>>>> do about the same thing, except that dbus instance should start 
>>>> and stop with the session, which is what's desired if you're 
>>>> doing it that way.  Why are they wrong?
>>>>
>>>> Here's the (single) line they use (minus the echo to the 
>>>> ~/.xinitrc bit), reprinted here for comparison:
>>>>
>>>> exec dbus-launch --exit-with-session startkde
>>>>
>>>>         
>>> First, there is an error is in this line:
>>>
>>> echo "exec dbus-launch --exit-with-session startkde" >> ~/.xinitrc
>>>
>>> Note the ">>", that is wrong.
>>>       
>> Why is that wrong?  It's the file-redirect and append (instead of 
>> replacing).  Thus, it appends that line to the end of .xinitrc if it 
>> exists already, and creates it with that line, if not.
>>     
>
> You should use one or the other of the commands to replace "~/.xinitrc",
> not both: "use the following command instead of the one shown above".
>
> If you append:
>
>    exec dbus-launch --exit-with-session startkde
>
> to "~/.xinitrc" and there is an "exec" command before it, control will
> never reach that line.
>
>   
>> Presumably, the user may have several other things already setup to 
>> run when starting X, and would not want them to be overwritten.
>>     
>
> Absolutely correct and that is why you should edit the file rather than
> just using the "echo" command.  However, if there is an "exec" command,
> that would need to be removed.
>
>   
>> Also, because it's an exec, the new command runs in the existing 
>> process, replacing the bash code running the script with the 
>> dbus-launch program, so you wouldn't want it anywhere else /but/ the 
>> end of an existing .xinitrc, since it's not conditional, and if it 
>> were any place but the bottom, the rest of the script wouldn't get 
>> run.  So, appending to the existing file (if it exists) would seem to
>>  be exactly the intended effect.
>>     
>
> But, not if there is already an "exec" command.
>
> What I think is likely is that people will not read the page and will
> execute both:
>
>    echo "exec startkde" > ~/.xinitrc
>
>    echo "exec dbus-launch --exit-with-session startkde" >> ~/.xinitrc
>
> and it obviously will not start D-Bus.
>
> IAC, they should both just have either ">" or ">>", there is no reason 
> for one to have one and one the other.
>
>   
>> (They do mention to be sure there's no other WMs started above it,
>> however, which would again be desired, and confirms the intent to
>> have what's there remain and continue to function, just now, with the
>> new line invoking dbus to startkde.)
>>
>>     
> And that is why you should edit the file rather than use the "echo" lines.
>
>   
>>> I have to say that I do not know exactly why the D-Bus 
>>> documentation said to do this:
>>>
>>> eval `dbus-launch --sh-syntax --exit-with-session`
>>>
>>> as you probably know, using "eval" make the command take effect in 
>>> the current Bash session.  Which appears to be what you want.
>>>       
>> Well, there's basically two ways to accomplish the same thing -- 
>> arranging for the dbus-launcher to track the session that's doing the
>>  startx.  Using the eval method, it runs it in the same session, but 
>> the launcher then forks off the daemon (after getting the info about 
>> the session that it needs so it can track it) and returns control to 
>> the script, while printing the necessary dbus info for the WM (using 
>> --sh- syntax) to STDOUT.  The eval then takes are of setting up the 
>> environment from that output, such that an exec of the WM launcher 
>> (startkde in our case) further down the script will have the 
>> information about the dbus instance that the wm launcher needs all 
>> setup.  The two sides thus know about each other, and the dbus daemon
>>  can track the wm session and shut down when it does.  This method 
>> does the dbus launch first, then later, the wm launch-exec, on a 
>> different line.
>>
>> The other way to do it is as that kde page mentions, all in one line.
>>  When a program is supplied to dbus-launcher as a parameter (it's the
>>  only non-option argument, with everything following being args for 
>> the invoked program), dbus-launcher itself launches it (as well as 
>> dbus), setting the environment appropriately before doing so.  As 
>> such, the dbus-launcher invoking script no longer needs to know the 
>> information otherwise handed to it on STDOUT, so in that case, STDOUT
>>  doesn't get it.  Since dbus- launcher takes care of setting up the 
>> WM-launcher in this case, the two are accomplished all on the same 
>> line, with no second line needed (which is of course the reason for 
>> the exec in that case, it's slightly more efficient reusing the same 
>> process instead of setting up a new one, and that makes sure any 
>> other environment settings, etc, carry over, even if they're not 
>> exported).
>>
>> So, unless I've seriously missed something, I don't see what's wrong 
>> with either method.  They're just two different ways of doing the 
>> same thing, one running dbus-launch first, as a separate command, 
>> then the WM- launcher, the second handing the WM-launcher to 
>> dbus-launch as a parameter, so it's all accomplished in a single 
>> line.
>>
>> That's why I'm asking what's wrong.  Because I can't figure it out, 
>> but I've been known to overlook the obvious on occasion, and in fact 
>> am still learning "neat bash tricks" (and unfortunate bash 
>> misunderstandings) myself, so I'm just wondering if this is a "neat 
>> dbus-launcher trick" (and/or a bash redirect trick) you didn't 
>> understand, or an "unfortunate bash misunderstanding" of my own. 
>> Either way, I'm learning stuff, and expect you might be doing so as 
>> well.
>>
>>     
> I think that the question is whether:
>
>    eval `dbus-launch --sh-syntax --exit-with-session`
>
>    exec startkde
>
> and
>
>    dbus-launch --sh-syntax --exit-with-session
>
>    exec startkde
>
> will have the same effect.  IIUC, they will not.
>
>   
I was using as follows:
cat .xinitrc
# Begin .xinitrc file
eval `dbus-launch --sh-syntax --exit-with-session`
exec startkde 2>&1 | tee ~/.xsession-errors

Regards
Sagara

___________________________________________________
This message is from the kde mailing list.
Account management:  https://mail.kde.org/mailman/listinfo/kde.
Archives: http://lists.kde.org/.
More info: http://www.kde.org/faq.html.




More information about the kde mailing list