Index: runupdater/runupdater.desktop
===================================================================
--- /dev/null
+++ runupdater/runupdater.desktop
@@ -0,0 +1,9 @@
+[Desktop Entry]
+Type=Application
+Exec=runupdater
+Terminal=false
+Name=Run Updater Tool
+Icon=www
+
+X-KDE-StartupNotify=false
+OnlyShowIn=KDE;
Index: runupdater/runupdater.cpp
===================================================================
--- /dev/null
+++ runupdater/runupdater.cpp
@@ -0,0 +1,96 @@
+/*
+ Run either opensuseupdater or zen-updater but not both.
+ For opensuseupdater its autostart condition is checked, for zen-updater
+ it's checked whether its autostart file is enabled.
+*/
+
+#include <kapplication.h>
+#include <kconfig.h>
+#include <ksimpleconfig.h>
+#include <kstandarddirs.h>
+
+static bool disabledOSU()
+    {
+    KConfig osu( "opensuseupdaterrc", true );
+    osu.setGroup( "General" );
+//    fprintf( stderr, "OSU:%d\n", osu.readBoolEntry ("Autostart", true ));
+    return !osu.readBoolEntry( "Autostart", true );
+    }
+
+static bool availableOSU()
+    {
+    return !KStandardDirs::findExe( "opensuseupdater" ).isEmpty();
+    }
+
+static bool runOSU()
+    {
+    return KApplication::kdeinitExec( "opensuseupdater", QStringList(), NULL, NULL, "0" ) == 0;
+    }
+    
+static bool disabledZU()
+    {
+    KConfig zu( "zen-updater-auto.desktop", true, false, "xdgconf-autostart" );
+    zu.setGroup( "Desktop Entry" );
+//    fprintf( stderr, "ZU %d\n", zu.readBoolEntry( "Hidden", false ) );
+    return zu.readBoolEntry( "Hidden", false );
+    }
+
+static bool availableZU()
+    {
+    return !KStandardDirs::findExe( "zen-updater" ).isEmpty();
+    }
+
+static bool runZU()
+    {
+    return KApplication::kdeinitExec( "zen-updater", QStringList(), NULL, NULL, "0" ) == 0;
+    }
+    
+extern "C"
+int kdemain()
+    {
+    KInstance inst( "runupdater" );
+    // KSimpleConfig should parse this one just fine, with entries in the default group
+    KSimpleConfig sysconfig( "/etc/sysconfig/sw_management", true );
+    QString preferred = sysconfig.readEntry( "PREFERRED_SW_MANAGER_STACK" );
+//    fprintf( stderr, "SC1: %s\n", preferred.latin1());
+    if( preferred.startsWith( "\"" ) && preferred.endsWith( "\"" )) // strip ""
+        preferred = preferred.mid( 1, preferred.length() - 2 );
+//    fprintf( stderr, "SC2: %s\n", preferred.latin1());
+    if( preferred.lower() == "opensuse" )
+        {
+        // opensuseupdater preferred - it's it's available, run it if it's enabled,
+        // try zen-updater only if opensuseupdater is not available at all
+        if( availableOSU())
+            {
+            if( !disabledOSU())
+                return runOSU();
+            return 0;
+            }
+        else if( availableZU() && !disabledZU())
+            return runZU();
+        return 0;
+        }
+    else if( preferred.lower() == "zlm" )
+        {
+        // similar like above, just the other way around
+        if( availableZU())
+            {
+            if( !disabledZU())
+                return runZU();
+            return 0;
+            }
+        else if( availableOSU() && !disabledOSU())
+            return runOSU();
+        return 0;
+        }
+    else
+        {
+        // prefer opensuseupdater, but try to run zen-updater if opensuseupdater is not run
+        // the difference is that zen-updater is still run if opensuseupdater is disabled
+        if( availableOSU() && !disabledOSU() && runOSU())
+            return 0;
+        if( availableZU() && !disabledZU() && runZU())
+            return 0;
+        return 0;
+        }
+    }
Index: runupdater/Makefile.am
===================================================================
--- /dev/null
+++ runupdater/Makefile.am
@@ -0,0 +1,13 @@
+INCLUDES = $(all_includes)
+
+bin_PROGRAMS = 
+lib_LTLIBRARIES =
+kdeinit_LTLIBRARIES = runupdater.la
+
+runupdater_la_LDFLAGS  = $(all_libraries) -module $(KDE_PLUGIN)
+runupdater_la_LIBADD   = $(LIB_KDECORE)
+
+runupdater_la_SOURCES = runupdater.cpp
+
+autostart_DATA = runupdater.desktop
+autostartdir = $(datadir)/autostart