Mailinglist Archive: opensuse-kde (85 mails)

< Previous Next >
Re: [opensuse-kde] Re: KDE3 vs KDE4 apps
  • From: Lubos Lunak <l.lunak@xxxxxxx>
  • Date: Wed, 12 Sep 2007 15:57:07 +0200
  • Message-id: <200709121557.07863.l.lunak@xxxxxxx>
On Wednesday 12 of September 2007, Dirk Mueller wrote:
> On Wednesday, 12. September 2007, Lubos Lunak wrote:
> >  I meant something different with 5) - wanting to run a specific version.
> > So if I wanted to run KDE4 version of Konsole, I'd just run "kde4
> > konsole".
>
> which is equivalent to "kfoobar --kde4 konsole" (where we have to find a
> good name for kfoobar". and kfoobar would by default run kde3 unless the
> user logged into KDE4.

 Well, yes (except that "kfoobar --kde4 konsole" is pain to write).

> >  What you describe looks ok to me, but since we have the advantage of
> > different prefixes I think for 10.3 it should be enough to have KDE3 in
> > the path first unless the user is in KDE4.
>
> it would mean that we invent our own hack instead of using the solution
> that has to be developed from upstream anyway and we end up with something
> that we entirely have to maintain on our own.

 I don't see my proposal of having KDE3 path first as a hack or even something 
we'd have to maintain. It's simply extending the current state of having only 
KDE3 with also KDE4, and making sure KDE3 stays the same and KDE4 is the new 
added thing. You used to run KDE3 (or something else) and it ran KDE3 apps, 
now you run KDE3 (or something else that's not KDE4) and it should still run 
KDE3 apps.

 What maintenance would you expect from having KDE3 first in path? I have it 
here in my 10.2 and I don't think it has ever broken anything. In the worst 
case it's probably going to break only KDE4 anyway. Which will have its rough 
edges in 10.3 anyway and KDE4 problems may be fixed with newer KDE4 packages. 
And we may also go with upstream solution, whatever that is, as an addition. 
I don't think KDE3 in path first contradicts upstream solution.

> I agree that its simpler but the wrapper binary is not so much different,
> except that we have to find all the right places to patch (hopefuly thats
> not too difficult though).

 The actual binary may be something like the attachment, but I don't know 
where to call it. I'd say when calling directly by .desktop file, i.e. 
kdelibs3/kde4-applications.diff , but I don't know where else.

-- 
Lubos Lunak
KDE developer
--------------------------------------------------------------
SUSE LINUX, s.r.o.   e-mail: l.lunak@xxxxxxx , l.lunak@xxxxxxx
Lihovarska 1060/12   tel: +420 284 028 972
190 00 Prague 9      fax: +420 284 028 951
Czech Republic       http//www.suse.cz
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

static void usage( char* cmd )
    {
    printf( "Usage: %s <--kde4>|<--kde3> [command]\n", cmd );
    }

int main( int argc, char* argv[] )
    {
    if( argc == 1 )
        {
        usage( argv[ 0 ]);
        return 1;
        }
    bool kde3;
    int arg = 1;
    if( strcmp( argv[ arg ], "--kde3" ) == 0 )
        {
        kde3 = true;
        ++arg;
        }
    else if( strcmp( argv[ arg ], "--kde4" ) == 0 )
        {
        kde3 = false;
        ++arg;
        }
    else if( getenv( "KDE_FULL_SESSION" ) != NULL )
        {
        if( getenv( "KDE_SESSION_VERSION" ) != NULL )
            if( atoi( getenv( "KDE_SESSION_VERSION" )) == 4 )
                kde3 = false;
        }
    else
        kde3 = true;
    if( arg == argc )
        {
        usage( argv[ 0 ]);
        return 1;
        }
    if( kde3 )
        {
        // setenv stuff here
        }
    else
        {
        // setenv stuff here
        }
    char** args = new char*[ argc - arg + 1 ];
    for( int i = 0;
         i < argc - arg + 1;
         ++i )
        {
        args[ i ] = argv[ arg + i ];
        }
    execvp( args[ 0 ], args );
    return 255;
    }
< Previous Next >