diff --git a/CMakeLists.txt b/CMakeLists.txt
index 8236ce3c..1a869bb6 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -218,6 +218,7 @@ check_type_size( "long long" LONG_LONG )
 ##### tdebase directories #######################
 
 add_subdirectory( tdmlib )
+add_subdirectory( kcontrol )
 
 tde_conditional_add_subdirectory( BUILD_TDEINIT tdeinit )
 tde_conditional_add_subdirectory( BUILD_L10N l10n )
@@ -226,7 +227,6 @@ tde_conditional_add_subdirectory( BUILD_APPLNK applnk )
 tde_conditional_add_subdirectory( BUILD_DOC doc )
 tde_conditional_add_subdirectory( BUILD_LIBKONQ libkonq )
 tde_conditional_add_subdirectory( BUILD_KCMINIT kcminit )
-add_subdirectory( kcontrol )
 tde_conditional_add_subdirectory( BUILD_TWIN twin )
 tde_conditional_add_subdirectory( BUILD_KATE kate )
 tde_conditional_add_subdirectory( BUILD_KONQUEROR konqueror )
@@ -271,8 +271,8 @@ tde_conditional_add_subdirectory( BUILD_TQT3INTEGRATION tqt3integration )
 ##### install starttde & related stuff ##########
 
 if( BUILD_STARTTDE )
-  install( PROGRAMS starttde DESTINATION ${BIN_INSTALL_DIR} )
-  install( PROGRAMS migratekde3 r14-xdg-update release_notes DESTINATION ${BIN_INSTALL_DIR} )
+  install( PROGRAMS starttde migratekde3 r14-xdg-update tde_release_notes
+           DESTINATION ${BIN_INSTALL_DIR} )
 endif()
 
 
diff --git a/Makefile.am.in b/Makefile.am.in
index e32d5632..793c0868 100644
--- a/Makefile.am.in
+++ b/Makefile.am.in
@@ -9,7 +9,7 @@ COMPILE_AFTER_kcontrol = tdm kdesktop
 
 AUTOMAKE_OPTIONS = foreign 1.6.1
 
-bin_SCRIPTS = starttde trinity migratekde3 r14-xdg-update release_notes
+bin_SCRIPTS = starttde migratekde3 r14-xdg-update tde_release_notes
 
 EXTRA_DIST = admin bsd-port debian tdebase.spec.in README.pam kde.pamd tdescreensaver.pamd mkpamserv
 
diff --git a/applnk/CMakeLists.txt b/applnk/CMakeLists.txt
index 67432477..d24a872c 100644
--- a/applnk/CMakeLists.txt
+++ b/applnk/CMakeLists.txt
@@ -25,6 +25,7 @@ install( FILES
   RENAME .directory )
 
 install( FILES
+    tde-games-logic.directory
     tde-main.directory tde-development.directory tde-editors.directory
     tde-edutainment.directory tde-games-arcade.directory
     tde-games-board.directory tde-games-card.directory
diff --git a/applnk/tde-games-logic.directory b/applnk/tde-games-logic.directory
new file mode 100644
index 00000000..187cb68c
--- /dev/null
+++ b/applnk/tde-games-logic.directory
@@ -0,0 +1,11 @@
+[Desktop Entry]
+Encoding=UTF-8
+Type=Directory
+Name=Logic Games
+Name[cs]=Logické
+Name[de]=Logik
+Name[es]=Lógica
+Name[fr]=Jeux de logique
+Name[it]=Logica
+Name[ru]=головоломки
+Icon=package_games_logic
diff --git a/doc/faq/intro.docbook b/doc/faq/intro.docbook
index 4e7cc2a2..720b2bc6 100644
--- a/doc/faq/intro.docbook
+++ b/doc/faq/intro.docbook
@@ -182,7 +182,7 @@ Trinity developers want to maintain a "traditional" desktop environment.</para>
 <itemizedlist>
 
 <listitem>
-<para>Desktop search through the locate:/ tdeio-slave and Beagle</para>
+<para>Desktop search through the locate:/ tdeio-slave</para>
 </listitem>
 
 <listitem>
diff --git a/doc/releasenotes/CMakeLists.txt b/doc/releasenotes/CMakeLists.txt
index d4dcd347..4392e53e 100644
--- a/doc/releasenotes/CMakeLists.txt
+++ b/doc/releasenotes/CMakeLists.txt
@@ -8,4 +8,4 @@
 
 tde_create_handbook( DESTINATION khelpcenter/releasenotes )
 
-install( FILES release_notes.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} )
+install( FILES tde_release_notes.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} )
diff --git a/doc/releasenotes/Makefile.am b/doc/releasenotes/Makefile.am
index 1778da0c..b6849ee2 100644
--- a/doc/releasenotes/Makefile.am
+++ b/doc/releasenotes/Makefile.am
@@ -1,6 +1,6 @@
 KDE_LANG = en
 KDE_DOCS = khelpcenter/releasenotes
 
-autostart_DATA = release_notes.desktop
+autostart_DATA = tde_release_notes.desktop
 autostartdir = $(datadir)/autostart
 
diff --git a/doc/releasenotes/release_notes.desktop b/doc/releasenotes/tde_release_notes.desktop
similarity index 75%
rename from doc/releasenotes/release_notes.desktop
rename to doc/releasenotes/tde_release_notes.desktop
index 64a32485..eb82e1de 100644
--- a/doc/releasenotes/release_notes.desktop
+++ b/doc/releasenotes/tde_release_notes.desktop
@@ -1,7 +1,7 @@
 [Desktop Entry]
 Encoding=UTF-8
-Name=release_notes
-Exec=release_notes
+Name=tde_release_notes
+Exec=tde_release_notes
 Type=Application
 X-TDE-autostart-phase=2
 X-TDE-StartupNotify=false
diff --git a/kcontrol/componentchooser/CMakeLists.txt b/kcontrol/componentchooser/CMakeLists.txt
index 53a77b2a..76d31162 100644
--- a/kcontrol/componentchooser/CMakeLists.txt
+++ b/kcontrol/componentchooser/CMakeLists.txt
@@ -30,9 +30,8 @@ install( FILES componentchooser.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
 
 tde_add_kpart( kcm_componentchooser AUTOMOC
   SOURCES
-    componentchooser_ui.ui componentconfig_ui.ui
-    emailclientconfig_ui.ui terminalemulatorconfig_ui.ui
-    browserconfig_ui.ui componentchooser.cpp kcm_componentchooser.cpp
+    componentchooser_ui.ui componentconfig_ui.ui emailclientconfig_ui.ui terminalemulatorconfig_ui.ui
+    browserconfig_ui.ui filemanagerconfig_ui.ui componentchooser.cpp kcm_componentchooser.cpp
   LINK tdeio-shared
   DESTINATION ${PLUGIN_INSTALL_DIR}
 )
diff --git a/kcontrol/componentchooser/Makefile.am b/kcontrol/componentchooser/Makefile.am
index 3280ace2..c761d081 100644
--- a/kcontrol/componentchooser/Makefile.am
+++ b/kcontrol/componentchooser/Makefile.am
@@ -5,7 +5,7 @@ METASOURCES = AUTO
 
 kde_module_LTLIBRARIES = kcm_componentchooser.la
 
-kcm_componentchooser_la_SOURCES = componentchooser_ui.ui componentconfig_ui.ui emailclientconfig_ui.ui terminalemulatorconfig_ui.ui browserconfig_ui.ui componentchooser.cpp kcm_componentchooser.cpp
+kcm_componentchooser_la_SOURCES = componentchooser_ui.ui componentconfig_ui.ui emailclientconfig_ui.ui terminalemulatorconfig_ui.ui browserconfig_ui.ui filemanagerconfig_ui.ui componentchooser.cpp kcm_componentchooser.cpp
 kcm_componentchooser_la_LDFLAGS = $(all_libraries) -module -avoid-version -no-undefined
 kcm_componentchooser_la_LIBADD =  $(LIB_TDEIO)
 
diff --git a/kcontrol/componentchooser/componentchooser.cpp b/kcontrol/componentchooser/componentchooser.cpp
index 9de1a1a7..c084c2fc 100644
--- a/kcontrol/componentchooser/componentchooser.cpp
+++ b/kcontrol/componentchooser/componentchooser.cpp
@@ -37,6 +37,7 @@
 #include <kstandarddirs.h>
 #include <ktrader.h>
 #include <kurlrequester.h>
+#include <kprocess.h>
 
 class MyListBoxItem: public TQListBoxText
 {
@@ -207,11 +208,47 @@ void CfgEmailClient::save(TDEConfig *)
 	emit changed(false);
 }
 
-
 //END Email client config
 
+//BEGIN File Manager Configuration
+
+CfgFileManager::CfgFileManager(TQWidget *parent) : FileManagerConfig_UI(parent), CfgPlugin()
+{
+	btnOpenFileAssociations->setEnabled(true);
+}
+
+CfgFileManager::~CfgFileManager()
+{
+}
+
+void CfgFileManager::configChanged()
+{
+	emit changed(true);
+}
+
+void CfgFileManager::defaults()
+{
+	load(0L);
+}
 
 
+void CfgFileManager::load(TDEConfig *)
+{
+}
+
+void CfgFileManager::save(TDEConfig *)
+{
+}
+
+void CfgFileManager::selectFileAssociations()
+{
+	TDEProcess p;
+	p << "tdecmshell" << "filetypes";
+	p.start(TDEProcess::DontCare);
+}
+
+//END File Manager Configuration
+
 //BEGIN Terminal Emulator Configuration
 
 CfgTerminalEmulator::CfgTerminalEmulator(TQWidget *parent):TerminalEmulatorConfig_UI(parent),CfgPlugin(){
@@ -233,14 +270,13 @@ void CfgTerminalEmulator::defaults()
     load(0L);
 }
 
-
 void CfgTerminalEmulator::load(TDEConfig *) {
 	TDEConfig *config = new TDEConfig("kdeglobals", true);
 	config->setGroup("General");
 	TQString terminal = config->readPathEntry("TerminalApplication","konsole");
 	if (terminal == "konsole")
 	{
-	   terminalLE->setText("xterm");
+	   terminalLE->setText("");
 	   terminalCB->setChecked(true);
 	}
 	else
@@ -435,6 +471,14 @@ void ComponentChooser::slotServiceSelected(TQListBoxItem* it) {
 			newConfigWidget = new CfgEmailClient(configContainer);
 		}
 
+	}
+	else if (cfgType=="internal_filemanager")
+	{
+		if (!(configWidget && configWidget->tqt_cast("CfgFileManager")))
+		{
+			newConfigWidget = new CfgFileManager(configContainer);
+		}
+
 	}
 	else if (cfgType=="internal_terminal")
 	{
diff --git a/kcontrol/componentchooser/componentchooser.desktop b/kcontrol/componentchooser/componentchooser.desktop
index 63a0adad..c8f842bf 100644
--- a/kcontrol/componentchooser/componentchooser.desktop
+++ b/kcontrol/componentchooser/componentchooser.desktop
@@ -185,60 +185,60 @@ Comment[x-test]=xxChoose the default components for various servicesxx
 Comment[zh_CN]=选择各种服务的默认组件
 Comment[zh_TW]=選擇各種服務的預設元件
 
-Keywords=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
-Keywords[bg]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;програми по подразбиране;подразбиране;е-поща;съобщения;моментни съобщения;терминал; конзола;браузър;уеб-браузър;
-Keywords[bn]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
-Keywords[bs]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks; podrazumijevani programi; komponente; izbor komponenti; resursi; elektronska pošta; instant poruke;
-Keywords[ca]=aplicacions per defecte;components;selector de components;recursos;e-mail;client de correu electrònic;editor de text;missatgeria instantània;emulador de terminal;navegador web;URL;hiperenllaços;
+Keywords=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;file manager;URL;hyperlinks;
+Keywords[bg]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;програми по подразбиране;подразбиране;е-поща;съобщения;моментни съобщения;терминал; конзола;браузър;уеб-браузър;Файлов браузър;
+Keywords[bn]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;file manager;URL;hyperlinks;
+Keywords[bs]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks; podrazumijevani programi; komponente; izbor komponenti; resursi; elektronska pošta; instant poruke;upravitelj datotekama;
+Keywords[ca]=aplicacions per defecte;components;selector de components;recursos;e-mail;client de correu electrònic;editor de text;missatgeria instantània;emulador de terminal;navegador web;gestor de fitxers;URL;hiperenllaços;
 Keywords[ca@valencia]=aplicacions per defecte;components;selector de components;recursos;e-mail;client de correu electrònic;editor de text;missatgeria instantània;emulador de terminal;navegador web;URL;hiperenllaços;
-Keywords[cs]=výchozí aplikace;komponenty;výběr komponent;zdroje;e-mail;emailový klient;editor textu;komunikátor;emulátor terminálů;webový prohlížeč;URL;odkazy;
-Keywords[da]=standardprogrammer;komponenter;komponentvælger;ressourcer;e-mail;email klient;tekst-editor;instant messenger;terminal-emulator;webbrowser;URL;hyperlinks;
-Keywords[de]=Standardprogramme;Standard-Komponenten;Komponenten;Ressourcen;E-Mail;E-Mail-Programm;Terminal-Emulation;Programme;Anwendungen;Internet;Navigator;URL;
-Keywords[el]=προκαθορισμένες εφαρμογές;συστατικά;επιλογέας συστατικών;πόροι;αλληλογραφία;εφαρμογή αλληλογραφίας;επεξεργαστής κειμένου;εφαρμογή στιγμιαίων μηνυμάτων;εξομοιωτής τερματικού;περιηγητής ιστού;URL;υπερσύνδεσμοι;
-Keywords[eo]=aprioraj aplikaĵoj;komponantoj;elektilo de komponantoj;risurcoj;retpoŝto;kliento de retpoŝto;tekstredaktilo;tujmesaĝilo;terminalo;retumilo;URL;hiperligilo;
-Keywords[es]=aplicaciones predeterminadas;componentes;selector de componente;recursos;correo electrónico;cliente de correo electrónico;editor de texto;cliente de mensajería instantánea;emulador de terminal;navegador web;URL;hiperenlaces;
-Keywords[et]=vaikimisi rakendused;komponendid;komponentide valija;ressursid;e-post;e-posti klient;tekstiredaktor;kiirsuhtlus;terminaliemulaator;veebibrauser;URL;hüperlingid;
-Keywords[eu]=lehenetsitako aplikazioak;osagaiak;osagai hautatzaile;baliabideak;e-posta;eposta bezero;testu editore;berehalako mezulari;terminal emulatzaile;web arakatzaile;URL; hiperestekak;
+Keywords[cs]=výchozí aplikace;komponenty;výběr komponent;zdroje;e-mail;emailový klient;editor textu;komunikátor;emulátor terminálů;webový prohlížeč;správce souborů;URL;odkazy;
+Keywords[da]=standardprogrammer;komponenter;komponentvælger;ressourcer;e-mail;email klient;tekst-editor;instant messenger;terminal-emulator;webbrowser;filhåndtering;URL;hyperlinks;
+Keywords[de]=Standardprogramme;Standard-Komponenten;Komponenten;Ressourcen;E-Mail;E-Mail-Programm;Terminal-Emulation;Programme;Anwendungen;Internet;Navigator;dateiverwaltung;URL;
+Keywords[el]=προκαθορισμένες εφαρμογές;συστατικά;επιλογέας συστατικών;πόροι;αλληλογραφία;εφαρμογή αλληλογραφίας;επεξεργαστής κειμένου;εφαρμογή στιγμιαίων μηνυμάτων;εξομοιωτής τερματικού;περιηγητής ιστού;Διαχειριστής αρχείων;URL;υπερσύνδεσμοι;
+Keywords[eo]=aprioraj aplikaĵoj;komponantoj;elektilo de komponantoj;risurcoj;retpoŝto;kliento de retpoŝto;tekstredaktilo;tujmesaĝilo;terminalo;retumilo;dosieradministrilo;URL;hiperligilo;
+Keywords[es]=aplicaciones predeterminadas;componentes;selector de componente;recursos;correo electrónico;cliente de correo electrónico;editor de texto;cliente de mensajería instantánea;emulador de terminal;navegador web;gestor de archivos;URL;hiperenlaces;
+Keywords[et]=vaikimisi rakendused;komponendid;komponentide valija;ressursid;e-post;e-posti klient;tekstiredaktor;kiirsuhtlus;terminaliemulaator;veebibrauser;failihaldur;URL;hüperlingid;
+Keywords[eu]=lehenetsitako aplikazioak;osagaiak;osagai hautatzaile;baliabideak;e-posta;eposta bezero;testu editore;berehalako mezulari;terminal emulatzaile;web arakatzaile;fitxategi kudeatzailea;URL;hiperestekak;
 Keywords[fa]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
 Keywords[fi]=oletussovellukset;komponentit;komponenttivalitsin;resurssit;e-mail;email;sähköposti;sähköpostiohjelma;tekstimuokkain;tekstieditori;pikaviestin;pikaviestiohjelma;pääte-emulaattori;WWW-selain;web-selain;verkkoselain;osoite;linkit;
-Keywords[fr]=applications par défaut; composants; sélecteur de composants; ressources; courriel; client de courrier électronique; éditeur de texte; messagerie instantanée; émulateur de terminal; navigateur Web; URL; liens hypertexte;
-Keywords[ga]=feidhmchlár réamhshocraithe;comhpháirteanna;roghnóir comhpháirte;acmhainní;ríomhphost;cliant ríomhphoist;eagarthóir téacs;cur teachtaireachtaí meandaracha;aithriseoir teirminéil;brabhsálaí;URL;hipearnaisc;
-Keywords[gl]=predeterminado; programas; aplicación; aplicativo; compoñente; recursos; correo; email; cliente; axente; editor de texto; mensaxería; emulador de terminal; navegador; URL; hiperligazón;
+Keywords[fr]=applications par défaut; composants; sélecteur de composants; ressources; courriel; client de courrier électronique; éditeur de texte; messagerie instantanée; émulateur de terminal; navigateur Web; gestionnaire de fichiers; URL; liens hypertexte;
+Keywords[ga]=feidhmchlár réamhshocraithe;comhpháirteanna;roghnóir comhpháirte;acmhainní;ríomhphost;cliant ríomhphoist;eagarthóir téacs;cur teachtaireachtaí meandaracha;aithriseoir teirminéil;brabhsálaí;bainisteoir comhad;URL;hipearnaisc;
+Keywords[gl]=predeterminado; programas; aplicación; aplicativo; compoñente; recursos; correo; email; cliente; axente; editor de texto; mensaxería; emulador de terminal; navegador;gestor de ficheiros; URL; hiperligazón;
 Keywords[he]=יישומים ברירת מחדל;רכיבים; בוחר;משאבים;אימייל;דוא"ל;דואל;דואר;לקוח;עורך טקסט;מסרים מיידיים;מדמה מסוף;מסוף;דפדפן;כתובת;default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
 Keywords[hi]=डिफ़ॉल्ट अनुप्रयोगों; घटक; घटक चयनकर्ता; संसाधनों; ई - मेल; ई - मेलग्राहक; पाठ संपादक; इंसटैंट मैसेंजर; टर्मिनल एमुलेटर; वेब ब्राउज़र; यूआरएल;हाइपरलिंक्स;
-Keywords[hu]=alapértelmezett alkalmazások;komponensek;komponensválasztó;erőforrások;e-mail;e-mail kliens;szövegszerkesztő;azonnali üzenetküldő;terminálemulátor;webböngésző;URL;hiperhivatkozás;
+Keywords[hu]=alapértelmezett alkalmazások;komponensek;komponensválasztó;erőforrások;e-mail;e-mail kliens;szövegszerkesztő;azonnali üzenetküldő;terminálemulátor;webböngésző;fájlkezelő;URL;hiperhivatkozás;
 Keywords[ia]=applicationes predefinite;componentes;selector de componente;ressources;e-posta;cliente de e-posta; editor de texto;messagero instantanee;emulator de terminal;navigator web;hyperligamines de URL;
-Keywords[is]=sjálfgefin forrit;einingar;einingaval;aðföng;tölvupóstur;tölvupóstforrit;textaritill;skyndiskilaboð;skjáhermir;vafri;URL;slóð;veftengill;
-Keywords[it]=applicazioni predefinite;componenti;selettore componenti;risorse;email;posta elettronica;client di posta elettronica;editor di testo;messaggistica istantanea;emulatore di terminale;browser web;URL;collegamento ipertestuale;
-Keywords[ja]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
-Keywords[kk]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
+Keywords[is]=sjálfgefin forrit;einingar;einingaval;aðföng;tölvupóstur;tölvupóstforrit;textaritill;skyndiskilaboð;skjáhermir;vafri;skráastjóri;URL;slóð;veftengill;
+Keywords[it]=applicazioni predefinite;componenti;selettore componenti;risorse;email;posta elettronica;client di posta elettronica;editor di testo;messaggistica istantanea;emulatore di terminale;browser web;file manager;URL;collegamento ipertestuale;
+Keywords[ja]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;file manager;URL;hyperlinks;
+Keywords[kk]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;file manager;URL;hyperlinks;
 Keywords[km]=កម្មវិធី​លំនាំដើម សមសធាតុ កម្មវិធី​ជ្រើស​សមាសធាតុ ធនធាន អ៊ីមែល កម្មវិធី​អ៊ីមែល កម្មវិធី​កែសម្រួល​អត្ថបទ កម្មវិធី​ផ្ញើសារ​បន្ទាន់ កម្មវិធី​ត្រាប់​តាម​ស្ថានីយ៍ កម្មវិធី​រុករក​បណ្ដាញ URL តំណ​ខ្ពស់;
-Keywords[ko]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;기본 프로그램;구성 요소;컴포넌트;자원;이메일;이메일;이메일 클라이언트;이메일 클라이언트;텍스트 편집기;편집기;메신저;터미널;터미널 에뮬레이터;웹 브라우저;하이퍼링크;
-Keywords[lv]=noklusētās programmas;komponentes;komponenšu atlasītājs;resursi;e-pasts;e-pasta klients;teksta redaktors;tūlītējā ziņojumapmaiņa;termināļa emulators;tīmekļa pārlūks;URL;saites;
+Keywords[ko]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;file manager;URL;hyperlinks;기본 프로그램;구성 요소;컴포넌트;자원;이메일;이메일;이메일 클라이언트;이메일 클라이언트;텍스트 편집기;편집기;메신저;터미널;터미널 에뮬레이터;웹 브라우저;하이퍼링크;
+Keywords[lv]=noklusētās programmas;komponentes;komponenšu atlasītājs;resursi;e-pasts;e-pasta klients;teksta redaktors;tūlītējā ziņojumapmaiņa;termināļa emulators;tīmekļa pārlūks;failu menedžeris;URL;saites;
 Keywords[mr]=मूलभूत अनुप्रयोग; भाग; भाग निवडणे; संसाधन; इमेल; इमेल ग्राहक; पाठ्य संपादक; त्वरित संदेशवाहक; टर्मिनल एम्युलेटर; वेब ब्राऊजर; URL; हायपरलिंक्स;
-Keywords[nb]=standardprogrammer;komponenter;komponentvelger;ressurser;e-post;e-postklient;tekstprogram;lynmelding;terminalemulator;nettleser;URL;hyperlenker;
-Keywords[nds]=Standardprogrammen;Komponenten;Komponentköör;Ressourcen;Nettpost;Nettpostprogramm;Texteditor;Kortnarichtenprogramm;Konsool;Terminal;Nettkieker;URL;Hyperlinks;
-Keywords[nl]=standaard toepassingen;componenten;componentenkiezer;hulpbronnen;e-mail-client;tekstbewerker;instant-messenger;terminal-emulator;webbrowser;url-adres;hyperlinks;
-Keywords[nn]=standardprogram;komponentar;komponentveljar;ressursar;resursar;e-post;e-postklient;e-postprogram;lynmeldingar;terminalemulator;nettlesar;weblesar;URL;adresse;lenkjer;hyperlenkjer;
+Keywords[nb]=standardprogrammer;komponenter;komponentvelger;ressurser;e-post;e-postklient;tekstprogram;lynmelding;terminalemulator;nettleser;filbehandler;URL;hyperlenker;
+Keywords[nds]=Standardprogrammen;Komponenten;Komponentköör;Ressourcen;Nettpost;Nettpostprogramm;Texteditor;Kortnarichtenprogramm;Konsool;Terminal;Nettkieker;dateipleger;URL;Hyperlinks;
+Keywords[nl]=standaard toepassingen;componenten;componentenkiezer;hulpbronnen;e-mail-client;tekstbewerker;instant-messenger;terminal-emulator;webbrowser;bestandsbeheerder;url-adres;hyperlinks;
+Keywords[nn]=standardprogram;komponentar;komponentveljar;ressursar;resursar;e-post;e-postklient;e-postprogram;lynmeldingar;terminalemulator;nettlesar;weblesar;filhandsamar;URL;adresse;lenkjer;hyperlenkjer;
 Keywords[pa]=ਡਿਫਾਲਟ ਐਪੀਲਕੇਸ਼ਨ;ਐਪਲੀਕੇਸ਼ਨ;ਭਾਗ;ਭਾਗ ਚੋਣਕਾਰ;ਸਰੋਤ;ਈਮੇਲ;ਈ-ਮੇਲ;ਈਮੇਲ ਕਲਾਇਟ;ਟੈਕਸਟ ਐਡੀਟਰ; ਤੁਰੰਤ ਸੁਨੇਹੇ;ਮੈਸੈਂਜਰ;ਟਰਮੀਨਲ ਈਮੂਲੇਟਰ;ਵੈੱਬ ਬਰਾਊਜ਼ਰ;URL;ਹਾਈਪਰਲਿੰਕ;
-Keywords[pl]=domyślne programy;domyślne aplikacje;składniki;komponenty;wybór składników;zasoby;e-mail;poczta;klient pocztowy;edytor teksu;komunikator internetowy;emulator terminala;przeglądarka internetowa;URL;hiperodnośniki;
-Keywords[pt]=aplicações predefinidas;componentes;selector de componentes;recursos;e-mail;cliente de e-mail;editor de texto;mensageiro instantâneo;emulador de terminal;navegador Web;URL;hiperligações;
-Keywords[pt_BR]=aplicativos padrão;componentes;seletor de componentes;recursos;e-mail;cliente de e-mail;editor de texto;mensageiro instantâneo;emulador de terminal;navegador web;URL;hiperligações;
-Keywords[ro]=aplicații implicite;componente;alege componente;resurse;e-mail;email;client;editor text;mesager instant;emulator terminal; browser web;URL;link-uri;
-Keywords[ru]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;приложения по умолчанию;компоненты;ресурсы;электронная почта;контакт электронной почты;текстовый редактор;обмен мгновенными сообщениями;эмулятор терминала;веб-браузер;гиперссылка;
-Keywords[sk]=predvolené aplikácie;komponenty;výber komponentu;zdroje;e-mail;emailový klient;textový editor;instant messenger;emulátor terminálu;webový prehliadač;URL;hyperlinky;
-Keywords[sl]=privzeti programi;komponente;komponenta;izbirnik komponent;viri;e-pošta;epošta;urejevalnik besedila;hipno sporočanje;hipni sporočilnik;posnemovalnik terminala;spletni brskalnik;URL;hiperpovezave;hiper-povezave;
-Keywords[sr]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;подразумевани програми;компонента;бирач компоненти;ресурс;е‑пошта;клијент е‑поште;уређивач текста;брзи гласник;емулатор терминала;веб прегледач;УРЛ;хипервеза;
+Keywords[pl]=domyślne programy;domyślne aplikacje;składniki;komponenty;wybór składników;zasoby;e-mail;poczta;klient pocztowy;edytor teksu;komunikator internetowy;emulator terminala;przeglądarka internetowa;menedżer plików;URL;hiperodnośniki;
+Keywords[pt]=aplicações predefinidas;componentes;selector de componentes;recursos;e-mail;cliente de e-mail;editor de texto;mensageiro instantâneo;emulador de terminal;navegador Web;gestor de ficheiros;URL;hiperligações;
+Keywords[pt_BR]=aplicativos padrão;componentes;seletor de componentes;recursos;e-mail;cliente de e-mail;editor de texto;mensageiro instantâneo;emulador de terminal;navegador web;gerenciador de arquivos;URL;hiperligações;
+Keywords[ro]=aplicații implicite;componente;alege componente;resurse;e-mail;email;client;editor text;mesager instant;emulator terminal; browser web;manager de fișiere;URL;link-uri;
+Keywords[ru]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;приложения по умолчанию;компоненты;ресурсы;электронная почта;контакт электронной почты;текстовый редактор;обмен мгновенными сообщениями;эмулятор терминала;Файловый менеджер;веб-браузер;гиперссылка;
+Keywords[sk]=predvolené aplikácie;komponenty;výber komponentu;zdroje;e-mail;emailový klient;textový editor;instant messenger;emulátor terminálu;webový prehliadač;správca súborov;URL;hyperlinky;
+Keywords[sl]=privzeti programi;komponente;komponenta;izbirnik komponent;viri;e-pošta;epošta;urejevalnik besedila;hipno sporočanje;hipni sporočilnik;posnemovalnik terminala;spletni brskalnik;upravitelj datotek;URL;hiperpovezave;hiper-povezave;
+Keywords[sr]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;Менаџер фајловаURL;hyperlinks;подразумевани програми;компонента;бирач компоненти;ресурс;е‑пошта;клијент е‑поште;уређивач текста;брзи гласник;емулатор терминала;веб прегледач;УРЛ;хипервеза;
 Keywords[sr@ijekavian]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;подразумевани програми;компонента;бирач компоненти;ресурс;е‑пошта;клијент е‑поште;уређивач текста;брзи гласник;емулатор терминала;веб прегледач;УРЛ;хипервеза;
 Keywords[sr@ijekavianlatin]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;podrazumevani programi;komponenta;birač komponenti;resurs;e‑pošta;klijent e‑pošte;uređivač teksta;brzi glasnik;emulator terminala;veb pregledač;URL;hiperveza;
-Keywords[sr@latin]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;podrazumevani programi;komponenta;birač komponenti;resurs;e‑pošta;klijent e‑pošte;uređivač teksta;brzi glasnik;emulator terminala;veb pregledač;URL;hiperveza;
-Keywords[sv]=standardprogram;komponenter;komponentväljare;resurser;e-post;e-postprogram;texteditor;direktmeddelanden;terminalemulator;webbläsare;webbadress;hyperlänkar;
-Keywords[tg]=барномаҳои стандартӣ;қисмҳо;интихобкунандаи қисмҳо;манбаъҳо;почтаи электронӣ;мизоҷи почта;таҳриргари матнӣ;паёмнависии фаврӣ;эмулятори терминал;веб-браузер;URL;пайвандҳои интернетӣ;
-Keywords[tr]=öntanımlı uygulamalar;bileşenler;bileşen seçici;kaynaklar;e-posta;e-posta istemcisi;metin düzenleyici;hızlı mesajlaşma uygulaması;uçbirim;web tarayıcı;URL;
+Keywords[sr@latin]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;file manager;URL;hyperlinks;podrazumevani programi;komponenta;birač komponenti;resurs;e‑pošta;klijent e‑pošte;uređivač teksta;brzi glasnik;emulator terminala;veb pregledač;Menadžer fajlova;URL;hiperveza;
+Keywords[sv]=standardprogram;komponenter;komponentväljare;resurser;e-post;e-postprogram;texteditor;direktmeddelanden;terminalemulator;webbläsare;filhanterare;webbadress;hyperlänkar;
+Keywords[tg]=барномаҳои стандартӣ;қисмҳо;интихобкунандаи қисмҳо;манбаъҳо;почтаи электронӣ;мизоҷи почта;таҳриргари матнӣ;паёмнависии фаврӣ;эмулятори терминал;веб-браузер;Мудири файл;URL;пайвандҳои интернетӣ;
+Keywords[tr]=öntanımlı uygulamalar;bileşenler;bileşen seçici;kaynaklar;e-posta;e-posta istemcisi;metin düzenleyici;hızlı mesajlaşma uygulaması;uçbirim;web tarayıcı;dosya yöneticisi;URL;
 Keywords[ug]=كۆڭۈلدىكى پروگراممىلار، بۆلەكلەر، بۆلەك تاللىغۇچ، مەنبەلەر، ئېلخەت، ئېلخەت خېرىدارى، تېكىست تەھرىرلىگۈچ، مۇڭداشقۇ، تېرمىنال تەقلىدلىگۈچ، توركۆرگۈ، URL، hyperlinks;
-Keywords[uk]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;програма;додаток;типовий;типова;вибір;компонент;ресурс;пошта;поштовий;повідомлення;редактор;текст;текстовий редактор;спілкування;обмін повідомленнями;емулятор;термінал;переглядач;перегляд;інтернет;сторінка;сторінки;посилання;адреси;адреса;
-Keywords[vi]=thành phần;bộ chọn thành phần;tài nguyên;thư điện tử;trình thư;mô phỏng thiết bị cuối;ứng dụng;default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
-Keywords[wa]=programes prémetou;componints;tchoezixheu d' componint;tchoezixheu di componint;rissource;emile;e-mail;cliyint;aspougneu di tecse;aspougneu d' tecse;messaedjî sol mounmint;messaedjreye sol moumint;MSM;terminå;emulateu d' terminå;emulateu di terminå;betchteu waibe;URL;adresse;hårdêyes;hårdêye;
+Keywords[uk]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;програма;додаток;типовий;типова;вибір;компонент;ресурс;пошта;поштовий;повідомлення;редактор;текст;текстовий редактор;спілкування;обмін повідомленнями;емулятор;термінал;переглядач;перегляд;інтернет;сторінка;сторінки;посилання;адреси;адреса;Менеджер файлів
+Keywords[vi]=thành phần;bộ chọn thành phần;tài nguyên;thư điện tử;trình thư;mô phỏng thiết bị cuối;ứng dụng;default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;Trình quản lí tập tin;URL;hyperlinks;
+Keywords[wa]=programes prémetou;componints;tchoezixheu d' componint;tchoezixheu di componint;rissource;emile;e-mail;cliyint;aspougneu di tecse;aspougneu d' tecse;messaedjî sol mounmint;messaedjreye sol moumint;MSM;terminå;emulateu d' terminå;emulateu di terminå;betchteu waibe;manaedjeu di fitchîs;URL;adresse;hårdêyes;hårdêye;
 Keywords[x-test]=xxdefault applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinksxx;
-Keywords[zh_CN]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;默认程序;组件;组件选择器;资源;电子邮件;邮件客户端;文本编辑器;即时通信;终端模拟器;网页浏览器;地址;
-Keywords[zh_TW]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;
+Keywords[zh_CN]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;URL;hyperlinks;默认程序;组件;组件选择器;资源;电子邮件;邮件客户端;文本编辑器;即时通信;终端模拟器;网页浏览器;地址;文件管理器;
+Keywords[zh_TW]=default applications;components;component chooser;resources;e-mail;email client;text editor;instant messenger;terminal emulator;web browser;file manager;URL;hyperlinks;
diff --git a/kcontrol/componentchooser/componentchooser.h b/kcontrol/componentchooser/componentchooser.h
index 0407989c..3649ca21 100644
--- a/kcontrol/componentchooser/componentchooser.h
+++ b/kcontrol/componentchooser/componentchooser.h
@@ -16,11 +16,12 @@
 #ifndef _COMPONENTCHOOSER_H_
 #define _COMPONENTCHOOSER_H_
 
+#include "browserconfig_ui.h"
 #include "componentchooser_ui.h"
 #include "componentconfig_ui.h"
 #include "emailclientconfig_ui.h"
+#include "filemanagerconfig_ui.h"
 #include "terminalemulatorconfig_ui.h"
-#include "browserconfig_ui.h"
 #include <tqdict.h>
 #include <tqstring.h>
 
@@ -84,6 +85,24 @@ signals:
 	void changed(bool);
 };
 
+class CfgFileManager: public FileManagerConfig_UI,public CfgPlugin
+{
+Q_OBJECT
+public:
+	CfgFileManager(TQWidget *parent);
+	virtual ~CfgFileManager();
+	virtual void load(TDEConfig *cfg);
+	virtual void save(TDEConfig *cfg);
+	virtual void defaults();
+
+protected slots:
+	void selectFileAssociations();
+	void configChanged();
+
+signals:
+	void changed(bool);
+};
+
 class CfgTerminalEmulator: public TerminalEmulatorConfig_UI,public CfgPlugin
 {
 Q_OBJECT
diff --git a/kcontrol/componentchooser/componentservices/CMakeLists.txt b/kcontrol/componentchooser/componentservices/CMakeLists.txt
index f8da91cf..5bc5a3c6 100644
--- a/kcontrol/componentchooser/componentservices/CMakeLists.txt
+++ b/kcontrol/componentchooser/componentservices/CMakeLists.txt
@@ -10,5 +10,5 @@
 #################################################
 
 install( FILES
-    kcm_kemail.desktop kcm_terminal.desktop kcm_browser.desktop
+    kcm_kemail.desktop kcm_terminal.desktop kcm_browser.desktop kcm_filemanager.desktop
   DESTINATION ${DATA_INSTALL_DIR}/kcm_componentchooser )
diff --git a/kcontrol/componentchooser/componentservices/Makefile.am b/kcontrol/componentchooser/componentservices/Makefile.am
index 3ba55cc0..cb2adc40 100644
--- a/kcontrol/componentchooser/componentservices/Makefile.am
+++ b/kcontrol/componentchooser/componentservices/Makefile.am
@@ -1,3 +1,3 @@
-kcm_tdetexteditor_DATA = kcm_kemail.desktop kcm_terminal.desktop kcm_browser.desktop
-kcm_tdetexteditordir = $(kde_datadir)/kcm_componentchooser
+kcm_componentchooser_DATA = kcm_kemail.desktop kcm_terminal.desktop kcm_browser.desktop kcm_filemanager.desktop
+kcm_componentchooserdir = $(kde_datadir)/kcm_componentchooser
 
diff --git a/kcontrol/componentchooser/componentservices/kcm_filemanager.desktop b/kcontrol/componentchooser/componentservices/kcm_filemanager.desktop
new file mode 100644
index 00000000..344e9d01
--- /dev/null
+++ b/kcontrol/componentchooser/componentservices/kcm_filemanager.desktop
@@ -0,0 +1,96 @@
+Name=File Manager
+Name[af]=Lêer Bestuurder
+Name[ar]=مدبّر الملفات
+Name[az]=Fayl İdarəcisi
+Name[be]=Кіраўнік файлаў
+Name[bg]=Файлов браузър
+Name[bn]=ফাইল ম্যানেজার
+Name[br]=Merour restroù
+Name[bs]=Upravitelj datotekama
+Name[ca]=Gestor de fitxers
+Name[cs]=Správce souborů
+Name[csb]=Menedżer lopków
+Name[cy]=Rheolydd Ffeiliau
+Name[da]=Filhåndtering
+Name[de]=Dateiverwaltung
+Name[el]=Διαχειριστής αρχείων
+Name[eo]=Dosieradministrilo
+Name[es]=Gestor de archivos
+Name[et]=Failihaldur
+Name[eu]=Fitxategi kudeatzailea
+Name[fa]=مدیر پرونده
+Name[fi]=Tiedostonhallinta
+Name[fo]=Fíluhandfarari
+Name[fr]=Gestionnaire de fichiers
+Name[fy]=Triembehearder
+Name[ga]=Bainisteoir Comhad
+Name[gl]=Xestor de Ficheiros
+Name[he]=מנהל הקבצים
+Name[hi]=फ़ाइल प्रबंधक
+Name[hr]=Upravitelj datotekama
+Name[hsb]=Datajowy manager
+Name[hu]=Fájlkezelő
+Name[id]=Manajer File
+Name[is]=Skráastjóri
+Name[it]=File manager
+Name[ja]=ファイルマネージャ
+Name[ka]=ფაილთა მენჯერი
+Name[kk]=Файл менеджері
+Name[km]=កម្មវិធី​គ្រប់គ្រង​ឯកសារ
+Name[ko]=파일 관리자
+Name[lo]=ເຄື່ອງມືການຈັດການແຟ້ມ
+Name[lt]=Bylų tvarkyklė
+Name[lv]=Failu Menedžeris
+Name[mk]=Менаџер на датотеки
+Name[mn]=Файл удирдагч
+Name[ms]=Pengurus Fail
+Name[mt]=Manager tal-Fajls
+Name[nb]=Filbehandler
+Name[nds]=Dateipleger
+Name[ne]=फाइल प्रबन्धक
+Name[nl]=Bestandsbeheerder
+Name[nn]=Filhandsamar
+Name[nso]=Molaodi wa Faele
+Name[oc]=Gestionari de fiquièrs
+Name[pa]=ਫਾਇਲ ਮੈਨੇਜਰ
+Name[pl]=Menedżer plików
+Name[pt]=Gestor de Ficheiros
+Name[pt_BR]=Gerenciador de Arquivos
+Name[ro]=Manager de fișiere
+Name[ru]=Файловый менеджер
+Name[rw]= Mucungamadosiye
+Name[se]=Fiilagieđahalli
+Name[sk]=Správca súborov
+Name[sl]=Upravitelj datotek
+Name[sr]=Менаџер фајлова
+Name[sr@Latn]=Menadžer fajlova
+Name[ss]=Siphatsi selifayela
+Name[sv]=Filhanterare
+Name[ta]=கோப்பு மேலாளர்
+Name[te]=దస్త్రాల అభికర్త
+Name[tg]=Мудири файл
+Name[th]=เครื่องมือจัดการแฟ้ม
+Name[tr]=Dosya Yöneticisi
+Name[tt]=Birem İdäräçe
+Name[uk]=Менеджер файлів
+Name[uz]=Fayl boshqaruvchisi
+Name[uz@cyrillic]=Файл бошқарувчиси
+Name[ven]=Mulanguli wa faela
+Name[vi]=Trình quản lí tập tin
+Name[wa]=Manaedjeu di fitchîs
+Name[xh]=Umphathi Wefayile
+Name[zh_CN]=文件管理器
+Name[zh_TW]=檔案管理程式
+Name[zu]=imenenja yamafayela
+
+Comment=This service allows you to configure your default file manager. All TDE applications which invoke a file manager application should honor this setting.
+Comment[cs]=Tato služba umožňuje nastavit si výchozího správce souborů. Všechny TDE aplikace, které spouští správce souborů, by měly používat toto nastavení.
+Comment[de]=Hier können Sie die voreingestellte Dateiverwaltung einrichten. Alle TDE-Programme, die Zugriff auf ein solches Programm benötigen, sollten diese Einstellungen verwenden.
+Comment[es]=Este servicio le permite configurar su gestor de archivos predefinido. Todas las aplicaciones TDE que invoquen un gestor de archivos deberían reconocer esta opción.
+Comment[fr]=Ce service vous permet de configurer votre gestionnaire de fichiers par défaut. Toutes les applications TDE qui appellent une application de gestionnaire de fichiers doivent accepter ce réglage.
+Comment[it]= Questo servizio ti permette di configurare il tuo file manager preferito. Tutte le applicazioni di TDE che avranno bisogno di aprire un file manager dovrebbero rispettare questa impostazione.
+Comment[pt]=Este serviço permite-lhe configurar o seu gestor de Ficheiros por omissão. Todas as aplicações do TDE que invoquem um gestor de Ficheiros devem respeitar esta configuração.
+Comment[pt_BR]=Este serviço permite a você configurar o seu gerenciador de arquivos padrão. Todos os aplicativos do TDE que precisarem acessar um gerenciador de arquivos devem seguir esta configuração.
+Comment[ru]=Эта служба позволяет настроить Файловый менеджер по умолчанию. Все приложения TDE, которые вызывают Файловый менеджер, должны следовать этому параметру.
+
+configurationType=internal_filemanager
diff --git a/kcontrol/componentchooser/filemanagerconfig_ui.ui b/kcontrol/componentchooser/filemanagerconfig_ui.ui
new file mode 100644
index 00000000..fbcd23d4
--- /dev/null
+++ b/kcontrol/componentchooser/filemanagerconfig_ui.ui
@@ -0,0 +1,124 @@
+<!DOCTYPE UI><UI version="3.2" stdsetdef="1">
+<class>FileManagerConfig_UI</class>
+<widget class="TQWidget">
+    <property name="name">
+        <cstring>FileManagerConfig_UI</cstring>
+    </property>
+    <property name="geometry">
+        <rect>
+            <x>0</x>
+            <y>0</y>
+            <width>263</width>
+            <height>188</height>
+        </rect>
+    </property>
+    <property name="sizePolicy">
+        <sizepolicy>
+            <hsizetype>3</hsizetype>
+            <vsizetype>3</vsizetype>
+            <horstretch>0</horstretch>
+            <verstretch>0</verstretch>
+        </sizepolicy>
+    </property>
+    <vbox>
+        <property name="name">
+            <cstring>unnamed</cstring>
+        </property>
+        <property name="margin">
+            <number>0</number>
+        </property>
+        <grid>
+            <widget class="TQLabel" row="0" column="0" rowspan="1" colspan="2">
+              <property name="name">
+                <cstring>labelDescription</cstring>
+              </property>
+              <property name="text">
+                <string>The default file manager can be selected by changing the preferred application for mime type inode/directory in the File Associations control module</string>
+              </property>
+              <property name="alignment">
+                <set>WordBreak|AlignVCenter</set>
+              </property>
+            </widget>
+            <widget class="TQLayoutWidget" row="1" column="0">
+                <property name="name">
+                    <cstring>Layout4</cstring>
+                </property>
+                <hbox>
+                    <property name="name">
+                        <cstring>unnamed</cstring>
+                    </property>
+                    <widget class="TQPushButton">
+                        <property name="name">
+                            <cstring>btnOpenFileAssociations</cstring>
+                        </property>
+                        <property name="enabled">
+                            <bool>false</bool>
+                        </property>
+                        <property name="sizePolicy">
+                            <sizepolicy>
+                                <hsizetype>1</hsizetype>
+                                <vsizetype>1</vsizetype>
+                                <horstretch>0</horstretch>
+                                <verstretch>0</verstretch>
+                            </sizepolicy>
+                        </property>
+                        <property name="text">
+                            <string>Open File Associations module</string>
+                        </property>
+                        <property name="whatsThis" stdset="0">
+                            <string>Click here to open the File Association control module.</string>
+                        </property>
+                    </widget>
+                </hbox>
+            </widget>
+            <spacer row="1" column="1">
+              <property name="name">
+                <cstring>Spacer16</cstring>
+              </property>
+              <property name="orientation">
+                <enum>Horizontal</enum>
+              </property>
+              <property name="sizeType">
+                <enum>Expanding</enum>
+              </property>
+            </spacer>
+            <spacer row="2" column="1">
+              <property name="name">
+                <cstring>Spacer4</cstring>
+              </property>
+              <property name="orientation">
+                <enum>Vertical</enum>
+              </property>
+              <property name="sizeType">
+                <enum>Expanding</enum>
+              </property>
+              <property name="sizeHint">
+                <size>
+                  <width>0</width>
+                  <height>87</height>
+                </size>
+              </property>
+            </spacer>
+        </grid>
+    </vbox>
+</widget>
+<connections>
+    <connection>
+        <sender>btnOpenFileAssociations</sender>
+        <signal>clicked()</signal>
+        <receiver>FileManagerConfig_UI</receiver>
+        <slot>selectFileAssociations()</slot>
+    </connection>
+</connections>
+<tabstops>
+  <tabstop>btnOpenFileAssociations</tabstop>
+</tabstops>
+<includes>
+    <include location="local" impldecl="in implementation">kdialog.h</include>
+</includes>
+<Q_SLOTS>
+    <slot access="protected">selectFileAssociations()</slot>
+</Q_SLOTS>
+<layoutdefaults spacing="3" margin="6"/>
+<layoutfunctions spacing="KDialog::spacingHint" margin="KDialog::marginHint"/>
+</UI>
diff --git a/kcontrol/hwmanager/devicepropsdlg.cpp b/kcontrol/hwmanager/devicepropsdlg.cpp
index 3c402cc8..409776dd 100644
--- a/kcontrol/hwmanager/devicepropsdlg.cpp
+++ b/kcontrol/hwmanager/devicepropsdlg.cpp
@@ -532,12 +532,12 @@ void DevicePropertiesDialog::populateDeviceInformation() {
 		if (m_device->type() == TDEGenericDeviceType::Battery) {
 			TDEBatteryDevice* bdevice = static_cast<TDEBatteryDevice*>(m_device);
 
-			base->labelCurrentBatteryEnergy->setText((bdevice->energy()<0)?i18n("<unknown>"):TQString("%1 Wh").arg(bdevice->energy()));
-			base->labelMaximumBatteryEnergy->setText((bdevice->maximumEnergy()<0)?i18n("<unknown>"):TQString("%1 Wh").arg(bdevice->maximumEnergy()));
-			base->labelMaximumBatteryDesignEnergy->setText((bdevice->maximumDesignEnergy()<0)?i18n("<unknown>"):TQString("%1 Wh").arg(bdevice->maximumDesignEnergy()));
+			base->labelCurrentBatteryEnergy->setText((bdevice->energy()<0)?i18n("<unknown>"):TQString("%1 Ah").arg(bdevice->energy()));
+			base->labelMaximumBatteryEnergy->setText((bdevice->maximumEnergy()<0)?i18n("<unknown>"):TQString("%1 Ah").arg(bdevice->maximumEnergy()));
+			base->labelMaximumBatteryDesignEnergy->setText((bdevice->maximumDesignEnergy()<0)?i18n("<unknown>"):TQString("%1 Ah").arg(bdevice->maximumDesignEnergy()));
 			base->labelMinimumBatteryVoltage->setText((bdevice->minimumVoltage()<0)?i18n("<unknown>"):TQString("%1 V").arg(bdevice->minimumVoltage()));
 			base->labelCurrentBatteryVoltage->setText((bdevice->voltage()<0)?i18n("<unknown>"):TQString("%1 V").arg(bdevice->voltage()));
-			base->labelCurrentBatteryDischargeRate->setText((bdevice->dischargeRate()<0)?i18n("<unknown>"):TQString("%1 Wh").arg(bdevice->dischargeRate()));
+			base->labelCurrentBatteryDischargeRate->setText((bdevice->dischargeRate()<0)?i18n("<unknown>"):TQString("%1 A").arg(bdevice->dischargeRate()));
 			TQString batteryStatusString = i18n("Unknown");
 			TDEBatteryStatus::TDEBatteryStatus batteryStatus = bdevice->status();
 			if (batteryStatus == TDEBatteryStatus::Charging) {
diff --git a/kcontrol/info/memory_tru64.cpp b/kcontrol/info/memory_tru64.cpp
index 667ffbcc..c3cbb2fa 100644
--- a/kcontrol/info/memory_tru64.cpp
+++ b/kcontrol/info/memory_tru64.cpp
@@ -30,7 +30,7 @@ extern "C" void vm_statistics(task_t, vm_statistics_data_t*);
 void KMemoryWidget::update()
 {
   int pageshift;          /* log base 2 of the pagesize */
-  register int pagesize;
+  int pagesize;
   vm_statistics_data_t vmstats;
   int swap_pages=0,swap_free=0,i;
   struct tbl_swapinfo swbuf;
diff --git a/kcontrol/kicker/menutab.ui b/kcontrol/kicker/menutab.ui
index 2614a278..fa386800 100644
--- a/kcontrol/kicker/menutab.ui
+++ b/kcontrol/kicker/menutab.ui
@@ -425,7 +425,7 @@
 					<property name="name">
 					<cstring>unnamed</cstring>
 					</property>
-					<widget class="TQLayoutWidget" row="1" column="0">
+					<widget class="TQLayoutWidget" row="2" column="0">
 					<property name="name">
 						<cstring>Layout3</cstring>
 					</property>
@@ -480,7 +480,21 @@
 						<string>If this option is enabled, hidden files (i.e. files beginning with a dot) will be shown in the QuickBrowser menus.</string>
 					</property>
 					</widget>
-					<spacer row="0" column="1" rowspan="2" colspan="1">
+					<widget class="TQCheckBox" row="1" column="0">
+						<property name="name">
+							<cstring>kcfg_ShowOpenInTerminal</cstring>
+						</property>
+						<property name="text">
+							<string>Sho&amp;w open in terminal fi&amp;les</string>
+						</property>
+						<property name="checked">
+							<bool>true</bool>
+						</property>
+						<property name="whatsThis" stdset="0">
+							<string>If this option is enabled, an Open in Terminal entry will be shown in the QuickBrowser menus.</string>
+						</property>
+					</widget>
+					<spacer row="0" column="1" rowspan="3" colspan="1">
 						<property name="name">
 							<cstring>Spacer7</cstring>
 						</property>
@@ -523,10 +537,10 @@
 									<cstring>m_maxRecentDocumentsItemsLabel</cstring>
 								</property>
 								<property name="text">
-									<string>Ma&amp;ximum number of entries:</string>
+									<string>&amp;Maximum number of entries:</string>
 								</property>
 								<property name="buddy" stdset="0">
-									<cstring>kcfg_MaxEntries2</cstring>
+									<cstring>maxrecentdocs</cstring>
 								</property>
 								<property name="whatsThis" stdset="0">
 									<string>This sets the maximum number of recently accessed documents stored for fast retrieval.</string>
@@ -723,6 +737,7 @@
 		<tabstop>m_editKMenuButton</tabstop>
 		<tabstop>m_subMenus</tabstop>
 		<tabstop>kcfg_ShowHiddenFiles</tabstop>
+		<tabstop>kcfg_ShowOpenInTerminal</tabstop>
 		<tabstop>kcfg_MaxEntries2</tabstop>
 		<tabstop>kcfg_RecentVsOften</tabstop>
 		<tabstop>m_showFrequent</tabstop>
diff --git a/kcontrol/konq/rootopts.cpp b/kcontrol/konq/rootopts.cpp
index 6677bc80..5da14f2f 100644
--- a/kcontrol/konq/rootopts.cpp
+++ b/kcontrol/konq/rootopts.cpp
@@ -18,6 +18,7 @@
 #include <tqcombobox.h>
 #include <tqlabel.h>
 #include <tqlayout.h>
+#include <tqtimer.h>
 #include <tqvgroupbox.h>
 #include <tqwhatsthis.h>
 
@@ -188,6 +189,9 @@ DesktopPathConfig::DesktopPathConfig(TQWidget *parent, const char * )
   // -- Bottom --
   Q_ASSERT( row == RO_LASTROW-1 ); // if it fails here, check the row++ and RO_LASTROW above
 
+  loadTmr = new TQTimer(this);
+  connect(loadTmr, TQT_SIGNAL(timeout()), this, TQT_SLOT(loadTimerDone()));
+
   load();
 }
 
@@ -204,18 +208,34 @@ void DesktopPathConfig::load( bool useDefaults )
     config.setGroup("Paths");
     urAutostart->setURL( config.readPathEntry( "Autostart" , TDEGlobalSettings::autostartPath() ));
 
-    TDEConfig xdguserconfig( TQDir::homeDirPath()+"/.config/user-dirs.dirs" );
-
-    urDesktop->setURL( xdguserconfig.readPathEntry( "XDG_DESKTOP_DIR" , TQDir::homeDirPath() + "/Desktop" ).remove(  "\"" ));
-    urDocument->setURL( xdguserconfig.readPathEntry( "XDG_DOCUMENTS_DIR", TQDir::homeDirPath() + "/Documents").remove(  "\"" ));
-    urDownload->setURL( xdguserconfig.readPathEntry( "XDG_DOWNLOAD_DIR" , TQDir::homeDirPath() + "/Downloads" ).remove(  "\"" ));
-    urMusic->setURL( xdguserconfig.readPathEntry( "XDG_MUSIC_DIR" , TQDir::homeDirPath() + "/Music" ).remove(  "\"" ));
-    urPictures->setURL( xdguserconfig.readPathEntry( "XDG_PICTURES_DIR" , TQDir::homeDirPath() + "/Pictures" ).remove(  "\"" ));
-    urPublicShare->setURL( xdguserconfig.readPathEntry( "XDG_PUBLICSHARE_DIR" , TQDir::homeDirPath() + "/Public" ).remove(  "\"" ));
-    urTemplates->setURL( xdguserconfig.readPathEntry( "XDG_TEMPLATES_DIR" , TQDir::homeDirPath() + "/Templates" ).remove(  "\"" ));
-    urVideos->setURL( xdguserconfig.readPathEntry( "XDG_VIDEOS_DIR" , TQDir::homeDirPath() + "/Videos" ).remove(  "\"" ));
+    TDEConfig xdguserconfig(TQDir::homeDirPath() + "/.config/user-dirs.dirs");
+
+    urDesktop->setURL(xdguserconfig.readPathEntry("XDG_DESKTOP_DIR", TDEGlobalSettings::desktopPath()).remove("\""));
+    urDocument->setURL(xdguserconfig.readPathEntry("XDG_DOCUMENTS_DIR", TDEGlobalSettings::documentPath()).remove("\""));
+    urDownload->setURL(xdguserconfig.readPathEntry("XDG_DOWNLOAD_DIR", TDEGlobalSettings::downloadPath()).remove("\""));
+    urMusic->setURL(xdguserconfig.readPathEntry("XDG_MUSIC_DIR", TDEGlobalSettings::musicPath()).remove("\""));
+    urPictures->setURL(xdguserconfig.readPathEntry("XDG_PICTURES_DIR", TDEGlobalSettings::picturesPath()).remove("\""));
+    urPublicShare->setURL(xdguserconfig.readPathEntry("XDG_PUBLICSHARE_DIR", TDEGlobalSettings::publicSharePath()).remove("\""));
+    urTemplates->setURL(xdguserconfig.readPathEntry("XDG_TEMPLATES_DIR", TDEGlobalSettings::templatesPath()).remove("\""));
+    urVideos->setURL(xdguserconfig.readPathEntry("XDG_VIDEOS_DIR", TDEGlobalSettings::videosPath()).remove("\""));
+
+    emit changed(useDefaults);
+
+		// If any of the folder does not exists, enable the Apply button so that the folders can be created
+		if (!TQDir(urDesktop->url()).exists() || !TQDir(urDocument->url()).exists() ||
+		    !TQDir(urDownload->url()).exists() || !TQDir(urMusic->url()).exists() ||
+		    !TQDir(urPictures->url()).exists() || !TQDir(urPublicShare->url()).exists() ||
+		    !TQDir(urTemplates->url()).exists() || !TQDir(urVideos->url()).exists() ||
+		    !TQDir(urAutostart->url()).exists())
+		{
+		    // Need to delay emitting the signal to give some time to the module to be added to the kcontrol GUI
+        loadTmr->start(1000, true);
+		}
+}
 
-    emit changed( useDefaults );
+void DesktopPathConfig::loadTimerDone()
+{
+    emit changed(true);
 }
 
 void DesktopPathConfig::defaults()
@@ -232,52 +252,52 @@ void DesktopPathConfig::save()
     bool pathChanged = false;
     bool autostartMoved = false;
 
-    KURL desktopURL;
-    desktopURL.setPath( TDEGlobalSettings::desktopPath() );
-    KURL newDesktopURL;
-    newDesktopURL.setPath(urDesktop->url());
-
     KURL autostartURL;
-    autostartURL.setPath( TDEGlobalSettings::autostartPath() );
+    autostartURL.setPath(TDEGlobalSettings::autostartPath());
     KURL newAutostartURL;
     newAutostartURL.setPath(urAutostart->url());
 
+    KURL desktopURL;
+    desktopURL.setPath(TDEGlobalSettings::desktopPath());
+    KURL newDesktopURL;
+    newDesktopURL.setPath(urDesktop->url());
+
     KURL documentURL;
-    documentURL.setPath( TDEGlobalSettings::documentPath() );
+    documentURL.setPath(TDEGlobalSettings::documentPath());
     KURL newDocumentURL;
     newDocumentURL.setPath(urDocument->url());
 
     KURL downloadURL;
-//     downloadURL.setPath( TDEGlobalSettings::downloadPath() );
+    downloadURL.setPath(TDEGlobalSettings::downloadPath());
     KURL newDownloadURL;
     newDownloadURL.setPath(urDownload->url());
 
     KURL musicURL;
-//     musicURL.setPath( TDEGlobalSettings::musicPath() );
+    musicURL.setPath(TDEGlobalSettings::musicPath());
     KURL newMusicURL;
     newMusicURL.setPath(urMusic->url());
 
     KURL picturesURL;
-//     picturesURL.setPath( TDEGlobalSettings::picturesPath() );
+    picturesURL.setPath(TDEGlobalSettings::picturesPath());
     KURL newPicturesURL;
     newPicturesURL.setPath(urPictures->url());
 
     KURL publicShareURL;
-//     publicShareURL.setPath( TDEGlobalSettings::publicSharePath() );
+    publicShareURL.setPath(TDEGlobalSettings::publicSharePath());
     KURL newPublicShareURL;
     newPublicShareURL.setPath(urPublicShare->url());
 
     KURL templatesURL;
-//     templatesURL.setPath( TDEGlobalSettings::templatesPath() );
+    templatesURL.setPath(TDEGlobalSettings::templatesPath());
     KURL newTemplatesURL;
     newTemplatesURL.setPath(urTemplates->url());
 
     KURL videosURL;
-//     videosURL.setPath( TDEGlobalSettings::videosPath() );
+    videosURL.setPath(TDEGlobalSettings::videosPath());
     KURL newVideosURL;
     newVideosURL.setPath(urVideos->url());
 
-    if ( !newDesktopURL.equals( desktopURL, true ) )
+    if (!newDesktopURL.equals(desktopURL, true))
     {
         // Test which other paths were inside this one (as it is by default)
         // and for each, test where it should go.
@@ -319,8 +339,12 @@ void DesktopPathConfig::save()
             pathChanged = true;
         }
     }
+    if (!xdgconfig->hasKey("XDG_DESKTOP_DIR"))
+    {
+        xdgconfig->writePathEntry("XDG_DESKTOP_DIR", '"'+ urDesktop->url() + '"', true, false, false, false );
+    }
 
-    if ( !newAutostartURL.equals( autostartURL, true ) )
+    if (!newAutostartURL.equals(autostartURL, true))
     {
         if (!autostartMoved)
             autostartMoved = moveDir( KURL( TDEGlobalSettings::autostartPath() ), KURL( urAutostart->url() ), i18n("Autostart") );
@@ -331,7 +355,7 @@ void DesktopPathConfig::save()
         }
     }
 
-    if ( !newDocumentURL.equals( documentURL, true ) )
+    if (!newDocumentURL.equals(documentURL, true) || !TQDir(urDocument->url()).exists())
     {
         bool pathOk = true;
         TQString path = urDocument->url();
@@ -352,7 +376,7 @@ void DesktopPathConfig::save()
         }
     }
 
-    if ( !newDownloadURL.equals( downloadURL, true ) )
+    if (!newDownloadURL.equals(downloadURL, true) || !TQDir(urDownload->url()).exists())
     {
         bool pathOk = true;
         TQString path = urDownload->url();
@@ -373,7 +397,7 @@ void DesktopPathConfig::save()
         }
     }
 
-    if ( !newMusicURL.equals( musicURL, true ) )
+    if (!newMusicURL.equals(musicURL, true) || !TQDir(urMusic->url()).exists())
     {
         bool pathOk = true;
         TQString path = urMusic->url();
@@ -394,7 +418,7 @@ void DesktopPathConfig::save()
         }
     }
 
-    if ( !newPicturesURL.equals( picturesURL, true ) )
+    if (!newPicturesURL.equals(picturesURL, true) || !TQDir(urPictures->url()).exists())
     {
         bool pathOk = true;
         TQString path = urPictures->url();
@@ -415,7 +439,7 @@ void DesktopPathConfig::save()
         }
     }
 
-    if ( !newPublicShareURL.equals( publicShareURL, true ) )
+    if (!newPublicShareURL.equals(publicShareURL, true) || !TQDir(urPublicShare->url()).exists())
     {
         bool pathOk = true;
         TQString path = urPublicShare->url();
@@ -436,7 +460,7 @@ void DesktopPathConfig::save()
         }
     }
 
-    if ( !newTemplatesURL.equals( templatesURL, true ) )
+    if (!newTemplatesURL.equals(templatesURL, true) || !TQDir(urTemplates->url()).exists())
     {
         bool pathOk = true;
         TQString path = urTemplates->url();
@@ -457,7 +481,7 @@ void DesktopPathConfig::save()
         }
     }
 
-    if ( !newVideosURL.equals( videosURL, true ) )
+    if (!newVideosURL.equals(videosURL, true) || !TQDir(urVideos->url()).exists())
     {
         bool pathOk = true;
         TQString path = urVideos->url();
diff --git a/kcontrol/konq/rootopts.h b/kcontrol/konq/rootopts.h
index 9343e07c..1f38faab 100644
--- a/kcontrol/konq/rootopts.h
+++ b/kcontrol/konq/rootopts.h
@@ -44,7 +44,8 @@ public:
         virtual void defaults();
 
 private slots:
-    void slotEntries( TDEIO::Job * job, const TDEIO::UDSEntryList& list);
+    void slotEntries(TDEIO::Job * job, const TDEIO::UDSEntryList& list);
+    void loadTimerDone();
 
 private:
         // Desktop Paths
@@ -63,6 +64,8 @@ private:
         KURL m_copyToDest; // used when the destination directory already exists
         KURL m_copyFromSrc;
 
+        TQTimer *loadTmr;
+
 private slots:
         void slotResult( TDEIO::Job * job );
 };
diff --git a/kcontrol/konqhtml/tdehtml_fonts.desktop b/kcontrol/konqhtml/tdehtml_fonts.desktop
index 21e3be97..37fd3749 100644
--- a/kcontrol/konqhtml/tdehtml_fonts.desktop
+++ b/kcontrol/konqhtml/tdehtml_fonts.desktop
@@ -99,7 +99,7 @@ Comment[cs]=Nastavení písem pro webové stránky
 Comment[csb]=Kònfigùracëjô fòntów na internetowëch starnach
 Comment[cy]=Ffurfweddu'r ffontiau sy'n cael eu defnyddio ar dudalennau gwe
 Comment[da]=Indstil de skrifttyper der bruges på netsider
-Comment[de]=Schriften für die Darstellung von Webseiten festlegen
+Comment[de]=Schriften für die Darstellung von Internetseiten festlegen
 Comment[el]=Ρυθμίστε τις γραμματοσειρές που χρησιμοποιούνται στις ιστοσελίδες
 Comment[eo]=Agordas la tiparojn kiuj estas uzataj sur TTT-paĝoj
 Comment[es]=Configuración de los tipos de letra usados en las páginas web
diff --git a/kcontrol/krdb/ad/krdb b/kcontrol/krdb/ad/krdb
index 96ee9fc9..0affea74 100755
--- a/kcontrol/krdb/ad/krdb
+++ b/kcontrol/krdb/ad/krdb
@@ -1,4 +1,4 @@
 #! /bin/sh
 
-kcminit style
+exec kcminit style
 
diff --git a/kcontrol/tdm/tdm-appear.cpp b/kcontrol/tdm/tdm-appear.cpp
index c248cff5..8e49087d 100644
--- a/kcontrol/tdm/tdm-appear.cpp
+++ b/kcontrol/tdm/tdm-appear.cpp
@@ -242,7 +242,6 @@ TDMAppearanceWidget::TDMAppearanceWidget(TQWidget *parent, const char *name)
   TQWhatsThis::add( label, wtstr );
   TQWhatsThis::add( langcombo, wtstr );
 
-
   // The SAK group box
   group = new TQGroupBox(0, Qt::Vertical, i18n("Secure Attention Key"), this);
   vbox->addWidget(group);
@@ -262,9 +261,18 @@ TDMAppearanceWidget::TDMAppearanceWidget(TQWidget *parent, const char *name)
   wtstr = i18n("Here you can enable or disable the Secure Attention Key [SAK] anti-spoofing measure.");
   TQWhatsThis::add( sakbox, wtstr );
 
+  // Keyboard group box
+  group = new TQGroupBox(0, Qt::Vertical, i18n("Keyboard"), this);
+  vbox->addWidget(group);
 
-  vbox->addStretch(1);
+  kbdledbox = new TQCheckBox(i18n("Sync keyboard led status"), group);
+  connect(kbdledbox, TQT_SIGNAL(toggled(bool)), TQT_SLOT(changed()));
+  TQGridLayout *hbox3 = new TQGridLayout(group->layout(), 2, 2, KDialog::spacingHint());
+  hbox3->setColStretch(1, 1);
+  hbox3->addWidget(kbdledbox, 1, 0);
+  TQWhatsThis::add(kbdledbox, i18n("Enable or disable the use of tdekbdledsync to sync keyboard LED status."));
 
+  vbox->addStretch(1);
 }
 
 void TDMAppearanceWidget::makeReadOnly()
@@ -284,6 +292,7 @@ void TDMAppearanceWidget::makeReadOnly()
     echocombo->setEnabled(false);
     langcombo->setEnabled(false);
     sakbox->setEnabled(false);
+    kbdledbox->setEnabled(false);
 }
 
 void TDMAppearanceWidget::loadLanguageList(KLanguageButton *combo)
@@ -497,6 +506,9 @@ void TDMAppearanceWidget::save()
       kill(tsakpid, SIGTERM);
     }
   }
+
+  config->setGroup("X-:*-Greeter");
+  config->writeEntry("SyncKbdLED", kbdledbox->isChecked());
 }
 
 
@@ -560,6 +572,9 @@ void TDMAppearanceWidget::load()
   else {
     sakbox->setChecked(false);
   }
+
+  config->setGroup("X-:*-Greeter");
+  kbdledbox->setChecked(config->readBoolEntry("SyncKbdLED", true));
 }
 
 
diff --git a/kcontrol/tdm/tdm-appear.h b/kcontrol/tdm/tdm-appear.h
index 8e0acc93..69c2b241 100644
--- a/kcontrol/tdm/tdm-appear.h
+++ b/kcontrol/tdm/tdm-appear.h
@@ -92,6 +92,7 @@ private:
 	KLanguageButton *langcombo;
 	TQCheckBox    *sakbox;
 	TQLabel    *sakwarning;
+	TQCheckBox    *kbdledbox;
 
 };
 
diff --git a/kdesktop/CMakeLists.txt b/kdesktop/CMakeLists.txt
index c8fdabf3..d3f70ce9 100644
--- a/kdesktop/CMakeLists.txt
+++ b/kdesktop/CMakeLists.txt
@@ -69,15 +69,6 @@ tde_add_executable( kcheckrunning
 )
 
 
-##### kxdglauncher (executable) #################
-
-tde_add_executable( kxdglauncher
-  SOURCES kxdglauncher.cpp
-  LINK tdeutils-shared
-  DESTINATION ${BIN_INSTALL_DIR}
-)
-
-
 ##### kdesktop (tdeinit) ########################
 
 set( target kdesktop )
diff --git a/kdesktop/Makefile.am b/kdesktop/Makefile.am
index 539db39f..bef2d388 100644
--- a/kdesktop/Makefile.am
+++ b/kdesktop/Makefile.am
@@ -8,7 +8,7 @@ SUBDIRS = . lock pics patterns programs init kwebdesktop
 
 ####### Files
 
-bin_PROGRAMS = kcheckrunning kxdglauncher
+bin_PROGRAMS = kcheckrunning
 lib_LTLIBRARIES =
 tdeinit_LTLIBRARIES = kdesktop.la
 noinst_LTLIBRARIES = libkdesktopsettings.la
@@ -31,16 +31,12 @@ include_HEADERS = KDesktopIface.h KScreensaverIface.h KBackgroundIface.h
 noinst_HEADERS = desktop.h bgmanager.h krootwm.h \
 	xautolock.h lockeng.h init.h minicli.h \
 	pixmapserver.h startupid.h xautolock_c.h \
-	kdesktopapp.h kxdglauncher.h
+	kdesktopapp.h
 
 kcheckrunning_SOURCES = kcheckrunning.cpp
 kcheckrunning_LDFLAGS = $(all_libraries)
 kcheckrunning_LDADD = $(LIB_X11) $(LIB_QT)
 
-kxdglauncher_SOURCES = kxdglauncher.cpp
-kxdglauncher_LDFLAGS = $(all_libraries)
-kxdglauncher_LDADD = $(LIB_TDEUTILS)
-
 METASOURCES = AUTO
 
 ####### Build rules
diff --git a/kdesktop/init/My_Documents b/kdesktop/init/My_Documents
index aca6c9c7..c57b397a 100644
--- a/kdesktop/init/My_Documents
+++ b/kdesktop/init/My_Documents
@@ -67,7 +67,7 @@ Comment[it]=Contiene i documenti personali
 Comment[pl]=Zawiera dokumenty osobiste
 Comment[ru]=Содержание личных документов
 
-URL=$( kxdglauncher --getpath --xdgname DOCUMENTS )
+URL=$XDG_DOCUMENTS_DIR
 Type=Link
 StartupNotify=true
 Terminal=false
diff --git a/kdesktop/kdesktop.desktop.cmake b/kdesktop/kdesktop.desktop.cmake
index 03d65ced..e66ed3bf 100644
--- a/kdesktop/kdesktop.desktop.cmake
+++ b/kdesktop/kdesktop.desktop.cmake
@@ -1,6 +1,12 @@
 [Desktop Entry]
 Exec=@TDE_BIN_DIR@/kdesktop
 X-DCOP-ServiceType=wait
+X-TDE-autostart-after=mediamanager
+Type=Service
+X-TDE-StartupNotify=false
+OnlyShowIn=TDE;
+X-TDE-autostart-phase=0
+
 Name=TDE Desktop
 Name[af]=TDE Werkskerm
 Name[ar]=سطح المكتب TDE
@@ -79,7 +85,3 @@ Name[wa]=Sicribanne TDE
 Name[zh_CN]=TDE 桌面
 Name[zh_TW]=TDE 桌面
 Name[zu]=I-Desktop ye-TDE
-Type=Service
-X-TDE-StartupNotify=false
-OnlyShowIn=TDE;
-X-TDE-autostart-phase=0
diff --git a/kdesktop/kdesktop.kcfg b/kdesktop/kdesktop.kcfg
index 8086ad8f..53a1cc78 100644
--- a/kdesktop/kdesktop.kcfg
+++ b/kdesktop/kdesktop.kcfg
@@ -69,6 +69,11 @@
       <!-- krootwm.cc:496 -->
       <!--     config->writeEntry( "SortDirectoriesFirst", b ); -->
     </entry>
+		<entry key="TerminalApplication" type="Path">
+			<default>konsole</default>
+			<label>Terminal application</label>
+			<whatsthis>Defines which terminal application is used.</whatsthis>
+		</entry>
   </group>
   <group name="Mouse Buttons"> 
     <entry key="WheelSwitchesWorkspace" type="Bool">
@@ -83,11 +88,6 @@
       <!-- desktop.cc:397 -->
       <!--             (config->readEntry("WheelDirection", default_dir_string) == forward_string) ? Forward : Reverse; -->
     </entry>
-    <entry key="TerminalApplication" type="Path">
-      <default>konsole</default>
-      <label>Terminal application</label>
-      <whatsthis>Defines which terminal application is used.</whatsthis>
-    </entry>
     <entry key="Left" type="String">
       <default></default>
       <label>Left Mouse Button Action</label>
diff --git a/kdesktop/kdiconview.cc b/kdesktop/kdiconview.cc
index 39dcc4c2..86737ce3 100644
--- a/kdesktop/kdiconview.cc
+++ b/kdesktop/kdiconview.cc
@@ -851,7 +851,7 @@ bool KDIconView::deleteGlobalDesktopFiles()
 
         // Ignore these special files
         // Name			URL					Type		OnlyShowIn
-        // My Documents		kxdglauncher --xdgname DOCUMENTS	Application	TDE;
+        // My Documents		XDG_DOCUMENTS_DIR 	Application	TDE;
         // My Computer		media:/					Link		TDE;
         // My Network Places	remote:/				Link		TDE;
         // Printers		[exec] kjobviewer --all --show %i %m	Application	TDE;
diff --git a/kdesktop/krootwm.cc b/kdesktop/krootwm.cc
index c14d1326..9c68fc74 100644
--- a/kdesktop/krootwm.cc
+++ b/kdesktop/krootwm.cc
@@ -763,8 +763,8 @@ void KRootWm::slotOpenTerminal()
     TDEConfigGroupSaver gs(TDEGlobal::config(), "General");
     TQString terminal = TDEGlobal::config()->readPathEntry("TerminalApplication", "konsole");
 
-    *p << terminal << "--workdir=" + TDEGlobalSettings::desktopPath() + "/";
-
+    *p << terminal;
+    p->setWorkingDirectory(TDEGlobalSettings::desktopPath());
     p->start(TDEProcess::DontCare);
 
     delete p;
diff --git a/kdesktop/kxdglauncher.cpp b/kdesktop/kxdglauncher.cpp
deleted file mode 100644
index 9d689d95..00000000
--- a/kdesktop/kxdglauncher.cpp
+++ /dev/null
@@ -1,188 +0,0 @@
-/* This file is part of the KDE project
-   Copyright (C) 2010 Timothy Pearson <kb9vqf@pearsoncomputing.net>
-
-   This library is free software; you can redistribute it and/or
-   modify it under the terms of the GNU Library General Public
-   License as published by the Free Software Foundation; either
-   version 2 of the License, or (at your option) any later version.
-
-   This library is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-   Library General Public License for more details.
-
-   You should have received a copy of the GNU Library General Public License
-   along with this library; see the file COPYING.LIB.  If not, write to
-   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.
-*/
-
-#include <tqfile.h>
-#include <tqdir.h>
-#include <tqtimer.h>
-#include <tqstring.h>
-#include <tqtextcodec.h>
-
-#include <krun.h>
-#include <tdefile.h>
-#include <tdelocale.h>
-#include <tdeapplication.h>
-#include <tdecmdlineargs.h>
-#include <tdeglobalsettings.h>
-#include <kinputdialog.h>
-#include <tdemessagebox.h>
-#include <tdeconfig.h>
-#include <kurlrequester.h>
-#include <kurlrequesterdlg.h>
-
-#include <stdlib.h>
-
-#include "kxdglauncher.h"
-
-// helper function for reading xdg user dirs: it is required for obvious reasons
-void readXdgUserDirs(TQString *desktop, TQString *documents)
-{
-	TQFile f( TQDir::homeDirPath() + "/.config/user-dirs.dirs" );
-
-	if (!f.open(IO_ReadOnly))
-		return;
-
-	// set the codec for the current locale
-	TQTextStream s(&f);
-	s.setCodec( TQTextCodec::codecForLocale() );
-
-	TQString line = s.readLine();
-	while (!line.isNull())
-	{
-		if (line.startsWith("XDG_DESKTOP_DIR=")) {
-			*desktop = TQString(line.remove("XDG_DESKTOP_DIR=").remove("\"")).replace("$HOME", TQDir::homeDirPath());
-		}
-		else if (line.startsWith("XDG_DOCUMENTS_DIR=")) {
-			*documents = TQString(line.remove("XDG_DOCUMENTS_DIR=").remove("\"")).replace("$HOME", TQDir::homeDirPath());
-		}
-
-		line = s.readLine();
-	}
-}
-
-TQString getDocumentPath()
-{
-	TQString s_desktopPath;
-	TQString s_documentPath;
-
-	readXdgUserDirs(&s_desktopPath, &s_documentPath);
-
-	if (s_documentPath.isEmpty() == true) {
-#ifdef Q_WS_WIN
-	s_documentPath = getWin32ShellFoldersPath("Personal");
-#else
-	s_documentPath = TQDir::homeDirPath() + "/Documents/";
-#endif
-	}
-	s_documentPath = TQDir::cleanDirPath( s_documentPath );
-	if ( !s_documentPath.endsWith("/"))
-	s_documentPath.append('/');
-
-	return s_documentPath;
-}
-
-static TDECmdLineOptions options[] =
-{
-	{ "xdgname <argument>", I18N_NOOP("XDG variable name to open"), 0 },
-        { "getpath",		I18N_NOOP("Do not launch Konqueror; instead print path to directory if it exists)"), 0 },
-	TDECmdLineLastOption
-};
-
-int main( int argc, char **argv)
-{
-	TDECmdLineArgs::init( argc, argv, "kxdglauncher", I18N_NOOP("TDE XDG File Browser Launcher and Prompter"), I18N_NOOP("Prompts if directory does not exist, otherwise launches"), "1.0" );
-	TDECmdLineArgs::addCmdLineOptions( options );
-	TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
-
-	TDEApplication app;
-	app.disableSessionManagement();
-
-	if (args->isSet( "xdgname" ) == true) {
-		TQString desiredFolder = args->getOption("xdgname");
-		if (desiredFolder == "DOCUMENTS") {
-			TQDir myqdir;
-			if (myqdir.exists(getDocumentPath(), TRUE) == true) {
-				if (args->isSet( "getpath" ) == true) {
-					printf("%s\n", (const char *)getDocumentPath().local8Bit());
-					return 0;
-				}
-				else {
-					KRun * run = new KRun( KURL(getDocumentPath()), 0, false, false );
-					TQObject::connect( run, TQT_SIGNAL( finished() ), &app, TQT_SLOT( quit() ));
-					TQObject::connect( run, TQT_SIGNAL( error() ), &app, TQT_SLOT( quit() ));
-					app.exec();
-					return 0;
-				}
-			}
-			else {
-				KURLRequesterDlg newDirectoryRequester(getDocumentPath(), i18n("Please confirm your Documents directory location<br>Upon confimation a new directory will be created"), 0, NULL, true);
-				newDirectoryRequester.setCaption(i18n("Create Documents directory"));
-				newDirectoryRequester.urlRequester()->setMode(KFile::Directory);
-				if (newDirectoryRequester.exec() != TQDialog::Accepted) {
-					return 1;
-				}
-				else {
-					TQString newDirectory = newDirectoryRequester.urlRequester()->url();
-					if (newDirectory == TQString::null) {
-						return 1;
-					}
-					else {
-						if (newDirectory.length() < 4096) {
-							bool directoryOk = false;
-							if (myqdir.exists(newDirectory, TRUE) == false) {
-								if (myqdir.mkdir(newDirectory, TRUE) == true) {
-									directoryOk = TRUE;
-								}
-							}
-							else {
-								directoryOk = TRUE;
-							}
-							if (directoryOk == true) {
-								TQString xdgModifiedDirectory = newDirectory;
-								xdgModifiedDirectory = xdgModifiedDirectory.replace(TQDir::homeDirPath(), "$HOME");
-								while (xdgModifiedDirectory.endsWith("/")) {
-									xdgModifiedDirectory.truncate(xdgModifiedDirectory.length()-1);
-								}
-								TDEConfig config(TQDir::homeDirPath() + "/.config/user-dirs.dirs", false, false);
-								config.writeEntry("XDG_DOCUMENTS_DIR", TQString("\"") + xdgModifiedDirectory + TQString("\""), true);
-								config.sync();
-								if (args->isSet( "getpath" ) == true) {
-									printf("%s\n", (const char *)getDocumentPath().local8Bit());
-									return 0;
-								}
-								else {
-									KRun * run = new KRun( getDocumentPath(), 0, false, false );
-									TQObject::connect( run, TQT_SIGNAL( finished() ), &app, TQT_SLOT( quit() ));
-									TQObject::connect( run, TQT_SIGNAL( error() ), &app, TQT_SLOT( quit() ));
-									app.exec();
-								}
-								return 0;
-							}
-							else {
-								KMessageBox::error(0, i18n("Unable to create directory ") + TQString("\"") + newDirectory + TQString("\"\n") + i18n("Please check folder permissions and try again"), i18n("Unable to create directory"));
-								return 1;
-							}
-						}
-						else {
-							KMessageBox::error(0, i18n("Unable to create the directory ") + newDirectory + TQString("\n") + i18n("Directory path cannot be longer than 4096 characters"), i18n("Unable to create directory"));
-							return 1;
-						}
-					}
-				}
-			}
-		}
-		else {
-			printf("[kxdglauncher] XDG variable not recognized\n");
-			return 1;
-		}
-	}
-	else {
-		printf("[kxdglauncher] Please specify the desired XDG variable name with --xdgname\n");
-		return 1;
-	}
-}
diff --git a/kdesktop/minicli.cpp b/kdesktop/minicli.cpp
index afc28f3b..80387aca 100644
--- a/kdesktop/minicli.cpp
+++ b/kdesktop/minicli.cpp
@@ -385,10 +385,10 @@ void Minicli::keyPressEvent( TQKeyEvent* e )
   TQDialog::keyPressEvent( e );
 }
 
-TQString Minicli::terminalCommand (const TQString& cmd, const TQString& args)
+TQString Minicli::terminalCommand(const TQString& cmd, const TQString& args)
 {
   TQString terminal = KDesktopSettings::terminalApplication().stripWhiteSpace();
-  if (terminal.endsWith("konsole"))
+  if (terminal.startsWith("konsole"))
     terminal += " --noclose";
 
   if( args.isEmpty() )
diff --git a/khelpcenter/searchhandlers/CMakeLists.txt b/khelpcenter/searchhandlers/CMakeLists.txt
index 3d18a800..6c91e7a9 100644
--- a/khelpcenter/searchhandlers/CMakeLists.txt
+++ b/khelpcenter/searchhandlers/CMakeLists.txt
@@ -37,7 +37,7 @@ install( PROGRAMS
     ${CMAKE_CURRENT_BINARY_DIR}/khc_htdig.pl
     ${CMAKE_CURRENT_BINARY_DIR}/khc_htsearch.pl
     ${CMAKE_CURRENT_BINARY_DIR}/khc_docbookdig.pl
-    khc_beagle_search.pl khc_mansearch.pl  khc_beagle_index.pl
+    khc_mansearch.pl
   DESTINATION ${BIN_INSTALL_DIR} )
 
 install( FILES
diff --git a/khelpcenter/searchhandlers/Makefile.am b/khelpcenter/searchhandlers/Makefile.am
index f2ebd57f..65f4060b 100644
--- a/khelpcenter/searchhandlers/Makefile.am
+++ b/khelpcenter/searchhandlers/Makefile.am
@@ -3,7 +3,7 @@ searchhandlers_DATA = htdig.desktop man.desktop docbook.desktop
 searchhandlersdir = $(kde_datadir)/khelpcenter/searchhandlers
 
 kde_bin_SCRIPTS = khc_htdig.pl khc_htsearch.pl khc_mansearch.pl \
-  khc_docbookdig.pl khc_beagle_search.pl khc_beagle_index.pl
+  khc_docbookdig.pl
 
 htdigdata_DATA = htdig_long.html
 
diff --git a/khelpcenter/searchhandlers/khc_beagle_index.pl b/khelpcenter/searchhandlers/khc_beagle_index.pl
deleted file mode 100644
index aaec6360..00000000
--- a/khelpcenter/searchhandlers/khc_beagle_index.pl
+++ /dev/null
@@ -1,49 +0,0 @@
-#!/usr/bin/perl
-# vim:sw=4:et
-
-use warnings;
-
-sub getKDEDocDir() 
-{
-    my $prefix = `tde-config --prefix`;
-    chomp $prefix;
-
-    $prefix = "/opt/kde" if (not defined($prefix));
-    return "$prefix/share/doc";
-}
-
-sub addRoot() 
-{
-    my $kdedocdir = &getKDEDocDir;
-
-    open (IN, "-|") || exec "beagle-config", "indexing", "ListRoots";
-
-    my $kdedoc_found = 0;
-    while(<IN>) {
-        if (/^$kdedocdir/o) {
-            $kdedoc_found = 1;
-            last;
-        }
-    }
-    close(IN);
-
-    if (not $kdedoc_found) {
-        `beagle-config indexing AddRoot $kdedocdir`;
-        `beagle-config indexing AddRoot $kdedocdir-bundle`;
-    }
-}
-
-sub createExistsFile($$)
-{
-    my ($idir, $ident) = @_;
-
-    open(OUT, ">", "$idir/$idir");
-    close(OUT);
-}
-
-my $idir = $ARGV[0];
-my $ident = $ARGV[1];
-
-if (addRoot) {
-    createExistsFile($idir, $ident);
-}
diff --git a/khelpcenter/searchhandlers/khc_beagle_search.pl b/khelpcenter/searchhandlers/khc_beagle_search.pl
deleted file mode 100644
index d7a1f44b..00000000
--- a/khelpcenter/searchhandlers/khc_beagle_search.pl
+++ /dev/null
@@ -1,88 +0,0 @@
-#!/usr/bin/perl -w
-# vim:sw=4:et
-
-use warnings;
-use strict;
-use Getopt::Long;
-
-sub isBeagleRunning()
-{
-    open(IN, "-|") || exec "beagle-ping";
-    while(<IN>) {
-        if (/^Daemon version:/) {
-            close(IN);
-            return 1;
-        }
-    }
-    close(IN);
-    return 0;
-}
-
-sub formatHTML($$)
-{
-    my ($query, $hits) = @_;
-
-    print "<html>\n<body\n<ul>\n";
-
-    foreach my $hit(@$hits) {
-        print "<li>$hit</li>\n";
-    }
-    print "</ul>\n</body>\n</html>\n";
-}
-
-sub beagleQuery($$$)
-{
-    my ($words, $method, $maxnum) = @_;
-
-    my @hits = ();
-
-    open(IN, "-|") || exec "beagle-query", "--type", "DocbookEntry", "--type", "File", "--max-hits", $maxnum, @$words, "ext:docbook";
-    while(<IN>) {
-        chop;
-        next if (/^Debug:/);
-
-        my $uri = $_;
-        $uri = $1 if ($uri =~ /^file:\/\/(.*)$/);
-
-        print "uri: $uri\n";
-        my $helpLink = &makeHelpLink($uri);
-
-        push(@hits, $helpLink) if (!grep { /^$helpLink$/ } @hits);
-    }
-    close(IN);
-    return @hits;
-}
-
-sub makeHelpLink($)
-{
-    # Try to figure out the name of the application from the path to its index.docbook file
-
-    my ($path) = @_;
-    my @pathcomponents = split '/', $path;
-
-    my $appName = $pathcomponents[-2];
-    my $appName2 = $pathcomponents[-3];
-
-    if ($appName eq $appName2 or $appName2 eq "doc" 
-        or (-d "/usr/share/locale/$appName2")) {
-        return "<a href=\"help:/$appName\">$appName</a>";
-    }
-    return "<a href=\"help:/$appName2/$appName\">$appName ($appName2)</a>";
-}
-
-my $method = "and";
-my $maxnum = 100;
-
-GetOptions("method=s", \$method, "maxnum=i", \$maxnum);
-
-my @hits = ("The Beagle daemon is not running, search is not available");
-
-my @words = @ARGV;
-
-if (isBeagleRunning()) {
-    @hits = beagleQuery(\@words, $method, $maxnum);
-}
-
-@hits = ("There are no search results") if ($#hits < 0);
-
-formatHTML(\@words, \@hits);
diff --git a/khotkeys/data/trinity2b1.khotkeys b/khotkeys/data/trinity2b1.khotkeys
index 203f65fa..3113f818 100644
--- a/khotkeys/data/trinity2b1.khotkeys
+++ b/khotkeys/data/trinity2b1.khotkeys
@@ -1643,7 +1643,7 @@ Name[ca]=Va al lloc web del TDE
 Name[cs]=Přejít na stránky TDE
 Name[csb]=Biéj do starnë TDE
 Name[da]=Gå til TDE's hjemmeside
-Name[de]=TDE-Webseite anzeigen
+Name[de]=TDE-Internetseite anzeigen
 Name[el]=Μετάβαση στην ιστοσελίδα του TDE
 Name[eo]=Iri al TDE-retejo
 Name[es]=Ir a la página web de TDE
diff --git a/kicker/configure.in.in b/kicker/configure.in.in
index 4da44a4a..facaa892 100644
--- a/kicker/configure.in.in
+++ b/kicker/configure.in.in
@@ -35,44 +35,9 @@ fi
 
 if test -z "$GLIB_LIBADD"; then
         AC_MSG_RESULT(not installed)
-    DO_NOT_COMPILE="$DO_NOT_COMPILE kerry gmcop"
+    DO_NOT_COMPILE="$DO_NOT_COMPILE gmcop"
 fi
 
 AC_SUBST(GLIB_CFLAGS)
 AC_SUBST(GLIB_LIBADD)
 AC_SUBST(GLIB_LDFLAGS)
-
-dnl Check for libbeagle 0.2.0
-# LIBBEAGLE_CFLAGS:  cflags for compiling libbeagle dependant sources
-# LIBBEAGLE_LIBADD:  libbeagle libraries (-l options)
-# LIBBEAGLE_LDFLAGS: flags containing path to libbeagle libraries (-L options)
-
-LIBBEAGLE_PACKAGES="libbeagle-0.0"
-LIBBEAGLE_VERSION="0.2.4"
-AC_MSG_CHECKING(for libbeagle-0.2.4 (at least $LIBBEAGLE_VERSION))
-
-if $PKG_CONFIG --atleast-pkgconfig-version 0.15 ; then
-   if $PKG_CONFIG --atleast-version $LIBBEAGLE_VERSION $LIBBEAGLE_PACKAGES >/dev/null 2>&1 ; then
-       LIBBEAGLE_CFLAGS="`$PKG_CONFIG --cflags $LIBBEAGLE_PACKAGES`"
-       LIBBEAGLE_LIBADD="`$PKG_CONFIG --libs-only-l --libs-only-other $LIBBEAGLE_PACKAGES`"
-       LIBBEAGLE_LDFLAGS="`$PKG_CONFIG --libs-only-L $LIBBEAGLE_PACKAGES`"
-       AC_MSG_RESULT(yes)
-   fi
-else
-   if $PKG_CONFIG --atleast-version $LIBBEAGLE_VERSION $LIBBEAGLE_PACKAGES >/dev/null 2>&1 ; then
-       LIBBEAGLE_CFLAGS="`$PKG_CONFIG --cflags $LIBBEAGLE_PACKAGES`"
-       LIBBEAGLE_LIBADD="`$PKG_CONFIG --libs-only-l $LIBBEAGLE_PACKAGES`"
-       LIBBEAGLE_LDFLAGS="`$PKG_CONFIG --libs-only-L $LIBBEAGLE_PACKAGES`"
-       AC_MSG_RESULT(yes)
-       AC_MSG_WARN([you may need to run make LDFLAGS=-pthread to compile arts])
-   fi
-fi
-
-if test -z "$LIBBEAGLE_LIBADD"; then
-        AC_MSG_RESULT(not installed)
-    DO_NOT_COMPILE="$DO_NOT_COMPILE kerry gmcop"
-fi
-
-AC_SUBST(LIBBEAGLE_CFLAGS)
-AC_SUBST(LIBBEAGLE_LIBADD)
-AC_SUBST(LIBBEAGLE_LDFLAGS)
diff --git a/kicker/kicker/buttons/Makefile.am b/kicker/kicker/buttons/Makefile.am
index 1bdba20a..b0e934e0 100644
--- a/kicker/kicker/buttons/Makefile.am
+++ b/kicker/kicker/buttons/Makefile.am
@@ -1,5 +1,5 @@
 INCLUDES = -I$(srcdir)/../core -I$(srcdir)/../../libkicker -I../../libkicker \
-	-I../ui -I$(srcdir)/../ui -I$(top_srcdir)/libkonq $(all_includes) $(LIBBEAGLE_CFLAGS) $(GLIB_CFLAGS)
+	-I../ui -I$(srcdir)/../ui -I$(top_srcdir)/libkonq $(all_includes) $(GLIB_CFLAGS)
 
 noinst_LTLIBRARIES = libkicker_buttons.la
 
diff --git a/kicker/kicker/core/Makefile.am b/kicker/kicker/core/Makefile.am
index 6532157e..46fd39b4 100644
--- a/kicker/kicker/core/Makefile.am
+++ b/kicker/kicker/core/Makefile.am
@@ -1,6 +1,6 @@
 INCLUDES = -I$(srcdir)/../../libkicker -I../../libkicker \
 	 -I../ui -I$(srcdir)/../ui -I$(srcdir)/../buttons -I$(top_srcdir)/libkonq \
-	 $(all_includes) $(LIBBEAGLE_CFLAGS) $(GLIB_CFLAGS)
+	 $(all_includes) $(GLIB_CFLAGS)
 
 noinst_LTLIBRARIES = libkicker_core.la
 
diff --git a/kicker/kicker/plugins/Makefile.am b/kicker/kicker/plugins/Makefile.am
deleted file mode 100644
index 38a5b611..00000000
--- a/kicker/kicker/plugins/Makefile.am
+++ /dev/null
@@ -1,24 +0,0 @@
-INCLUDES    = -I$(top_srcdir)/interfaces $(all_includes) $(LIBBEAGLE_CFLAGS) $(GLIB_CFLAGS)
-METASOURCES = AUTO
-
-# Install this plugin in the KDE modules directory
-kde_module_LTLIBRARIES = kickoffsearch_beagle.la
-
-# Srcs for the plugin
-kickoffsearch_beagle_la_SOURCES = kickoff-beagle-plugin.cpp beaglesearch.cpp
-
-# Libs needed by the plugin
-kickoffsearch_beagle_la_LIBADD = $(LIB_TDEPARTS) ../interfaces/libkickoffsearch_interfaces.la \
-	$(LIBBEAGLE_LIBADD) $(GLIB_LIBADD)
-
-# LD flags for the plugin
-# -module says: this is a module, i.e. something you're going to dlopen
-# so e.g. it has no version number like a normal shared lib would have.
-kickoffsearch_beagle_la_LDFLAGS = -module $(KDE_PLUGIN) $(all_libraries)
-
-# Install the desktop file needed to detect the plugin
-kde_services_DATA = kickoffsearch_beagle.desktop
-
-# i18n translation messages
-messages: rc.cpp
-	$(XGETTEXT) *.cpp *.h -o $(podir)/kickoffsearch_beagle.pot
diff --git a/kicker/kicker/plugins/beaglesearch.cpp b/kicker/kicker/plugins/beaglesearch.cpp
deleted file mode 100644
index 9f86c8fb..00000000
--- a/kicker/kicker/plugins/beaglesearch.cpp
+++ /dev/null
@@ -1,362 +0,0 @@
-/*****************************************************************
-
-   Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com>
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either
-   version 2 of the License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING.  If not, write to
-   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.
-
-******************************************************************/
-
-#include "beaglesearch.h"
-
-#include <tqdatetime.h>
-#include <tqmutex.h>
-#include <tqstringlist.h>
-#include <tqapplication.h>
-#include <time.h>
-
-void beagle_init ()
-{
-    g_type_init ();
-}
-
-// ---------------- Hit ---------------------------
-
-Hit::Hit (BeagleHit *_hit) : processed (false)
-{
-    hit = beagle_hit_ref (_hit);
-}
-
-Hit::~Hit ()
-{
-    beagle_hit_unref (hit);
-    if (! processed)
-	return;
-    TQDictIterator<TQStringList> it (property_map);
-    for( ; it.current(); ++it )
-        ((TQStringList *)it.current())->clear ();
-
-}
-
-void Hit::processProperties ()
-{
-    processed = true;
-    GSList *prop_list = beagle_hit_get_all_properties (hit);
-    GSList *it;
-    property_map.setAutoDelete (true);
-    for (it = prop_list; it; it = it->next) {
-        BeagleProperty *property = (BeagleProperty *) it->data;
-        TQString key = TQString::fromUtf8 (beagle_property_get_key (property));
-        if (! property_map [key])
-            property_map.insert (key, new TQStringList ());
-        property_map [key]->append (TQString::fromUtf8 (beagle_property_get_value (property)));
-    }
-    g_slist_free (prop_list);
-}
-
-const TQString Hit::operator[] (TQString prop_name)
-{
-    if (! processed)
-	processProperties ();
-
-    TQStringList *prop_list = property_map [prop_name];
-    if (! prop_list)
-        return TQString::null;
-    if (prop_list->count () != 1)
-        return TQString::null;
-    return (TQString)prop_list->first ();
-}
-
-// ---------------- BeagleSearch ------------------
-
-BeagleSearchResult::BeagleSearchResult(int client_id)
-  : client_id (client_id), total (0)
-{
-    hitlist = new TQPtrList<Hit>;
-    hitlist->setAutoDelete (true);
-}
-
-
-BeagleSearchResult::~BeagleSearchResult()
-{
-    // everything is set to autodelete
-}
-
-void BeagleSearchResult::addHit(BeagleHit *_hit)
-{
-    Hit *hit = new Hit (_hit);
-    hitlist->prepend (hit);
-}
-
-const TQPtrList<Hit> *BeagleSearchResult::getHits () const
-{
-    return hitlist;
-}
-
-
-static int total_hits;
-
-static void print_feed_item_hit (BeagleHit *hit)
-{
-    const char *text;
-
-    if (beagle_hit_get_one_property (hit, "dc:title", &text))
-        g_print ("Blog: %s\n", text);
-}
-
-static void print_file_hit (BeagleHit *hit)
-{
-    g_print ("File: %s, (%s)\n", beagle_hit_get_uri (hit), beagle_hit_get_mime_type (hit));
-}
-
-static void print_other_hit (BeagleHit *hit)
-{
-    const char *text;
-
-    g_print ("%s (%s)", beagle_hit_get_uri (hit),
-             beagle_hit_get_source (hit));
-    if (beagle_hit_get_one_property (hit, "dc:title", &text))
-        g_print ("title = %s\n", text);
-}
-
-static void print_hit (BeagleHit *hit) 
-{
-    if (strcmp (beagle_hit_get_type (hit), "FeedItem") == 0) {
-        print_feed_item_hit (hit);
-    } 
-    else if (strcmp (beagle_hit_get_type (hit), "File") == 0) {
-        print_file_hit (hit);
-    } else {
-        print_other_hit (hit);
-    }
-}
-
-// ---------------- BeagleSearchClient ------------------
-
-void BeagleSearchClient::run ()
-{
-    kdDebug () << "Starting query ..." << endl;
-
-    TQTime query_timer;
-    query_timer.start ();
-    
-    g_signal_connect (query, "hits-added",
-                      G_CALLBACK (hitsAddedSlot),
-                      this);
-    g_signal_connect (query, "finished",
-                      G_CALLBACK (finishedSlot),
-                      this);
-    beagle_client_send_request_async (client,
-                                      BEAGLE_REQUEST (query),
-                                      NULL);
-    g_main_loop_run (main_loop);
-    kdDebug () << "Finished query ..." << endl;
-    
-    TQCustomEvent *ev;
-    if (collate_results) {
-	result->query_msec = query_timer.elapsed ();
-    
-	ev =  new TQCustomEvent (RESULTFOUND, result);
-        TQApplication::postEvent (object, ev);
-    }
-
-    ev =  new TQCustomEvent (KILLME, this);
-    TQApplication::postEvent (object, ev);
-
-}
-
-void BeagleSearchClient::stopClient ()
-{
-   if (finished ())
-       return; // duh!
-   kdDebug () << "Query thread " << id << " not yet finished ..." << endl;
-   // get ready for suicide
-   client_mutex->lock ();
-   kill_me = true;
-   g_signal_handlers_disconnect_by_func (
-           query, 
-           (void *)hitsAddedSlot,
-           this);
-   g_signal_handlers_disconnect_by_func (
-           query,
-           (void *)finishedSlot,
-           this);
-   g_main_loop_quit (main_loop);
-   client_mutex->unlock ();
-}
-
-void BeagleSearchClient::hitsAddedSlot (BeagleQuery *query,
-                                        BeagleHitsAddedResponse *response,
-                                        BeagleSearchClient *bsclient)
-{
-    GSList *hits, *l;
-    gint    i;
-    gint    nr_hits;
-
-    // check if we are supposed to be killed
-    bsclient->client_mutex->lock ();
-    if (bsclient->kill_me) {
-        kdDebug () << "Suicide time before processing" << endl;
-	bsclient->client_mutex->unlock ();
-	return;
-    }
-    bsclient->client_mutex->unlock ();
-
-    hits = beagle_hits_added_response_get_hits (response);
-
-    nr_hits = g_slist_length (hits);
-    total_hits += nr_hits;
-    g_print ("Found hits (%d) at %ld:\n", nr_hits, time (NULL));
-
-    BeagleSearchResult *search_result;
-    if (! bsclient->collate_results)
-        search_result = new BeagleSearchResult (bsclient->id);
-    else
-        search_result = bsclient->result;
-    search_result->total += nr_hits;
-
-    for (l = hits, i = 1; l; l = l->next, ++i) {
-        //g_print ("[%d] ", i);
-        //print_hit (BEAGLE_HIT (l->data));
-        //g_print ("\n");
-
-        search_result->addHit(BEAGLE_HIT (l->data));//hit);
-    }
-    g_print ("[%ld] hits adding finished \n", time (NULL));
-
-    // check if we are supposed to be killed
-    bsclient->client_mutex->lock ();
-    if (bsclient->kill_me) {
-        kdDebug () << "Suicide time before sending ..." << endl;
-	bsclient->client_mutex->unlock ();
-	if (! bsclient->collate_results)
-	    delete search_result;
-	return;
-    }
-    bsclient->client_mutex->unlock ();
-
-    // time to send back results, if user asked so
-    if (bsclient->collate_results)
-        return;
-    TQCustomEvent *ev =  new TQCustomEvent (RESULTFOUND, search_result);
-    g_print ("[%ld] event notified \n", time (NULL));
-    TQApplication::postEvent (bsclient->object, ev);
-}
-
-void BeagleSearchClient::finishedSlot (BeagleQuery *query,
-                                       BeagleFinishedResponse *response,
-                                       BeagleSearchClient *bsclient)
-{
-    // check if we are supposed to be killed
-    bsclient->client_mutex->lock ();
-    bool should_kill = bsclient->kill_me;
-    TQObject* receiver = bsclient->object;
-    bsclient->client_mutex->unlock ();
-
-    if (should_kill)
-	return;
-
-    g_main_loop_quit (bsclient->main_loop);
-
-    if (bsclient->collate_results)
-        return; // if we are collating, everything will be send from a central place
-    if (receiver) {
-        TQCustomEvent *ev =  new TQCustomEvent (SEARCHOVER, bsclient);
-        g_print ("[%ld] query finish notified \n", time (NULL));
-        TQApplication::postEvent (receiver, ev);
-    }
-}
-
-// ----------------- BeagleUtil -------------------
-
-BeagleQuery *
-BeagleUtil::createQueryFromString (TQString query_str,
-                                    TQStringList &sources_menu,
-                                    TQStringList &types_menu,
-				    int max_hits_per_source)
-{
-    BeagleQuery *beagle_query = beagle_query_new ();
-    beagle_query_set_max_hits (beagle_query, max_hits_per_source); // this is per source!
-
-    kdDebug () << "Creating query from \"" << query_str << "\"" << endl;
-    for ( TQStringList::Iterator it = sources_menu.begin(); it != sources_menu.end(); ++it )
-        beagle_query_add_source (beagle_query, g_strdup ((*it).utf8 ()));
-
-    for ( TQStringList::Iterator it = types_menu.begin(); it != types_menu.end(); ++it )
-        beagle_query_add_hit_type (beagle_query, g_strdup ((*it).utf8 ()));
-
-    TQStringList query_terms;
-    TQString start_date, end_date;
-    TQStringList words = TQStringList::split (' ', query_str, false);
-    for ( TQStringList::Iterator it = words.begin(); it != words.end(); ++it ) {
-        TQStringList key_value_pair = TQStringList::split ('=', *it, false);
-        if (key_value_pair.count () == 1)
-            query_terms += *it;
-        else if (key_value_pair.count () == 2) {
-            TQString key = key_value_pair [0].lower ();
-            TQString value = key_value_pair [1];
-            if (key == "mime")
-                beagle_query_add_mime_type (beagle_query, g_strdup (value.utf8 ()));
-            else if (key == "type")
-                beagle_query_add_hit_type (beagle_query, g_strdup (value.utf8 ()));
-            else if (key == "source")
-                beagle_query_add_source (beagle_query, g_strdup (value.utf8 ()));
-            else if (key == "start")
-                start_date = value;
-            else if (key == "end")
-                end_date = value;
-            else
-                query_terms += *it;
-        } else
-            query_terms += *it;
-    }
-
-    beagle_query_add_text (beagle_query, g_strdup (query_terms.join (" ").utf8 ()));
-    kdDebug () << "Adding query text:" << query_terms.join (" ").utf8 () << endl;
-
-    if (start_date.isNull () && end_date.isNull ())
-        return beagle_query;
-
-    //kdDebug () << "Handling dates ..." << endl;
-    BeagleQueryPartDate * date_part = beagle_query_part_date_new ();
-    if (! start_date.isNull ())
-        beagle_query_part_date_set_start_date (date_part, timestringToBeagleTimestamp (start_date));
-    if (! end_date.isNull ())
-        beagle_query_part_date_set_end_date (date_part, timestringToBeagleTimestamp (end_date));
-    beagle_query_add_part (beagle_query, BEAGLE_QUERY_PART (date_part));
-
-    return beagle_query;
-}
-
-// timestring format allowed YYYYmmDD
-BeagleTimestamp *
-BeagleUtil::timestringToBeagleTimestamp(TQString timestring)
-{
-    //kdDebug () << "datetime string:" << timestring << endl;
-    // FIXME: error check timestring format
-    if (timestring.isNull () || timestring.stripWhiteSpace () == "" || timestring.length() != 8 )
-        return beagle_timestamp_new_from_unix_time (TQDateTime::currentDateTime ().toTime_t ());
-    //TQDateTime dt = TQDateTime::fromString (timestring, Qt::ISODate);
-    struct tm tm_time;
-    time_t timet_time;
-    time (&timet_time);
-    localtime_r (&timet_time, &tm_time);
-    strptime (timestring.ascii(), "%Y%m%d", &tm_time);
-    tm_time.tm_sec = tm_time.tm_min = tm_time.tm_hour = 0;
-    //kdDebug() << asctime (&tm_time) << endl;
-    timet_time = mktime (&tm_time);
-    return beagle_timestamp_new_from_unix_time (timet_time);
-}
-
diff --git a/kicker/kicker/plugins/beaglesearch.h b/kicker/kicker/plugins/beaglesearch.h
deleted file mode 100644
index e192f6af..00000000
--- a/kicker/kicker/plugins/beaglesearch.h
+++ /dev/null
@@ -1,234 +0,0 @@
-/*****************************************************************
-
-   Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com>
-
-   This program is free software; you can redistribute it and/or
-   modify it under the terms of the GNU General Public
-   License as published by the Free Software Foundation; either
-   version 2 of the License, or (at your option) any later version.
-
-   This program is distributed in the hope that it will be useful,
-   but WITHOUT ANY WARRANTY; without even the implied warranty of
-   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    General Public License for more details.
-
-   You should have received a copy of the GNU General Public License
-   along with this program; see the file COPYING.  If not, write to
-   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-   Boston, MA 02110-1301, USA.
-
-******************************************************************/
-
-#ifndef BEAGLESEARCH_H
-#define BEAGLESEARCH_H
-
-#include <tqdict.h>
-#include <tqptrlist.h>
-#include <tqthread.h>
-#include <tqevent.h>
-#include <tqmutex.h>
-
-#include <kdebug.h>
-#include <kurl.h>
-
-extern "C" {
-#include <glib.h>
-#include <beagle/beagle.h>
-}
-
-// BeagleSearchClient sends 3 types of events
-// when results are to be sent as they arrive,
-//  - RESULTFOUND : when result is found
-//  - SEARCHOVER :  when search is over
-//  - KILLME : just before thread finishes - used to cleanup the thread object
-// when results are to be sent after receiving all of them
-//  - RESULTFOUND : when all results are obtained
-//  - KILLME : just before thread finishes - used to cleanup the thread object
-#define RESULTFOUND (TQEvent::Type)1001 /* TQEvent::User + 1 */
-#define SEARCHOVER  (TQEvent::Type)1002 /* TQEvent::User + 2 */
-#define KILLME      (TQEvent::Type)1003 /* TQEvent::User + 3 */
-
-class TQStringList;
-
-// IMPORTANT: Call this before any beagle calls
-void beagle_init ();
-
-class Hit {
-public:
-    Hit (BeagleHit *_hit);
-    ~Hit ();
-    
-    // convenience wrappers
-    // remember that the hit values are utf8 strings
-    const KURL getUri () const { return KURL (TQString::fromUtf8 (beagle_hit_get_uri (hit)));}
-    const TQString getType () const { return TQString::fromUtf8 (beagle_hit_get_type (hit));}
-    const TQString getMimeType () const { return TQString::fromUtf8 (beagle_hit_get_mime_type (hit));}
-    const TQString getSource () const { return TQString::fromUtf8 (beagle_hit_get_source (hit));}
-    const KURL getParentUri () const { return KURL (TQString::fromUtf8 (beagle_hit_get_parent_uri (hit)));}
-    const TQDict<TQStringList>& getAllProperties ()
-    {
-	if (! processed)
-	    processProperties ();
-	return property_map;
-    }
-    const TQStringList* getProperties (TQString prop_name)
-    {
-	if (! processed)
-	    processProperties ();
-	return property_map [prop_name];
-    }
-    const TQString operator[] (TQString prop_name);
-
-private:
-    BeagleHit *hit;
-    TQDict<TQStringList> property_map;
-    // not every hit may be used. so, do a lazy processing of property_map
-    bool processed;
-    void processProperties ();
-};
-
-class BeagleSearchResult{
-public:
-    BeagleSearchResult(int client_id);
-    ~BeagleSearchResult();
-    void addHit (BeagleHit *hit);
-    TQString getHitCategory (Hit *hit);
-
-    // id of the bsclient
-    int client_id;
-    // time taken to finish query
-    int query_msec;
-    // total number of results in this query
-    int total;
-
-    const TQPtrList<Hit> *getHits () const;
-
-private:
-    // lists of hits
-    TQPtrList<Hit> *hitlist;
-};
-
-// caller should delete bsclient->result and bsclient
-class BeagleSearchClient : public TQThread {
-public:
-    // passing NULL for client makes bsclient create client itself and
-    // delete it later
-    BeagleSearchClient (int id,
-                        TQObject *y,
-                        BeagleClient *client,
-                        BeagleQuery *query,
-                        bool collate_results)
-    : id (id), kill_me (false), object (y), client (client),
-      query (query), destroy_client (false), collate_results (collate_results)
-    {
-        if (client == NULL) {
-	    client = beagle_client_new (NULL);
-            destroy_client = true;
-        }
-	
-//        if (client == NULL)
-//            throw -1;
-
-        main_loop = g_main_loop_new (NULL, FALSE);
-        if (collate_results)
-            result = new BeagleSearchResult (id);
-
-	client_mutex = new TQMutex ();
-    }
-
-    // It is never safe to delete BeagleSearchClient directly, the thread might still be running
-    ~BeagleSearchClient ()
-    {
-	if (! finished ()) {
-	    kdDebug () << "Thread " << id << " still running. Waiting.........." << endl;
-	    wait ();
-	}
-
-        if (destroy_client)
-            g_object_unref (client);
-        g_main_loop_unref (main_loop);
-        g_object_unref (query);
-        kdDebug() << "Deleting client ..." << id << endl;
-	delete client_mutex;
-    }
-
-private:
-    static void hitsAddedSlot (BeagleQuery *query,
-                               BeagleHitsAddedResponse *response,
-                               BeagleSearchClient *bsclient);
-
-    static void finishedSlot (BeagleQuery  *query,
-                              BeagleFinishedResponse *response,
-                              BeagleSearchClient *bsclient);
-
-public:
-    // run() starts the query and sends the result as follows:
-    // - either wait till get back all results and send it as RESULTFOUND
-    // - or, send results as it gets them as RESULTFOUND and 
-    //       send SEARCHOVER when finished
-    // collate_results controls the behaviour
-    virtual void run ( );
-    
-    // after stopClient() is called, application can safely go and remove previous menu entries
-    // - i.e. after stopClient is called, app doesnt except the eventhandler to receive any results
-    // - use client_id to determine which is the current client, set it right after stopclient
-    // - Eventhandler checks client id, if it is current, it adds stuff to the menu
-    //   else, it discards everything
-    // Once eventhandler is being processed, doQuery() wont be called and vice versa
-    //   so no need to serialize eventhandler and doquery
-    //
-    // stopClient needs to make sure that once it is called, the thread is finished asap. Use a mutex
-    // to serialize actions. callbacks need to use mutex too.
-    // stopclient has to remove signal handlers to prevent further signal calls, set kill_me flag
-    //   and quite main loop
-    // stopClient can be called at the following times:
-    // - Waiting for the first result:
-    //   nothing extra
-    // - in hitsAddedSlot, processing results
-    //   in callback, before processing, if killme is set, just return.
-    // - in hitsAddedSlot, after sending results
-    //   before sending, if killme is set, dont send results
-    //   (doing it twice in hitsAdded because forming BeagleSearchResult can take time)
-    // - Waiting for more results
-    //   nothing extra
-    // - in finishedSlot, before sending finishedMsg
-    //   if killme is set, just return
-    // - in finishedSlot, after sending finishedMsg
-    //   if killme is set, just return
-    //  in Run(), when return from mainloop, if killme is set, dont do anything more but call delete this
-    void stopClient ();
-
-    // id of the client
-    // this is required in case applications fires many clients in rapid succession
-    int id;
-    
-    GMainLoop * main_loop;
-    BeagleSearchResult *result;
-    
-    // this is set if the client is obsolete now i.e.
-    // the application doesnt need the results from the client anymore
-    bool kill_me;
-private:
-    // the application; need this to send events to the application
-    TQObject *object;
-    // mutex to control setting the kill_me shared variable
-    TQMutex *client_mutex;
-    BeagleClient *client;
-    BeagleQuery *query;
-    // should the client be destroyed by the client
-    // if the client created it, then most probably it should
-    bool destroy_client;
-    bool collate_results;
-};
-
-class BeagleUtil {
-public:
-
-    static BeagleQuery *createQueryFromString (TQString query_str,
-					       TQStringList &sources,
-                                               TQStringList &types,
-					       int max_hits_per_source = 100);
-    static BeagleTimestamp *timestringToBeagleTimestamp (TQString timestring);
-};
-
-#endif
diff --git a/kicker/kicker/plugins/kickoff-beagle-plugin.cpp b/kicker/kicker/plugins/kickoff-beagle-plugin.cpp
deleted file mode 100644
index 7ded9eea..00000000
--- a/kicker/kicker/plugins/kickoff-beagle-plugin.cpp
+++ /dev/null
@@ -1,499 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2006 by Stephan Binner <binner@kde.org>                 *
- *   Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com>               *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.          *
- ***************************************************************************/
-
-#include "kickoff-beagle-plugin.h"
-
-#include <tqregexp.h>
-#include <tqtimer.h>
-
-#include <tdeapplication.h>
-#include <kdesktopfile.h>
-#include <kgenericfactory.h>
-#include <kservice.h>
-
-TQString dc_identifier = "dc:identifier";
-TQString dc_title = "dc:title";
-TQString parent_dc_title = "parent:dc:title";
-TQString exactfilename = "beagle:ExactFilename";
-TQString fixme_name = "fixme:Name";
-TQString beagle_filename = "beagle:Filename";
-TQString fixme_attachment_title = "fixme:attachment_title";
-TQString fixme_hasattachments = "fixme:hasAttachments";
-TQString parent_prefix = "parent:";
-TQString fixme_folder = "fixme:folder";
-TQString fixme_categories = "fixme:Categories";
-TQString fixme_comment = "fixme:Comment";
-TQString fixme_width = "fixme:width";
-TQString fixme_height = "fixme:height";
-TQString fixme_from_address = "fixme:from_address";
-TQString fixme_artist = "fixme:artist";
-TQString fixme_album = "fixme:album";
-TQString dc_source = "dc:source";
-TQString dc_publisher = "dc:publisher";
-TQString digikam_tag = "digikam:Tag";
-TQString fixme_speakingto = "fixme:speakingto";
-TQString fixme_starttime = "fixme:starttime";
-TQString comma_string = ",";
-TQString vCard_FN = "vCard:FN";
-TQString vCard_PREFEMAIL = "vCard:PREFEMAIL";
-TQString fixme_uid = "fixme:uid";
-
-static CATEGORY getHitCategory (Hit *hit)
-{
-    TQString hittype = hit->getType();
-    TQString hitsource = hit->getSource();
-
-    // if hit source is None, dont handle it. Might be anthrax-envelope :)
-    if (hitsource.isNull())
-        return OTHER;
-
-    if (hitsource == "documentation")
-        return DOCS;
-
-    if (hittype == "IMLog")
-        return CHATS;
-
-    // sure shots
-    if (hittype == "FeedItem")
-        return FEEDS;
-    if (hittype == "WebHistory")
-        return WEBHIST;
-    if (hittype == "MailMessage")
-        return MAILS;
-    if (hittype == "Note")
-        return NOTES;
-
-    // check for applications
-    if (hittype == "File" && (*hit) ["beagle:FilenameExtension"] == ".desktop")
-        return APPS;
-
-    // check for music
-    TQString hitmimetype = hit->getMimeType();
-    if (hitsource == "Amarok"
-        || hitmimetype.startsWith ("audio")
-        || hitmimetype == "application/ogg")
-        return MUSIC; // not an exhaustive search
-
-    // check for images from files
-    if (hitsource == "Files" && hitmimetype.startsWith ("image"))
-        return PICS;
-
-    if (hitsource == "Files" && hitmimetype.startsWith ("video"))
-        return VIDEOS;
-
-    if (hitsource == "Files")
-        return FILES;
-
-    if (hitsource == "KAddressBook")
-        return ACTIONS;
-
-    return OTHER;
-}
-
-K_EXPORT_COMPONENT_FACTORY( kickoffsearch_beagle,
-                            KGenericFactory<KickoffBeaglePlugin>( "kickoffsearch_beagle" ) )
-
-KickoffBeaglePlugin::KickoffBeaglePlugin(TQObject *parent, const char* name, const TQStringList&)
-            : KickoffSearch::Plugin(parent, name ), genericTitle( true )
-{
-    g_type_init ();
-    current_beagle_client = NULL;
-}
-
-bool KickoffBeaglePlugin::daemonRunning()
-{
-    return beagle_util_daemon_is_running();
-}
-
-void KickoffBeaglePlugin::query(TQString term, bool _genericTitle)
-{
-    genericTitle = _genericTitle;
-    current_query_str = term;
-
-    // Beagle search
-    if (current_beagle_client != NULL) {
-	kdDebug () << "Previous client w/id " << current_beagle_client->id << " still running ... ignoring it." << endl;
-	current_beagle_client->stopClient ();
-    }
-    current_beagle_client_id = TDEApplication::random ();
-    kdDebug () << "Creating client with id:" << current_beagle_client_id << endl;
-
-    BeagleClient *beagle_client = beagle_client_new (NULL);
-    if (beagle_client == NULL) {
-        kdDebug() << "beagle service not running ..." << endl;
-        return;
-    }
-
-    TQStringList sources, types;
-    BeagleQuery *beagle_query = BeagleUtil::createQueryFromString (term, sources, types, 99); // maximum 99 results, if this doesnt work, blame the stars
-
-    current_beagle_client = new BeagleSearchClient (
-                                current_beagle_client_id,
-                                this,
-                                beagle_client,
-                                beagle_query,
-                                false);
-    current_beagle_client->start();
-//    kdDebug () << "Query dispatched at " << time (NULL) << endl;
-}
-
-void KickoffBeaglePlugin::cleanClientList ()
-{
-    toclean_list_mutex.lock ();
-    BeagleSearchClient *old_client = toclean_client_list.take (0);
-    if (old_client != NULL) { // failsafe
-	kdDebug () << "Cleanup old client " << old_client->id << endl;
-	delete old_client;
-    }
-    toclean_list_mutex.unlock ();
-}
-
-void KickoffBeaglePlugin::customEvent (TQCustomEvent *e)
-{
-    if (e->type () == RESULTFOUND) {
-//        kdDebug () << "Quick query thread at " << time (NULL) << " with current_id=" << current_beagle_client_id <<  " finished ..." << endl;
-        BeagleSearchResult *result = (BeagleSearchResult *) e->data ();
-        if (current_beagle_client_id != result->client_id) {
-            kdDebug () << "Stale result from " << result->client_id << endl;
-	    delete result;
-	    // FIXME: Should I also free e ?
-        } else {
-            kdDebug () << "Good results ...total=" << result->total << endl;
-            showResults (result);
-        }
-        //KPassivePopup::message( "This is the message", this );
-    } else if (e->type () == SEARCHOVER) {
-        BeagleSearchClient *client = (BeagleSearchClient *) e->data ();
-	if (client == NULL) {
-//	    kdDebug () << "Query finished event at " << time (NULL) << " but client is already deleted" << endl;
-	    return;
-	}
-//        kdDebug () << "Query finished event at " << time (NULL) << " for id=" << client->id << endl;
-	if (current_beagle_client_id == client->id) {
-	    kickoffSearchInterface()->searchOver();
- 	    current_beagle_client = NULL; // important !
-	}
-    } else if (e->type () == KILLME) {
-        BeagleSearchClient *client = (BeagleSearchClient *) e->data ();
-	if (client->finished ())
-	    delete client;
-	else {
-	    // add client to cleanup list
-	    toclean_list_mutex.lock ();
-	    toclean_client_list.append (client);
-	    kdDebug () << "Scheduling client to be deleted in 500ms" << endl;
-	    toclean_list_mutex.unlock ();
-	    TQTimer::singleShot (500, this, TQT_SLOT (cleanClientList ()));
-	}
-    }
-}
-
-// this method decides what to display in the result list
-HitMenuItem *KickoffBeaglePlugin::hitToHitMenuItem (int category, Hit *hit)
-{
-    TQString title, info, mimetype, icon;
-    int score = 0;
-    KURL uri;
-
-#if 0
-    kdDebug() << "*** " << hit->getUri() << endl;
-    TQDict<TQStringList> all = hit->getAllProperties();
-    TQDictIterator<TQStringList> it( all );
-    for( ; it.current(); ++it )
-        kdDebug() << it.currentKey() << ": " << *(it.current()) << endl;
-#endif
-
-    switch (category) {
-	case FILES:
-	    {
-		uri = hit->getUri ();
-		TQString uristr = uri.path ();
-	    	title = (*hit) [exactfilename];
-	    	int last_slash = uristr.findRev ('/', -1);
-                info = i18n("Folder: %1").arg(last_slash == 0 ? "/" 
-                        : uristr.section ('/', -2, -2));
-	    }
-	    break;
-        case ACTIONS:
-            {
-                if (hit->getSource()=="KAddressBook"){
-		    title = i18n("Send Email to %1").arg((*hit)[vCard_FN]);
-		    info = (*hit)[vCard_PREFEMAIL];
-		    uri = "mailto:"+(*hit)[vCard_PREFEMAIL];
-		    mimetype = hit->getMimeType ();
-		    icon = "mail-message-new";
-
-		    HitMenuItem * first_item=new HitMenuItem (title, info, uri, mimetype, 0, category, icon, score);
-		    kickoffSearchInterface()->addHitMenuItem(first_item);
-
-		    title =i18n("Open Addressbook at %1").arg((*hit)[vCard_FN]);
-		    uri = "kaddressbook:/"+(*hit)[fixme_uid];
-		    icon = "kaddressbook";
-                }
-                break;
-            }
-	case MAILS:
-	    {
-		TQString prefix = TQString::null;
-		bool is_attachment = ((*hit) [parent_prefix + fixme_hasattachments] == "true");
-		bool has_parent = (! hit->getParentUri ().isEmpty ());
-		bool parent_mbox_file = false;
-		if (has_parent)
-		    parent_mbox_file = ((*hit) [parent_prefix + fixme_folder] == TQString::null);
-
-		// Logic:
-		// If has_parent == false, everything is normal
-		// If has_parent == true, parent_mbox_file == false, everything is normal, use uri
-		// FIXME: If has_parent == true, parent_mbox_file == true, ???
-		// If has_parent == true, is_attachment == true, hit is attach and access with prefix "parent:", use parenturi
-		// Else, not attachment (multipart), access with prefix "parent:", use parenturi
-
-		if (has_parent && !parent_mbox_file) {
-		    uri = hit->getParentUri ();
-		    prefix = parent_prefix;
-		    if (is_attachment)
-			title = (*hit) [fixme_attachment_title];
-		    if (title.isEmpty ())
-			title = (*hit) [prefix + dc_title];
-		    if (title.isEmpty ())
-			title = i18n("No subject");
-		    if (is_attachment)
-			title = title.prepend (i18n("(Attachment) "));
-		    info = (i18n("From %1").arg((*hit) [prefix + fixme_from_address]));
-		} else {
-		    uri = hit->getUri ();
-		    title = (*hit) [dc_title];
-		    info = (i18n("From %1").arg((*hit) [fixme_from_address]));
-		}
-	    }
-	    mimetype = "message/rfc822"; // to handle attachment results
-	    break;
- 	case MUSIC:
-	    uri = hit->getUri ();
-	    title = (*hit) [exactfilename];
-	    {
-		TQString artist = (*hit) [fixme_artist];
-		TQString album = (*hit) [fixme_album];
-		if (! artist.isEmpty ())
-		    info = (i18n("By %1").arg(artist));
-		else if (! album.isEmpty ())
-		    info = (i18n("From Album %1").arg(album));
-		else {
-		    TQString uristr = uri.path ();
-		    int last_slash = uristr.findRev ('/', -1);
-                    info = i18n("Folder: %1")
-                        .arg(last_slash == 0 ? "/" : uristr.section ('/', -2, -2));
-		}
-	    }
-	    break;
- 	case VIDEOS:
-	    uri = hit->getUri ();
-	    title = (*hit) [exactfilename];
-	    {
-		TQString uristr = uri.path ();
-		int last_slash = uristr.findRev ('/', -1);
-                info = i18n("Folder: %1").arg(last_slash == 0 ? "/" : uristr.section ('/', -2, -2));
-	    }
-	    break;
-	case WEBHIST:
-	    uri = hit->getUri ();
-	    title = (*hit) [dc_title];
-	    title = title.replace(TQRegExp("\n")," ");
-	    mimetype = "text/html";
-	    if (title.isEmpty () || title.stripWhiteSpace ().isEmpty ()) {
-		title = uri.prettyURL ();
-	    } else {
-		info = uri.host () + uri.path ();
-	    }
-	    break;
-	case FEEDS:
-	    {
-		uri = KURL ((*hit) [dc_identifier]);
-	    	title = (*hit) [dc_title];
-	    	mimetype = "text/html";
-	    	TQString publisher = (*hit) [dc_publisher];
-	    	TQString source = (*hit) [dc_source];
-	    	if (! publisher.isEmpty ())
-	    	    info = publisher;
-	    	else if (! source.isEmpty ())
-	    	    info = source;
-	    }
-	    break;
-	case PICS:
-	    {
-		uri = hit->getUri ();
-		title = (*hit) [exactfilename];
-		TQString width = (*hit) [fixme_width];
-		TQString height = (*hit) [fixme_height];
-		if (width.isEmpty () || height.isEmpty ()) {
-		    TQString uristr = uri.path ();
-		    int last_slash = uristr.findRev ('/', -1);
-                    info = i18n("Folder: %1")
-                        .arg(last_slash == 0 ? "/" : uristr.section ('/', -2, -2));
-		    break;
-		}
-		info = (TQString (" (%1x%2)").arg (width).arg (height));
-		const TQStringList *tags = hit->getProperties (digikam_tag);
-		if (tags == NULL)
-		    break;
-		TQString tags_string = tags->join (comma_string);
-		info += (" " + tags_string);
-	    }
-	    break;
-	case APPS:
-	    {
-		uri = hit->getUri ();
-	    	title = (*hit) [dc_title];
-		KDesktopFile desktopfile(uri.path(),true);
-		if (genericTitle && !desktopfile.readGenericName().isEmpty()) {
-		  title = desktopfile.readGenericName();
-		  info = desktopfile.readName();
-		}
-		else {
-		  title = desktopfile.readName();
-		  info = desktopfile.readGenericName();
-		}
-		icon = desktopfile.readIcon();
-                TQString input = current_query_str.lower();
-		TQString command = desktopfile.readEntry("Exec");
-		if (command==input)
-                  score = 100;
-                else if (command.find(input)==0)
-                  score = 50;
-                else if (command.find(input)!=-1)
-                  score = 10;
-		else if (title==input)
-                  score = 100;
-                else if (title.find(input)==0)
-                  score = 50;
-                else if (title.find(input)!=-1)
-                  score = 10;
-	    	break;
-	    }
-	    break;
-	case NOTES:
-            {
-	        uri = hit->getUri ();
-	        title = (*hit) [dc_title];
-	        title = i18n("Title: %1").arg(title.isEmpty() ? i18n("Untitled") : title);
-
-	        if (hit->getSource()=="KNotes")
-                   icon="knotes";
-                else
-                   icon="contents2";
-            }
-	    break;
-	case CHATS:
-            {
-	        uri = hit->getUri ();
-	        title = (*hit) [fixme_speakingto];
-	        title = i18n("Conversation With %1").arg(title.isEmpty() ? i18n("Unknown Person") : title);
-	        TQDateTime datetime;
-	        datetime = datetimeFromString((*hit) [fixme_starttime]);
-                info=i18n("Date: %1").arg(TDEGlobal::locale()->formatDateTime(datetime,false));
-	        if (hit->getMimeType()=="beagle/x-kopete-log")
-                   icon="kopete";
-                else
-                   icon="gaim";
-            }
-	    break;
-	case DOCS:
-	    {
-		uri = hit->getUri ();
-		title = (*hit) [dc_title];
-		if (title.isEmpty () || title.stripWhiteSpace ().isEmpty ())
-		    title = uri.prettyURL ();
-		else {
-			TQString uristr = uri.path ();
-			int last_slash = uristr.findRev ('/', -1);
-                        info = i18n("Folder: %1").arg(last_slash == 0 ? "/" : uristr.section ('/',
-                                    -2, -2));
-		}
-	    }
-	    break;
-	default:
-	    return NULL;
-    }
-    if (mimetype.isEmpty ())
-	mimetype = hit->getMimeType ();
-    return new HitMenuItem (title, info, uri, mimetype, 0, category, icon, score);
-}
-
-void KickoffBeaglePlugin::showResults(BeagleSearchResult *result)
-{
-    if (result->total == 0 ) {
-	// Dont report error from here ...
-        kdDebug() << "No matches found" << endl;
-	delete result;
-	return;
-    }
-
-    const TQPtrList<Hit> *hits = result->getHits();
-    if (hits == NULL) {
-        kdDebug () << "Hmm... null" << endl;
-	delete result;
-        return;
-    }
-    kickoffSearchInterface()->initCategoryTitlesUpdate();
-
-    TQPtrListIterator<Hit> it (*hits);
-    Hit *hit;
-    for (; (hit = it.current ()) != NULL; ++it) {
-	CATEGORY category = getHitCategory (hit);
-
-	// if category is not handled, continue
-	if (category == OTHER)
-          continue;
-
-        if ( category == APPS ) {
-            // we need to check if this is useful
-            KService cs( hit->getUri().path() );
-            if ( cs.noDisplay() )
-                continue;
-        }
-
-        if (!kickoffSearchInterface()->anotherHitMenuItemAllowed(category))
-          continue;
-
-        HitMenuItem *hit_item = hitToHitMenuItem (category, hit);
-
-        if (!hit_item)
-	   continue;
-
-        kickoffSearchInterface()->addHitMenuItem(hit_item);
-    }
-
-    kickoffSearchInterface()->updateCategoryTitles();
-
-    delete result;
-}
-
-TQDateTime KickoffBeaglePlugin::datetimeFromString( const TQString& s)
-{
-      int year( s.mid( 0, 4 ).toInt() );
-      int month( s.mid( 4, 2 ).toInt() );
-      int day( s.mid( 6, 2 ).toInt() );
-      int hour( s.mid( 8, 2 ).toInt() );
-      int min( s.mid( 10, 2 ).toInt() );
-      int sec( s.mid( 12, 2 ).toInt() );
-      return TQDateTime(TQDate(year,month,day),TQTime(hour,min,sec));
-}
-
-#include "kickoff-beagle-plugin.moc"
diff --git a/kicker/kicker/plugins/kickoff-beagle-plugin.h b/kicker/kicker/plugins/kickoff-beagle-plugin.h
deleted file mode 100644
index 8288ba64..00000000
--- a/kicker/kicker/plugins/kickoff-beagle-plugin.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/***************************************************************************
- *   Copyright (C) 2006 by Stephan Binner <binner@kde.org>                 *
- *   Copyright (c) 2006 Debajyoti Bera <dbera.web@gmail.com>               *
- *                                                                         *
- *   This program is free software; you can redistribute it and/or modify  *
- *   it under the terms of the GNU General Public License as published by  *
- *   the Free Software Foundation; either version 2 of the License, or     *
- *   (at your option) any later version.                                   *
- *                                                                         *
- *   This program is distributed in the hope that it will be useful,       *
- *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
- *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
- *   GNU General Public License for more details.                          *
- *                                                                         *
- *   You should have received a copy of the GNU General Public License     *
- *   along with this program; if not, write to the                         *
- *   Free Software Foundation, Inc.,                                       *
- *   51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.          *
- ***************************************************************************/
-
-#ifndef CAPITALIZEPLUGIN_H
-#define CAPITALIZEPLUGIN_H
-
-#include "../interfaces/kickoff-search-plugin.h"
-#include "beaglesearch.h"
-
-class KickoffBeaglePlugin :public KickoffSearch::Plugin
-{
-    Q_OBJECT
-
-public:
-    KickoffBeaglePlugin(TQObject *parent, const char* name, const TQStringList&);
-
-    void query(TQString, bool);
-    bool daemonRunning();
-
-protected slots:
-    // to clean beaglesearchclients
-    void cleanClientList ();
-
-private:
-    TQString current_query_str;
-
-    // all beagle activity is done through the BSC object
-    BeagleSearchClient *current_beagle_client;
-
-    // used to send notification from the beagle thread to the main event loop
-    virtual void customEvent (TQCustomEvent *e);
-
-    TQPtrList<BeagleSearchClient> toclean_client_list;
-    TQMutex toclean_list_mutex;
-
-    // show the results
-    void showResults (BeagleSearchResult *);
-    HitMenuItem *hitToHitMenuItem (int category, Hit *hit);
-
-    // use a different id for each bsc client, and use that to separate stale responses from current ones
-    int current_beagle_client_id;
-
-    bool genericTitle;
-    TQDateTime datetimeFromString( const TQString& );
-};
-
-#endif /* CAPITALIZEPLUGIN_H */
diff --git a/kicker/kicker/plugins/kickoffsearch_beagle.desktop b/kicker/kicker/plugins/kickoffsearch_beagle.desktop
deleted file mode 100644
index aa8bb565..00000000
--- a/kicker/kicker/plugins/kickoffsearch_beagle.desktop
+++ /dev/null
@@ -1,6 +0,0 @@
-[Desktop Entry]
-Name=Beagle Search
-Comment=Beagle search plugin for Kickoff search
-X-TDE-ServiceTypes=KickoffSearch/Plugin
-Type=Service
-X-TDE-Library=kickoffsearch_beagle
diff --git a/kicker/kicker/ui/browser_mnu.cpp b/kicker/kicker/ui/browser_mnu.cpp
index b4d1b11e..9b629e16 100644
--- a/kicker/kicker/ui/browser_mnu.cpp
+++ b/kicker/kicker/ui/browser_mnu.cpp
@@ -152,7 +152,7 @@ void PanelBrowserMenu::initialize()
        TDEConfig *c = TDEGlobal::config();
        c->setGroup("menus");
        insertItem(CICON("kfm"), i18n("Open in File Manager"), this, TQT_SLOT(slotOpenFileManager()));
-	if (kapp->authorize("shell_access") && c->readBoolEntry("kickerOpenInTerminalIsVisible",false)) 
+	if (kapp->authorize("shell_access") && KickerSettings::showOpenInTerminal())
 	    insertItem(CICON("terminal"), i18n("Open in Terminal"), this, TQT_SLOT(slotOpenTerminal()));
     	insertSeparator();
     }
@@ -455,10 +455,7 @@ void PanelBrowserMenu::slotOpenTerminal()
 
     TDEProcess proc;
     proc << term;
-    if (term == "konsole")
-      proc << "--workdir" << path();
-    else
-      proc.setWorkingDirectory(path());
+    proc.setWorkingDirectory(path());
     proc.start(TDEProcess::DontCare);
 }
 
diff --git a/kicker/kicker/ui/k_new_mnu.cpp b/kicker/kicker/ui/k_new_mnu.cpp
index 7d31f434..0308fe2d 100644
--- a/kicker/kicker/ui/k_new_mnu.cpp
+++ b/kicker/kicker/ui/k_new_mnu.cpp
@@ -327,18 +327,10 @@ KMenu::KMenu()
     m_searchInternet->setPixmap(0,icon);
     setTabOrder(m_kcommand, m_searchResultsWidget);
 
-    m_kerryInstalled = !TDEStandardDirs::findExe(TQString::fromLatin1("kerry")).isEmpty();
     m_isShowing = false;
 
-    if (!m_kerryInstalled) {
-       m_searchIndex = 0;
-       m_searchActions->setMaximumHeight(5+m_searchInternet->height());
-    }
-    else {
-       m_searchIndex = new TQListViewItem(m_searchActions, i18n("Search Index"));
-       m_searchIndex->setPixmap(0,SmallIcon("kerry"));
-       m_searchActions->setMaximumHeight(5+m_searchIndex->height()*2);
-    }
+    m_searchActions->setMaximumHeight(5+m_searchInternet->height());
+
     connect(m_searchActions, TQT_SIGNAL(clicked(TQListViewItem*)), TQT_SLOT(searchActionClicked(TQListViewItem*)));
     connect(m_searchActions, TQT_SIGNAL(returnPressed(TQListViewItem*)), TQT_SLOT(searchActionClicked(TQListViewItem*)));
     connect(m_searchActions, TQT_SIGNAL(spacePressed(TQListViewItem*)), TQT_SLOT(searchActionClicked(TQListViewItem*)));
@@ -2635,10 +2627,7 @@ void KMenu::updateCategoryTitles()
             max *= 2;
 
         if ( categorised_hit_total [i] > max ) {
-            if (m_kerryInstalled)
-                sep->setLink( i18n( "top %1 of %2" ).arg( max ).arg( categorised_hit_total [i] ), TQString( "kerry:/%1" ).arg( i ) );
-            else
-                sep->setText( 0, i18n( "%1 (top %2 of %3)" ).arg( i18n(categories [i].utf8()) ).arg( max ).arg( categorised_hit_total [i] ) );
+            sep->setText( 0, i18n( "%1 (top %2 of %3)" ).arg( i18n(categories [i].utf8()) ).arg( max ).arg( categorised_hit_total [i] ) );
         }
         else {
             sep->setLink( TQString() );
@@ -2773,14 +2762,6 @@ void KMenu::slotStartURL(const TQString& u)
             KMessageBox::error( this, TQString( "kicker:/restart_windows is not yet implemented " ) );
     }
 #endif
-    else if ( u.startsWith("kerry:/"))
-    {
-       TQByteArray data;
-       TQDataStream arg(data, IO_WriteOnly);
-       arg << m_kcommand->currentText() << kerry_categories[u.mid(7).toInt()];
-       if (ensureServiceRunning("kerry"))
-           kapp->dcopClient()->send("kerry","search","search(TQString,TQString)", data);
-    }
     else {
         addToHistory();
         if (u.startsWith("kaddressbook:/")) {
@@ -3355,27 +3336,17 @@ void KMenu::searchActionClicked(TQListViewItem* item)
    accept();
 
    addToHistory();
-   if (item==m_searchIndex) {
-     TQByteArray data;
-     TQDataStream arg(data, IO_WriteOnly);
-     arg << m_kcommand->currentText();
-
-     if (ensureServiceRunning("kerry"))
-       kapp->dcopClient()->send("kerry","search","search(TQString)", data);
+   KURIFilterData data;
+   TQStringList list;
+   data.setData( m_kcommand->currentText() );
+   list << "kurisearchfilter" << "kuriikwsfilter";
+
+   if( !KURIFilter::self()->filterURI(data, list) ) {
+       KDesktopFile file("searchproviders/google.desktop", true, "services");
+       data.setData(file.readEntry("Query").replace("\\{@}", m_kcommand->currentText()));
    }
-   else {
-     KURIFilterData data;
-     TQStringList list;
-     data.setData( m_kcommand->currentText() );
-     list << "kurisearchfilter" << "kuriikwsfilter";
-
-     if( !KURIFilter::self()->filterURI(data, list) ) {
-         KDesktopFile file("searchproviders/google.desktop", true, "services");
-         data.setData(file.readEntry("Query").replace("\\{@}", m_kcommand->currentText()));
-     }
 
-     (void) new KRun( data.uri(), parentWidget());
-   }
+   (void) new KRun( data.uri(), parentWidget());
 }
 
 void KMenu::addToHistory()
diff --git a/kicker/kicker/ui/k_new_mnu.h b/kicker/kicker/ui/k_new_mnu.h
index 49982d96..acb80342 100644
--- a/kicker/kicker/ui/k_new_mnu.h
+++ b/kicker/kicker/ui/k_new_mnu.h
@@ -83,10 +83,6 @@ static TQString categories[14] = {I18N_NOOP("Actions"), I18N_NOOP("Applications"
                                  I18N_NOOP("Pictures"), I18N_NOOP("Videos"), I18N_NOOP("Documentation"),
                                  I18N_NOOP("Others")};
 
-static TQString kerry_categories[14] = {"contacts", "applications", "webpages", "everything", "conversations",
-                                       "everything", "media", "webpages", "conversations", "webpages", "images",
-                                       "media", "everything", "everything"};
-
 enum MenuOrientation { BottomUp, TopDown, UnDetermined };
 enum OverflowCategoryState { None, Filling, NotNeeded };
 
@@ -282,7 +278,7 @@ private:
     TQStringList m_finalFilters;
     KURIFilterData* m_filterData;
     TQPtrList<HitMenuItem> m_current_menu_items;
-    TQListViewItem *m_searchIndex, *m_searchInternet;
+    TQListViewItem *m_searchInternet;
 
     bool checkUriInMenu(const KURL &uri);
 
@@ -338,7 +334,7 @@ private:
     bool m_toolTipsEnabled;
     int m_media_id;
 
-    bool m_recentDirty, m_browserDirty, m_kerryInstalled, m_isShowing;
+    bool m_recentDirty, m_browserDirty, m_isShowing;
 
     KickoffSearch::Plugin* m_search_plugin;
     TQObject* m_search_plugin_interface;
diff --git a/kicker/libkicker/kickerSettings.kcfg b/kicker/libkicker/kickerSettings.kcfg
index 0abc51bf..5ab6880a 100644
--- a/kicker/libkicker/kickerSettings.kcfg
+++ b/kicker/libkicker/kickerSettings.kcfg
@@ -227,6 +227,11 @@
       <default>false</default>
    </entry>
 
+<entry name="ShowOpenInTerminal" type="Bool" >
+      <label>Show Open in Terminal entry in Quick Browser</label>
+      <default>true</default>
+   </entry>
+
 <entry name="MaxEntries2" type="UInt" >
       <label>Maximum number of entries</label>
       <default>30</default>
diff --git a/konqueror/konq_mainwindow.cc b/konqueror/konq_mainwindow.cc
index 4b8efaaf..ff9d797c 100644
--- a/konqueror/konq_mainwindow.cc
+++ b/konqueror/konq_mainwindow.cc
@@ -490,26 +490,7 @@ void KonqMainWindow::openURL( KonqView *_view, const KURL &_url,
 
       while( nDollarPos != -1 && nDollarPos+1 < static_cast<int>(aValue.length())) {
         // there is at least one $
-        if( (aValue)[nDollarPos+1] == '(' ) {
-          uint nEndPos = nDollarPos+1;
-          // the next character is no $
-          while ( (nEndPos <= aValue.length()) && (aValue[nEndPos]!=')') )
-              nEndPos++;
-          nEndPos++;
-          TQString cmd = aValue.mid( nDollarPos+2, nEndPos-nDollarPos-3 );
-
-          TQString result;
-          FILE *fs = popen(TQFile::encodeName(cmd).data(), "r");
-          if (fs)
-          {
-             {
-             TQTextStream ts(fs, IO_ReadOnly);
-             result = ts.read().stripWhiteSpace();
-             }
-             pclose(fs);
-          }
-          aValue.replace( nDollarPos, nEndPos-nDollarPos, result );
-        } else if( (aValue)[nDollarPos+1] != '$' ) {
+        if( (aValue)[nDollarPos+1] != '$' ) {
           uint nEndPos = nDollarPos+1;
           // the next character is no $
           TQString aVarName;
diff --git a/konqueror/konqueror.kcfg b/konqueror/konqueror.kcfg
index 9dfc9198..ec4728e0 100644
--- a/konqueror/konqueror.kcfg
+++ b/konqueror/konqueror.kcfg
@@ -602,7 +602,7 @@ PATH_JAVA
     <entry key="ConfirmDelete" type="Bool">
       <default>true</default>
       <label>Ask confirmation for deleting a file.</label>
-      <whatsthis></whatsthis>
+      <whatsthis>This option tells Konqueror whether to ask for a confirmation when you simply delete the file.</whatsthis>
       <!-- checked -->
     </entry>
     <entry key="ConfirmTrash" type="Bool">
@@ -618,7 +618,7 @@ PATH_JAVA
     <entry key="TerminalApplication" type="String">
       <default>konsole</default>
       <label></label>
-      <whatsthis>This option tells Konqueror whether to ask for a confirmation when you simply delete the file.</whatsthis>
+      <whatsthis>Terminal application to use.</whatsthis>
       <!-- checked -->
     </entry>
   </group>
diff --git a/konqueror/sidebar/trees/init/remote/web/.directory b/konqueror/sidebar/trees/init/remote/web/.directory
index cb8fcc9a..a9787441 100644
--- a/konqueror/sidebar/trees/init/remote/web/.directory
+++ b/konqueror/sidebar/trees/init/remote/web/.directory
@@ -8,7 +8,7 @@ Name[cs]=Webové stránky
 Name[csb]=Starnë WWW
 Name[cy]=Gwefannau
 Name[da]=Netsteder
-Name[de]=Webseiten
+Name[de]=Internetseiten
 Name[el]=Τόποι στο διαδίκτυο
 Name[eo]=Retejoj
 Name[es]=Sitios web
diff --git a/konsole/CMakeLists.txt b/konsole/CMakeLists.txt
index 65f2e171..b0059acb 100644
--- a/konsole/CMakeLists.txt
+++ b/konsole/CMakeLists.txt
@@ -15,6 +15,7 @@ add_subdirectory( konsole )
 add_subdirectory( other )
 # add_subdirectory( doc )
 add_subdirectory( fonts )
+add_subdirectory( terminalhere )
 
 
 install( FILES
@@ -48,7 +49,7 @@ install( FILES
 
 
 install( FILES
-    konsolehere.desktop
+    terminalhere.desktop
   DESTINATION ${DATA_INSTALL_DIR}/konqueror/servicemenus )
 
 
diff --git a/konsole/Makefile.am b/konsole/Makefile.am
index cb5fccb8..c6003d03 100644
--- a/konsole/Makefile.am
+++ b/konsole/Makefile.am
@@ -1,4 +1,4 @@
-SUBDIRS = konsole other doc fonts
+SUBDIRS = konsole other doc fonts terminalhere
 
 xdg_apps_DATA = konsole.desktop konsolesu.desktop
 
@@ -15,8 +15,8 @@ services_DATA = kwrited.desktop
 install-data-local:
 	@-rm -f $(DESTDIR)$(datadir)/autostart/kwrited.desktop
 
-konsolehere_DATA = konsolehere.desktop
-konsoleheredir = $(kde_datadir)/konqueror/servicemenus
+terminalhere_DATA = terminalhere.desktop
+terminalheredir = $(kde_datadir)/konqueror/servicemenus
 
 misc_DATA = eventsrc tips
 miscdir = $(kde_datadir)/konsole
diff --git a/konsole/konsole/CMakeL10n.txt b/konsole/konsole/CMakeL10n.txt
index e9ca2079..d67c32d5 100644
--- a/konsole/konsole/CMakeL10n.txt
+++ b/konsole/konsole/CMakeL10n.txt
@@ -1,30 +1,33 @@
 ##### prepare list of schemas ###################
 
-file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/schemas.tde_l10n "" )
 file( GLOB _konsole_schema_files
   RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../other/*.[Ss]chema
 )
+unset( _konsole_schemas )
 list( SORT _konsole_schema_files )
 foreach( _konsole_schema_file ${_konsole_schema_files} )
-  file( STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/${_konsole_schema_file} _konsole_schema_title REGEX "^title " )
-  if( _konsole_schema_title )
-    string( REGEX REPLACE "^title +(.*) *" "\\1" _konsole_schema_title ${_konsole_schema_title} )
-    file( APPEND ${CMAKE_CURRENT_SOURCE_DIR}/schemas.tde_l10n "i18n(\"${_konsole_schema_title}\");\n" )
-  endif( )
+  file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_konsole_schema_file} _konsole_schema_data )
+  string( REGEX REPLACE "(^|\n)([^\n]+)" "\\1:\\2" _konsole_schema_data "${_konsole_schema_data}" )
+  string( REGEX REPLACE "(^|\n):title +([^\n]*)" "\\1i18n(\"\\2\");" _konsole_schema_data "${_konsole_schema_data}" )
+  string( REGEX REPLACE "(^|\n):[^\n]*" "\\1" _konsole_schema_data "${_konsole_schema_data}" )
+  file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_konsole_schema_file}.tde_l10n "${_konsole_schema_data}" )
+  list( APPEND _konsole_schemas ${_konsole_schema_file}.tde_l10n )
 endforeach( )
 
 file( GLOB _konsole_keytab_files
   RELATIVE ${CMAKE_CURRENT_SOURCE_DIR}
   ${CMAKE_CURRENT_SOURCE_DIR}/../other/*.[Kk]eytab
 )
+unset( _konsole_keytabs )
 list( SORT _konsole_keytab_files )
 foreach( _konsole_keytab_file ${_konsole_keytab_files} )
-  file( STRINGS ${CMAKE_CURRENT_SOURCE_DIR}/${_konsole_keytab_file} _konsole_keytab_title REGEX "^keyboard " )
-  if( _konsole_keytab_title )
-    string( REGEX REPLACE "^keyboard +\"(.*)\" *" "\\1" _konsole_keytab_title ${_konsole_keytab_title} )
-    file( APPEND ${CMAKE_CURRENT_SOURCE_DIR}/schemas.tde_l10n "i18n(\"${_konsole_keytab_title}\");\n" )
-  endif( )
+  file( READ ${CMAKE_CURRENT_SOURCE_DIR}/${_konsole_keytab_file} _konsole_keytab_data )
+  string( REGEX REPLACE "(^|\n)([^\n]+)" "\\1:\\2" _konsole_keytab_data "${_konsole_keytab_data}" )
+  string( REGEX REPLACE "(^|\n):keyboard +([^\n]*)" "\\1i18n(\\2);" _konsole_keytab_data "${_konsole_keytab_data}" )
+  string( REGEX REPLACE "(^|\n):[^\n]*" "\\1" _konsole_keytab_data "${_konsole_keytab_data}" )
+  file( WRITE ${CMAKE_CURRENT_SOURCE_DIR}/${_konsole_keytab_file}.tde_l10n "${_konsole_keytab_data}" )
+  list( APPEND _konsole_keytabs ${_konsole_keytab_file}.tde_l10n )
 endforeach( )
 
 
@@ -32,5 +35,5 @@ endforeach( )
 
 tde_l10n_create_template(
     CATALOG "konsole"
-    SOURCES "." "schemas.tde_l10n" "../tips"
+    SOURCES "." ${_konsole_schemas} ${_konsole_keytabs} "../tips"
 )
diff --git a/konsole/konsolehere.desktop b/konsole/terminalhere.desktop
similarity index 80%
rename from konsole/konsolehere.desktop
rename to konsole/terminalhere.desktop
index 5bf32424..00657f7b 100644
--- a/konsole/konsolehere.desktop
+++ b/konsole/terminalhere.desktop
@@ -3,44 +3,11 @@ X-TDE-ServiceTypes=inode/directory
 Actions=openTerminalHere;
 X-TDE-AuthorizeAction=shell_access
 Type=Application
-
-Name=Konsole
-Name[ar]=طرفية التحكم
-Name[az]=Konsol
-Name[be]=Кансоль
-Name[bg]=Конзола
-Name[bn]=কনসোল
-Name[bs]=Konzola
-Name[ca]=Consola
-Name[csb]=Kònsola
-Name[el]=Κονσόλα
-Name[eo]=Konzolo
-Name[et]=Konsool
-Name[eu]=Kontsola
-Name[he]=מסוף
-Name[hi]=कंसोल
-Name[hr]=Konzola
-Name[is]=Skjáhermir
-Name[ka]=კონსოლი
-Name[lo]=ຄອນໂຊລ - K
-Name[mk]=Конзола
-Name[mn]=Консол
-Name[nb]=Konsoll
-Name[ne]=कन्सोल
-Name[nn]=Konsoll
-Name[pa]=ਕੰਨਸੋਲ
-Name[pl]=Konsola
-Name[ro]=Consolă
-Name[se]=Konsolla
-Name[sk]=Konzola
-Name[sl]=Konzola
-Name[ta]=கான்சோல்
-Name[te]=కాన్సోల్
-Name[tg]=Консол
-Name[th]=คอนโซล K
-Name[zu]=Ikhonsoli
+Name=Terminal
 
 [Desktop Action openTerminalHere]
+Icon=konsole
+Exec=terminalhere --wd %f
 Name=Open Terminal Here
 Name[af]=Maak Terminaal Hier Oop
 Name[ar]=إفتح مطراف سطر الأوامر هنا
@@ -121,5 +88,3 @@ Name[xh]=Vula Isiphelo Sendlela Apha
 Name[zh_CN]=在此打开终端
 Name[zh_TW]=在這裡開啟終端機
 Name[zu]=Vula ithuluzi langaphandle lapha
-Icon=konsole
-Exec=konsole --workdir %f
diff --git a/konsole/terminalhere/CMakeLists.txt b/konsole/terminalhere/CMakeLists.txt
new file mode 100644
index 00000000..fbd0f198
--- /dev/null
+++ b/konsole/terminalhere/CMakeLists.txt
@@ -0,0 +1,27 @@
+
+##### config ########
+
+include_directories(
+  ${CMAKE_CURRENT_BINARY_DIR}
+  ${TDE_INCLUDE_DIR}
+  ${TQT_INCLUDE_DIRS}
+)
+
+link_directories(
+  ${TQT_LIBRARY_DIRS}
+)
+
+
+##### terminalhere (executable) ########
+
+set( target terminalhere )
+
+set( ${target}_SRCS
+  terminalhere.cpp
+)
+
+tde_add_executable( ${target} AUTOMOC
+  SOURCES ${${target}_SRCS}
+  LINK tdeio-shared
+  DESTINATION ${BIN_INSTALL_DIR}
+)
diff --git a/konsole/terminalhere/Makefile.am b/konsole/terminalhere/Makefile.am
new file mode 100644
index 00000000..8e6c5306
--- /dev/null
+++ b/konsole/terminalhere/Makefile.am
@@ -0,0 +1,10 @@
+bin_PROGRAMS = terminalhere
+
+INCLUDES = $(all_includes)
+AM_LDFLAGS = $(all_libraries)
+
+terminalhere_SOURCES = terminalhere.cpp
+terminalhere_LDFLAGS = $(all_libraries) $(KDE_RPATH) $(LIB_TQT) $(LIB_TDEIO)
+
+METASOURCES = AUTO
+
diff --git a/konsole/terminalhere/terminalhere.cpp b/konsole/terminalhere/terminalhere.cpp
new file mode 100644
index 00000000..ece2ac30
--- /dev/null
+++ b/konsole/terminalhere/terminalhere.cpp
@@ -0,0 +1,66 @@
+/* This file is part of the TDE project
+
+   This library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Library General Public
+   License as published by the Free Software Foundation; either
+   version 2 of the License, or (at your option) any later version.
+
+   This library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Library General Public License for more details.
+
+   You should have received a copy of the GNU Library General Public License
+   along with this library; see the file COPYING.LIB.  If not, write to
+   the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+   Boston, MA 02110-1301, USA.
+*/
+
+#include <tdecmdlineargs.h>
+#include <tdeapplication.h>
+#include <tdelocale.h>
+#include <tdeconfig.h>
+#include <tdeglobal.h>
+#include <kprocess.h>
+#include <tdestartupinfo.h>
+#include <stdlib.h>
+
+#include "terminalhere.h"
+
+
+TerminalHere::TerminalHere() : TDEApplication()
+{
+	TDECmdLineArgs *args = TDECmdLineArgs::parsedArgs();
+
+	TDEConfig *config = kapp->config();
+	config->setGroup("General");
+	TQString term = config->readPathEntry("TerminalApplication", "konsole");
+
+	TDEProcess proc;
+	proc << term;
+	if (args->isSet("wd"))
+	{
+		proc.setWorkingDirectory(args->getOption("wd"));
+	}
+	proc.start(TDEProcess::DontCare);
+	::exit(0);
+}
+
+static TDECmdLineOptions options[] =
+{
+  { "wd <dir>",   I18N_NOOP("Set working directory to 'dir'"), 0 },
+	TDECmdLineLastOption
+};
+
+int main(int argc, char **argv)
+{
+	TDECmdLineArgs::init(argc, argv, "terminalhere", "terminalhere", "terminalhere", "0.1");
+	TDECmdLineArgs::addCmdLineOptions(options);
+	TDEApplication::addCmdLineOptions();
+	TDEApplication *app = new TerminalHere();
+
+	TDEStartupInfo::appStarted();
+	return app->exec();
+}
+
+#include "terminalhere.moc"
diff --git a/kdesktop/kxdglauncher.h b/konsole/terminalhere/terminalhere.h
similarity index 83%
rename from kdesktop/kxdglauncher.h
rename to konsole/terminalhere/terminalhere.h
index 8f487e88..690e3e4f 100644
--- a/kdesktop/kxdglauncher.h
+++ b/konsole/terminalhere/terminalhere.h
@@ -1,5 +1,4 @@
-/* This file is part of the KDE project
-   Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
+/* This file is part of the TDE project
 
    This library is free software; you can redistribute it and/or
    modify it under the terms of the GNU Library General Public
@@ -17,9 +16,16 @@
    Boston, MA 02110-1301, USA.
 */
 
-#ifndef _MAIN_H
-#define _MAIN_H
+#ifndef _TERMINALHERE_H_
+#define _TERMINALHERE_H_
 
 #include <tdeapplication.h>
 
+
+class TerminalHere : public TDEApplication
+{
+public:
+	TerminalHere();
+};
+
 #endif
diff --git a/ksmserver/shutdowndlg.cpp b/ksmserver/shutdowndlg.cpp
index 6ff1d6cf..cb37bc72 100644
--- a/ksmserver/shutdowndlg.cpp
+++ b/ksmserver/shutdowndlg.cpp
@@ -151,7 +151,7 @@ void KSMShutdownFeedback::slotPaintEffect()
 
 				m_unfadedImage = m_grayImage.copy();
 
-				register uchar * r = m_grayImage.bits();
+				uchar * r = m_grayImage.bits();
 				uchar * end = m_grayImage.bits() + m_grayImage.numBytes();
 
 				while ( r != end ) {
@@ -225,7 +225,7 @@ void KSMShutdownFeedback::slotPaintEffect()
 			{
 				TQImage img( imgWidth, y2-start_y1, 32 );
 				memcpy( img.bits(), m_grayImage.scanLine( start_y1 ), ( y2-start_y1 ) * imgWidth * 4 );
-				register uchar * rd = img.bits();
+				uchar * rd = img.bits();
 				for( int y = start_y1; y < y2; ++y )
 				{
 				// linear gradients look bad, so use cos-function
@@ -255,9 +255,9 @@ void KSMShutdownFeedback::slotPaintEffect()
 
 				m_unfadedImage = m_grayImage.copy();
 
-				register uchar * r = m_grayImage.bits();
-				register uchar * g = m_grayImage.bits() + 1;
-				register uchar * b = m_grayImage.bits() + 2;
+				uchar * r = m_grayImage.bits();
+				uchar * g = m_grayImage.bits() + 1;
+				uchar * b = m_grayImage.bits() + 2;
 				uchar * end = m_grayImage.bits() + m_grayImage.numBytes();
 
 				while ( r != end ) {
@@ -340,12 +340,12 @@ void KSMShutdownFeedback::slotPaintEffect()
 			{
 				TQImage img( imgWidth, y2-start_y1, 32 );
 				memcpy( img.bits(), m_grayImage.scanLine( start_y1 ), ( y2-start_y1 ) * imgWidth * 4 );
-				register uchar * rs = m_unfadedImage.scanLine( start_y1 );
-				register uchar * gs = rs + 1;
-				register uchar * bs = gs + 1;
-				register uchar * rd = img.bits();
-				register uchar * gd = rd + 1;
-				register uchar * bd = gd + 1;
+				uchar * rs = m_unfadedImage.scanLine( start_y1 );
+				uchar * gs = rs + 1;
+				uchar * bs = gs + 1;
+				uchar * rd = img.bits();
+				uchar * gd = rd + 1;
+				uchar * bd = gd + 1;
 				for( int y = start_y1; y < y2; ++y )
 				{
 					// linear gradients look bad, so use cos-function
@@ -395,7 +395,7 @@ void KSMShutdownFeedback::slotPaintEffect()
 
 					m_unfadedImage = m_grayImage.copy();
 
-					register uchar * r = m_grayImage.bits();
+					uchar * r = m_grayImage.bits();
 					uchar * end = m_grayImage.bits() + m_grayImage.numBytes();
 
 					while ( r != end ) {
@@ -468,8 +468,8 @@ void KSMShutdownFeedback::slotPaintEffect()
 				if( y2 > start_y1 ) {
 					TQImage img( imgWidth, y2-start_y1, 32 );
 					memcpy( img.bits(), m_grayImage.scanLine( start_y1 ), ( y2-start_y1 ) * imgWidth * 4 );
-					register uchar * rs = m_unfadedImage.scanLine( start_y1 );
-					register uchar * rd = img.bits();
+					uchar * rs = m_unfadedImage.scanLine( start_y1 );
+					uchar * rd = img.bits();
 					for( int y = start_y1; y < y2; ++y )
 					{
 					// linear gradients look bad, so use cos-function
diff --git a/ksysguard/ksysguardd/FreeBSD/CPU.c b/ksysguard/ksysguardd/FreeBSD/CPU.c
index 90d0c472..0d83cd7f 100644
--- a/ksysguard/ksysguardd/FreeBSD/CPU.c
+++ b/ksysguard/ksysguardd/FreeBSD/CPU.c
@@ -212,15 +212,15 @@ long percentages(cnt, out, new, old, diffs)
 
 int cnt;
 int *out;
-register long *new;
-register long *old;
+long *new;
+long *old;
 long *diffs;
 
 {
-    register int i;
-    register long change;
-    register long total_change;
-    register long *dp;
+    int i;
+    long change;
+    long total_change;
+    long *dp;
     long half_total;
 
     /* initialization */
diff --git a/ksysguard/ksysguardd/Irix/NetDev.c b/ksysguard/ksysguardd/Irix/NetDev.c
index 80bc2b31..403fea6c 100644
--- a/ksysguard/ksysguardd/Irix/NetDev.c
+++ b/ksysguard/ksysguardd/Irix/NetDev.c
@@ -170,7 +170,7 @@ int updateNetDev(void)
 	struct ifstats *istat;
 	struct timeval tv;
 	static LONGLONG timestamp=0;
-	register LONGLONG cts,elapsed;
+	LONGLONG cts,elapsed;
 	//struct ipstat ips;
 
 	if ((s=socket(PF_INET,SOCK_DGRAM,0)) < 0){
diff --git a/ksysguard/ksysguardd/Irix/ProcessList.c b/ksysguard/ksysguardd/Irix/ProcessList.c
index 5bc2230b..cf95b293 100644
--- a/ksysguard/ksysguardd/Irix/ProcessList.c
+++ b/ksysguard/ksysguardd/Irix/ProcessList.c
@@ -150,7 +150,7 @@ static int updateProcess( pid_t pid ) {
 	char		buf[BUFSIZE];
 	prpsinfo_t	psinfo;
 	struct passwd	*pw;
-	register double newCentStamp,timeDiff, usDiff,usTime;
+	double newCentStamp,timeDiff, usDiff,usTime;
 	struct timeval tv;
 
 	if( (ps = findProcessInList( pid )) == NULL ) {
diff --git a/ksysguard/ksysguardd/Irix/cpu.c b/ksysguard/ksysguardd/Irix/cpu.c
index 9fdd25ab..7c013db3 100644
--- a/ksysguard/ksysguardd/Irix/cpu.c
+++ b/ksysguard/ksysguardd/Irix/cpu.c
@@ -212,15 +212,15 @@ long percentages(cnt, out, new, old, diffs)
 
 int cnt;
 int *out;
-register long *new;
-register long *old;
+long *new;
+long *old;
 long *diffs;
 
 {
-    register int i;
-    register long change;
-    register long total_change;
-    register long *dp;
+    int i;
+    long change;
+    long total_change;
+    long *dp;
     long half_total;
 
     /* initialization */
diff --git a/ksysguard/ksysguardd/Linux/netstat.c b/ksysguard/ksysguardd/Linux/netstat.c
index c8570f61..c64b0ffd 100644
--- a/ksysguard/ksysguardd/Linux/netstat.c
+++ b/ksysguard/ksysguardd/Linux/netstat.c
@@ -20,6 +20,8 @@
 
 #include <config.h>
 
+#include <sys/types.h>
+
 #include <arpa/inet.h>
 #include <netdb.h>
 #include <stdio.h>
diff --git a/ksysguard/ksysguardd/OpenBSD/cpu.c b/ksysguard/ksysguardd/OpenBSD/cpu.c
index 2ecf1ed5..3aa09776 100644
--- a/ksysguard/ksysguardd/OpenBSD/cpu.c
+++ b/ksysguard/ksysguardd/OpenBSD/cpu.c
@@ -159,15 +159,15 @@ long percentages(cnt, out, new, old, diffs)
 
 int cnt;
 int *out;
-register long *new;
-register long *old;
+long *new;
+long *old;
 long *diffs;
 
 {
-    register int i;
-    register long change;
-    register long total_change;
-    register long *dp;
+    int i;
+    long change;
+    long total_change;
+    long *dp;
     long half_total;
 
     /* initialization */
diff --git a/libkonq/favicons/favicons.desktop b/libkonq/favicons/favicons.desktop
index a266a74f..a108351e 100644
--- a/libkonq/favicons/favicons.desktop
+++ b/libkonq/favicons/favicons.desktop
@@ -13,7 +13,7 @@ Name[cs]=Modul KDEDu Favicon
 Name[csb]=Ikònczi serwerów
 Name[cy]=Modiwl KDED Favicon
 Name[da]=KDED Favicon-modul
-Name[de]=Webseitensymbol-Verwaltung
+Name[de]=Internetseitensymbol-Verwaltung
 Name[el]=KDED άρθρωμα Favicon
 Name[eo]=Modulo por interretaj piktogramoj
 Name[es]=Módulo Favicon de KDED
@@ -86,7 +86,7 @@ Comment[ca]=Suport de dreceres d'icona
 Comment[cs]=Podpora ikon zkratek
 Comment[csb]=Òbsłużënk ikònów serwerów
 Comment[da]=Genvejsikonstøtte
-Comment[de]=Unterstützung für Webseitensymbole ("Favicons") in KDED
+Comment[de]=Unterstützung für Internetseitensymbole in KDED
 Comment[el]=υποστήριξη εικονιδίων Συντόμευσης
 Comment[eo]=Subteno por klavkombinaj piktogramoj
 Comment[es]=Soporte para iconos de acceso directo
diff --git a/libkonq/tdefileivi.cc b/libkonq/tdefileivi.cc
index 2e23cfbf..fa3a9557 100644
--- a/libkonq/tdefileivi.cc
+++ b/libkonq/tdefileivi.cc
@@ -386,18 +386,7 @@ void KFileIVI::returnPressed()
     if ( static_cast<KonqIconViewWidget*>(iconView())->isDesktop() ) {
         KURL url = m_fileitem->url();
         if (url.protocol() == "media") {
-            // The user reasonably expects to be placed within the media:/ tree
-            // when opening a media device from the desktop
-            KService::Ptr service = KService::serviceByDesktopName("konqueror");
-            if (service) {
-                // HACK
-                // There doesn't seem to be a way to prevent KRun from resolving the URL to its
-                // local path, so simpy launch Konqueror with the correct arguments instead...
-                KRun::runCommand("konqueror " + url.url(), "konqueror", service->icon());
-            }
-            else {
-                (void) new KRun( url, m_fileitem->mode(), m_fileitem->isLocalFile() );
-            }
+            (void) new KRun( url, m_fileitem->mode(), m_fileitem->isLocalFile() );
         }
         else {
             // When clicking on a link to e.g. $HOME from the desktop, we want to open $HOME
diff --git a/pics/crystalsvg/cr128-app-package_games_logic.png b/pics/crystalsvg/cr128-app-package_games_logic.png
new file mode 100644
index 00000000..5f4790b5
Binary files /dev/null and b/pics/crystalsvg/cr128-app-package_games_logic.png differ
diff --git a/pics/crystalsvg/cr16-app-package_games_logic.png b/pics/crystalsvg/cr16-app-package_games_logic.png
new file mode 100644
index 00000000..60889313
Binary files /dev/null and b/pics/crystalsvg/cr16-app-package_games_logic.png differ
diff --git a/pics/crystalsvg/cr22-app-package_games_logic.png b/pics/crystalsvg/cr22-app-package_games_logic.png
new file mode 100644
index 00000000..c8d4f40e
Binary files /dev/null and b/pics/crystalsvg/cr22-app-package_games_logic.png differ
diff --git a/pics/crystalsvg/cr32-app-package_games_logic.png b/pics/crystalsvg/cr32-app-package_games_logic.png
new file mode 100644
index 00000000..29588e69
Binary files /dev/null and b/pics/crystalsvg/cr32-app-package_games_logic.png differ
diff --git a/pics/crystalsvg/cr48-app-package_games_logic.png b/pics/crystalsvg/cr48-app-package_games_logic.png
new file mode 100644
index 00000000..e1bd869a
Binary files /dev/null and b/pics/crystalsvg/cr48-app-package_games_logic.png differ
diff --git a/pics/crystalsvg/cr64-app-package_games_logic.png b/pics/crystalsvg/cr64-app-package_games_logic.png
new file mode 100644
index 00000000..a7b01526
Binary files /dev/null and b/pics/crystalsvg/cr64-app-package_games_logic.png differ
diff --git a/r14-xdg-update b/r14-xdg-update
index 762062d8..e9f4ab73 100644
--- a/r14-xdg-update
+++ b/r14-xdg-update
@@ -2,8 +2,8 @@
 #
 # A script to perform R14.0.0 XDG compliance updates.
 
-SCRIPT_NAME="`basename \`readlink -f $0\``"
-SCRIPT_VERSION=201811010
+SCRIPT_NAME="$(basename -- "$0")"
+SCRIPT_VERSION=202003170
 
 # This script should be needed to run only once, but corner cases
 # and file/directory permissions could cause incomplete updates.
@@ -18,24 +18,25 @@ SCRIPT_VERSION=201811010
 
 Wait_For_Response () {
 unset response
-# -r Backslash does not act as an escape character.
-# -p Display "PROMPT" without a trailing newline, before attempting to read any input.
 while true; do
-  read -r -p "$1 (y/n): " yn
-  case $yn in
-    [Yy]* ) response=y; break;;
-    [Nn]* ) response=n; break;;
-    * ) echo "Please answer yes (y/Y) or no (n/N).";;
+  printf "%s" "$1 (y/n): " > /dev/tty
+  IFS= read -r ANSWER < /dev/tty || exit 1;
+  case $ANSWER in
+    y* | Y* ) response=y; break;;
+    n* | N* ) response=n; break;;
+    * ) echo "Please answer yes (y/Y) or no (n/N)." > /dev/tty;;
   esac
 done
+unset ANSWER
 }
 
 Proceed_From_Response () {
-if [ "$response" = "n" -o "$response" = "N" ]; then
+if [ "$response" = "n" ]; then
   echo "Exiting."
   echo
   exit 0
 else
+  unset response
   echo "Continuing."
   echo
 fi
@@ -126,9 +127,10 @@ fi
 # To determine that location use the following method rather than presuming
 # the existence of $TDEDIR. That environment variable might not be
 # defined or defined to point to KDE4 binaries.
-BIN_DIR="`dirname \`readlink -f $0\``"
+BIN_DIR="$(dirname -- "$0")"
+
 if [ -x $BIN_DIR/tde-config ]; then
-  TDEDIR=${BIN_DIR%/bin}
+  TDEDIR="${BIN_DIR%/bin}"
 else
   MESSAGE="Unable to determine the TDE bin directory, where this script should be installed."
   # Are we in X? Display an X dialog explaining breakage.
@@ -1053,7 +1055,7 @@ fi
 TEST_NUM="4"
 R14_UPDATE_TEST4=""
 if [ -r "$PROFILE_DIR/share/config/khotkeysrc" ]; then
-  grep "CommandURL=kde-" "$PROFILE_DIR/share/config/khotkeysrc" &>${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt
+  grep "CommandURL=kde-" "$PROFILE_DIR/share/config/khotkeysrc" > ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt 2>&1
   if [ -s ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt ]; then
     R14_UPDATE_TEST4="failed"
     MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\nCheck khotkeysrc for 'CommandURL=kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt. "
@@ -1064,7 +1066,7 @@ fi
 TEST_NUM="5"
 R14_UPDATE_TEST5=""
 if [ -r "$PROFILE_DIR/share/config/khotkeysrc" ]; then
-  grep "K Menu - kde-" "$PROFILE_DIR/share/config/khotkeysrc" &>${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt
+  grep "K Menu - kde-" "$PROFILE_DIR/share/config/khotkeysrc" > ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt 2>&1
   if [ -s ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt ]; then
     R14_UPDATE_TEST5="failed"
     MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\nCheck khotkeysrc for 'K Menu - kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt. "
@@ -1076,7 +1078,7 @@ fi
 TEST_NUM="6"
 R14_UPDATE_TEST6=""
 if [ -r $PROFILE_DIR/share/config/profilerc ]; then
-  grep "Application=kde-" "$PROFILE_DIR/share/config/profilerc" &>${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt
+  grep "Application=kde-" "$PROFILE_DIR/share/config/profilerc" > ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt 2>&1
   if [ -s ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt ]; then
     R14_UPDATE_TEST6="failed"
     MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\nCheck profilerc for 'Application=kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt. "
@@ -1088,7 +1090,7 @@ fi
 TEST_NUM="7"
 R14_UPDATE_TEST7=""
 if [ -r $PROFILE_DIR/share/config/kickerrc ]; then
-  grep "StorageId\[\$e\]=kde-" "$PROFILE_DIR/share/config/kickerrc" &>${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt
+  grep "StorageId\[\$e\]=kde-" "$PROFILE_DIR/share/config/kickerrc" > ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt 2>&1
   if [ -s ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt ]; then
     R14_UPDATE_TEST7="failed"
     MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\nCheck kickerrc for 'StorageId[$e]=kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt. "
@@ -1100,7 +1102,7 @@ fi
 TEST_NUM="8"
 R14_UPDATE_TEST8=""
 if [ "$QUICK_LAUNCH_CONFIG" != "" ]; then
-  grep "kde-" "$PROFILE_DIR/share/config/$QUICK_LAUNCH_CONFIG" &>${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt
+  grep "kde-" "$PROFILE_DIR/share/config/$QUICK_LAUNCH_CONFIG" > ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt 2>&1
   if [ -s ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt ]; then
     R14_UPDATE_TEST8="failed"
     MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\nCheck $QUICK_LAUNCH_CONFIG for 'kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt. "
@@ -1112,7 +1114,7 @@ fi
 TEST_NUM="9"
 R14_UPDATE_TEST9=""
 if [ -r $USER_DIR/.config/menus/applications-tdemenuedit.menu ]; then
-  grep "<Filename>kde-" "$USER_DIR/.config/menus/applications-tdemenuedit.menu" &>${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt
+  grep "<Filename>kde-" "$USER_DIR/.config/menus/applications-tdemenuedit.menu" > ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt 2>&1
   if [ -s ${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt ]; then
     R14_UPDATE_TEST9="failed"
     MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\nCheck applications-tdemenuedit.menu for '<Filename>kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-validation-test${TEST_NUM}.txt. "
diff --git a/starttde b/starttde
index ba025d81..899bdfa9 100755
--- a/starttde
+++ b/starttde
@@ -9,10 +9,10 @@
 # Multiple sourcing is not a problem when the files are only
 # containers for environment variables and such.
 if [ -r /etc/xprofile ]; then
-  source /etc/xprofile
+  . /etc/xprofile
 fi
 if [ -r $HOME/.xprofile ]; then
-  source $HOME/.xprofile
+  . $HOME/.xprofile
 fi
 
 # Some functions to parse and check path correctly ...
@@ -68,6 +68,15 @@ remove_from_path() {
   eval export $var=${NPATH#:}
 }
 
+# Portable alternative to the file operator -nt (among shells)
+is_newer() {
+  if test -n "$(find $1 -prune -newer $2 -print)"
+  then
+    return 0
+  fi
+  return 1
+}
+
 echo "[starttde] Starting starttde." 1>&2
 echo "[starttde] This script is $0" 1>&2
 
@@ -78,11 +87,28 @@ echo "[starttde] This script is $0" 1>&2
 # To determine that location use the following method rather than presuming
 # the existence of $TDEDIR. That environment variable might not be
 # defined or defined to point to KDE4 binaries.
-BIN_DIR="`dirname \`readlink -f $0\``"
-if [ -x $BIN_DIR/tde-config ]; then
-  TDE_VERSION=$($BIN_DIR/tde-config --version | while IFS=: read a b; do [ "${a#TDE}" != "$a" ] && echo $b; done)
+BIN_DIR=""
+
+# Let's check if this script is called from the Debian alternatives
+# See: https://wiki.debian.org/DebianAlternatives
+if [ "$(readlink -- "$0")" = "/etc/alternatives/x-session-manager" ]
+then
+  # Check if it is not a dangling symlink
+  if [ -L "/etc/alternatives/x-session-manager" ] && \
+     [ -e "/etc/alternatives/x-session-manager" ]
+  then
+    # Determine location by reading the alternative symlink
+    BIN_DIR="$(readlink -- "/etc/alternatives/x-session-manager")"
+    BIN_DIR="$(dirname -- "$BIN_DIR")"
+  fi
+fi
+# Assign a default value if 'BIN_DIR' is unset or null
+BIN_DIR="${BIN_DIR:=$(dirname -- "$0")}"
+
+if [ -x ${BIN_DIR}/tde-config ]; then
+  TDE_VERSION="$( ${BIN_DIR}/tde-config --version | sed -n 's|^TDE: ||p' )"
+  TDEDIR="${BIN_DIR%/bin}"
   echo "[starttde] TDE version is $TDE_VERSION" 1>&2
-  export TDEDIR=${BIN_DIR%/bin}
   echo "[starttde] TDE base directory is $TDEDIR" 1>&2
 else
   echo "[starttde] Unable to determine the TDE bin directory, where this script should be installed."
@@ -90,7 +116,8 @@ else
   echo "[starttde] Exiting."
   exit 1
 fi
-unset BIN_DIR
+unset BIN_DIR TDE_VERSION
+export TDEDIR
 
 # When the X server dies we get a HUP signal from xinit. We must ignore it
 # because we still need to do some cleanup.
@@ -161,7 +188,7 @@ else
   # Default value: $HOME/.trinity. Most users will use this.
   export TDEHOME=$HOME/.trinity
 
-  if [ ! -d $HOME/.trinity ] && [ ! -f /usr/bin/kde4-config ] && [ "$TDEDIR"="/usr" ] && [ -d $HOME/.kde ]; then
+  if [ ! -d $HOME/.trinity ] && [ ! -f /usr/bin/kde4-config ] && [ "$TDEDIR" = "/usr" ] && [ -d $HOME/.kde ]; then
     # Looks like Trinity is installed and not playing second fiddle to KDE4.
     export TDEHOME=$HOME/.kde
   fi
@@ -192,7 +219,7 @@ fi
     fi
   fi
 
-  if ! is_in_path PATH "$TDEDIR/bin" ]; then
+  if ! is_in_path PATH "$TDEDIR/bin" ; then
     # Respect the traditional path order. Don't blindly place $TDEDIR/bin
     # first in the path. Only place $TDEDIR/bin before /usr/bin. This order is
     # consistent with tdelibs/tdesu/stub.cpp. If packagers are adding $TDEDIR/bin
@@ -689,10 +716,14 @@ EXIT_CODE="$?"
 
 # Remove moodin cache if we have a new wallpaper installed, jriddell. Distro-specific.
 if [ -d "$tdehome/share/apps/ksplash/cache/Moodin/kubuntu" ]; then
-  if [ /usr/share/wallpapers/kubuntu-wallpaper.png -nt "$tdehome/share/apps/ksplash/cache/Moodin/kubuntu/" ]; then
+  if is_newer /usr/share/wallpapers/kubuntu-wallpaper.png \
+              "$tdehome/share/apps/ksplash/cache/Moodin/kubuntu/"
+  then
     rm -rf "$tdehome/share/apps/ksplash/cache/Moodin/kubuntu/"
   fi
 fi
+# The is_newer function will no longer be used, so we unset it
+unset is_newer
 
 if test -z "$dl"; then
   # The splashscreen and progress indicator.
diff --git a/release_notes b/tde_release_notes
similarity index 53%
rename from release_notes
rename to tde_release_notes
index 9d89732c..bd4e27e0 100644
--- a/release_notes
+++ b/tde_release_notes
@@ -8,7 +8,7 @@
 # When the release version increments, this script will detect the
 # difference through tde-config and a respective key in kdeglobals.
 # This script then will open the release notes for that next release.
-# The only file to update is: tdebase/doc/releasenotes/release_notes.docbook.
+# The only file to update is: tdebase/doc/releasenotes/index.docbook.
 
 # As this script is run as a global TDE autostart app, all
 # environment variables should already be set.
@@ -17,19 +17,19 @@ if [ "$TDEDIR" = "" ] || [ "$TDEHOME" = "" ]; then
   exit 1
 fi
 
-RELEASE_VERSION=`$TDEDIR/bin/tde-config --version | grep TDE: | awk '{print $2}'`
-RELEASE_NOTES=`$TDEDIR/bin/kreadconfig --file $TDEHOME/share/config/kdeglobals --group "Release Notes" --key "$RELEASE_VERSION"`
+RELEASE_VERSION="$( ${TDEDIR}/bin/tde-config --version | sed -n 's|^TDE: ||p' )"
+RELEASE_NOTES="$( ${TDEDIR}/bin/kreadconfig --file ${TDEHOME}/share/config/kdeglobals --group "Release Notes" --key "$RELEASE_VERSION" )"
+
 if [ "$RELEASE_NOTES" = "" ] || [ "$RELEASE_NOTES" != "true" ]; then
   echo "[release_notes] Release version: $RELEASE_VERSION"
   echo "[release_notes] Release notes: $RELEASE_NOTES"
-  $TDEDIR/bin/khelpcenter help:/khelpcenter/releasenotes
-  if [ "$?" = "0" ]; then
-    $TDEDIR/bin/kwriteconfig --file $TDEHOME/share/config/kdeglobals --group "Release Notes" --key "$RELEASE_VERSION" --type bool "true"
+  if ${TDEDIR}/bin/khelpcenter help:/khelpcenter/releasenotes ; then
+    ${TDEDIR}/bin/kwriteconfig --file ${TDEHOME}/share/config/kdeglobals --group "Release Notes" --key "$RELEASE_VERSION" --type bool "true"
   fi
-  RELEASE_NOTES=`$TDEDIR/bin/kreadconfig --file $TDEHOME/share/config/kdeglobals --group "Release Notes" --key "$RELEASE_VERSION"`
+  RELEASE_NOTES="$( ${TDEDIR}/bin/kreadconfig --file ${TDEHOME}/share/config/kdeglobals --group "Release Notes" --key "$RELEASE_VERSION" )"
   echo "[release_notes] Release notes: $RELEASE_NOTES"
 fi
 
-unset RELEASE_NOTES
-unset RELEASE_VERSION
+unset RELEASE_NOTES RELEASE_VERSION
 exit 0
+
diff --git a/tdeioslave/media/mediamanager/mediabackend.desktop b/tdeioslave/media/mediamanager/mediabackend.desktop
index d9ef2193..54e372e8 100644
--- a/tdeioslave/media/mediamanager/mediabackend.desktop
+++ b/tdeioslave/media/mediamanager/mediabackend.desktop
@@ -4,4 +4,4 @@ X-DCOP-ServiceType=wait
 Type=Service
 X-TDE-StartupNotify=false
 OnlyShowIn=TDE;
-X-TDE-autostart-phase=1
+X-TDE-autostart-phase=0
diff --git a/tdeioslave/media/mediamanager/mediamanager.desktop b/tdeioslave/media/mediamanager/mediamanager.desktop
index e189bd9d..0839dbe3 100644
--- a/tdeioslave/media/mediamanager/mediamanager.desktop
+++ b/tdeioslave/media/mediamanager/mediamanager.desktop
@@ -1,6 +1,14 @@
 [Desktop Entry]
 Type=Service
 Name=KDED Media Manager
+X-TDE-ServiceTypes=KDEDModule
+X-TDE-ModuleType=Library
+X-TDE-Library=mediamanager
+X-TDE-FactoryName=mediamanager
+X-TDE-Kded-autoload=false
+X-TDE-Kded-load-on-demand=false
+X-TDE-Kded-phase=1
+
 Name[af]=KDED Media Bestuurder
 Name[ar]=مسيير الوسائط KDED
 Name[az]=KDED Mediya İdarəcisi
@@ -68,6 +76,7 @@ Name[vi]=Trình quản lí Ổ lưu trữ KDED
 Name[wa]=Manaedjeu di fitchîs KDED
 Name[zh_CN]=KDED 介质管理器
 Name[zh_TW]=KDED 媒體管理程式
+
 Comment=Keep track of media activities and allow to (un)mount (media:/)
 Comment[af]=Hou tred van media aktiwiteite en laat die (ont)koppel van 'media:/' toe
 Comment[ar]=يتتبع نشاطات الوسائط و يسمح بتكيبها/إزالة تركيبها (media:/)
@@ -132,10 +141,3 @@ Comment[vi]=Theo dõi các hoạt động của ổ lưu trữ và cho phép l
 Comment[wa]=Wåde li trace des activités media eyet permete di (dis)monter (media:/)
 Comment[zh_CN]=跟踪介质活动并允许挂载或卸载(media:/)
 Comment[zh_TW]=持續追蹤媒體活動並允許(解除)掛載 (media:/)
-X-TDE-ServiceTypes=KDEDModule
-X-TDE-ModuleType=Library
-X-TDE-Library=mediamanager
-X-TDE-FactoryName=mediamanager
-X-TDE-Kded-autoload=true
-X-TDE-Kded-load-on-demand=true
-X-TDE-Kded-phase=1
diff --git a/tdeioslave/nfs/mount_xdr.c b/tdeioslave/nfs/mount_xdr.c
index 38a43ca2..2eb0bf41 100644
--- a/tdeioslave/nfs/mount_xdr.c
+++ b/tdeioslave/nfs/mount_xdr.c
@@ -47,7 +47,7 @@ bool_t
 xdr_fhandle(XDR *xdrs, fhandle objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_opaque(xdrs, objp, FHSIZE)) {
 		 return (FALSE);
@@ -59,7 +59,7 @@ bool_t
 xdr_fhstatus(XDR *xdrs, fhstatus *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_u_int(xdrs, &objp->fhs_status)) {
 		 return (FALSE);
@@ -80,7 +80,7 @@ bool_t
 xdr_dirpath(XDR *xdrs, dirpath *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_string(xdrs, objp, MNTPATHLEN)) {
 		 return (FALSE);
@@ -92,7 +92,7 @@ bool_t
 xdr_name(XDR *xdrs, name *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_string(xdrs, objp, MNTNAMLEN)) {
 		 return (FALSE);
@@ -104,7 +104,7 @@ bool_t
 xdr_mountlist(XDR *xdrs, mountlist *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct mountbody), (xdrproc_t)xdr_mountbody)) {
 		 return (FALSE);
@@ -116,7 +116,7 @@ bool_t
 xdr_mountbody(XDR *xdrs, mountbody *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_name(xdrs, &objp->ml_hostname)) {
 		 return (FALSE);
@@ -134,7 +134,7 @@ bool_t
 xdr_groups(XDR *xdrs, groups *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct groupnode), (xdrproc_t)xdr_groupnode)) {
 		 return (FALSE);
@@ -146,7 +146,7 @@ bool_t
 xdr_groupnode(XDR *xdrs, groupnode *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_name(xdrs, &objp->gr_name)) {
 		 return (FALSE);
@@ -161,7 +161,7 @@ bool_t
 xdr_exports(XDR *xdrs, exports *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_pointer(xdrs, (char **)objp, sizeof(struct exportnode), (xdrproc_t)xdr_exportnode)) {
 		 return (FALSE);
@@ -173,7 +173,7 @@ bool_t
 xdr_exportnode(XDR *xdrs, exportnode *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_dirpath(xdrs, &objp->ex_dir)) {
 		 return (FALSE);
@@ -191,7 +191,7 @@ bool_t
 xdr_ppathcnf(XDR *xdrs, ppathcnf *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 int i=i;
 
@@ -240,7 +240,7 @@ xdr_ppathcnf(XDR *xdrs, ppathcnf *objp)
 
 	  }
 	  else {
-		{ register short *genp; 
+		{ short *genp; 
 		  for ( i = 0,genp=objp->pc_mask;
  			i < 2; i++){
 				 IXDR_PUT_SHORT(buf,*genp++);
@@ -294,7 +294,7 @@ xdr_ppathcnf(XDR *xdrs, ppathcnf *objp)
 
 	  }
 	  else {
-		{ register short *genp; 
+		{ short *genp; 
 		  for ( i = 0,genp=objp->pc_mask;
  			i < 2; i++){
 				 *genp++ = IXDR_GET_SHORT(buf);
diff --git a/tdeioslave/nfs/nfs_prot_xdr.c b/tdeioslave/nfs/nfs_prot_xdr.c
index 57d44648..71d2a58b 100644
--- a/tdeioslave/nfs/nfs_prot_xdr.c
+++ b/tdeioslave/nfs/nfs_prot_xdr.c
@@ -47,7 +47,7 @@ bool_t
 xdr_nfsstat(XDR *xdrs, nfsstat *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_enum(xdrs, (enum_t *)objp)) {
 		 return (FALSE);
@@ -59,7 +59,7 @@ bool_t
 xdr_ftype(XDR *xdrs, ftype *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_enum(xdrs, (enum_t *)objp)) {
 		 return (FALSE);
@@ -71,7 +71,7 @@ bool_t
 xdr_nfs_fh(XDR *xdrs, nfs_fh *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 int i=i;
 	 if (!xdr_opaque(xdrs, objp->data, NFS_FHSIZE)) {
@@ -84,7 +84,7 @@ bool_t
 xdr_nfstime(XDR *xdrs, nfstime *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_u_int(xdrs, &objp->seconds)) {
 		 return (FALSE);
@@ -99,7 +99,7 @@ bool_t
 xdr_fattr(XDR *xdrs, fattr *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 
 	 if (xdrs->x_op == XDR_ENCODE) {
@@ -274,7 +274,7 @@ bool_t
 xdr_sattr(XDR *xdrs, sattr *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 
 	 if (xdrs->x_op == XDR_ENCODE) {
@@ -365,7 +365,7 @@ bool_t
 xdr_filename(XDR *xdrs, filename *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_string(xdrs, objp, NFS_MAXNAMLEN)) {
 		 return (FALSE);
@@ -377,7 +377,7 @@ bool_t
 xdr_nfspath(XDR *xdrs, nfspath *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_string(xdrs, objp, NFS_MAXPATHLEN)) {
 		 return (FALSE);
@@ -389,7 +389,7 @@ bool_t
 xdr_attrstat(XDR *xdrs, attrstat *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfsstat(xdrs, &objp->status)) {
 		 return (FALSE);
@@ -410,7 +410,7 @@ bool_t
 xdr_sattrargs(XDR *xdrs, sattrargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfs_fh(xdrs, &objp->file)) {
 		 return (FALSE);
@@ -425,7 +425,7 @@ bool_t
 xdr_diropargs(XDR *xdrs, diropargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfs_fh(xdrs, &objp->dir)) {
 		 return (FALSE);
@@ -440,7 +440,7 @@ bool_t
 xdr_diropokres(XDR *xdrs, diropokres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfs_fh(xdrs, &objp->file)) {
 		 return (FALSE);
@@ -455,7 +455,7 @@ bool_t
 xdr_diropres(XDR *xdrs, diropres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfsstat(xdrs, &objp->status)) {
 		 return (FALSE);
@@ -476,7 +476,7 @@ bool_t
 xdr_readlinkres(XDR *xdrs, readlinkres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfsstat(xdrs, &objp->status)) {
 		 return (FALSE);
@@ -497,7 +497,7 @@ bool_t
 xdr_readargs(XDR *xdrs, readargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfs_fh(xdrs, &objp->file)) {
 		 return (FALSE);
@@ -518,7 +518,7 @@ bool_t
 xdr_readokres(XDR *xdrs, readokres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_fattr(xdrs, &objp->attributes)) {
 		 return (FALSE);
@@ -533,7 +533,7 @@ bool_t
 xdr_readres(XDR *xdrs, readres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfsstat(xdrs, &objp->status)) {
 		 return (FALSE);
@@ -554,7 +554,7 @@ bool_t
 xdr_writeargs(XDR *xdrs, writeargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 
 	 if (xdrs->x_op == XDR_ENCODE) {
@@ -634,7 +634,7 @@ bool_t
 xdr_createargs(XDR *xdrs, createargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_diropargs(xdrs, &objp->where)) {
 		 return (FALSE);
@@ -649,7 +649,7 @@ bool_t
 xdr_renameargs(XDR *xdrs, renameargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_diropargs(xdrs, &objp->from)) {
 		 return (FALSE);
@@ -664,7 +664,7 @@ bool_t
 xdr_linkargs(XDR *xdrs, linkargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfs_fh(xdrs, &objp->from)) {
 		 return (FALSE);
@@ -679,7 +679,7 @@ bool_t
 xdr_symlinkargs(XDR *xdrs, symlinkargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_diropargs(xdrs, &objp->from)) {
 		 return (FALSE);
@@ -697,7 +697,7 @@ bool_t
 xdr_nfscookie(XDR *xdrs, nfscookie objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_opaque(xdrs, objp, NFS_COOKIESIZE)) {
 		 return (FALSE);
@@ -709,7 +709,7 @@ bool_t
 xdr_readdirargs(XDR *xdrs, readdirargs *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfs_fh(xdrs, &objp->dir)) {
 		 return (FALSE);
@@ -727,7 +727,7 @@ bool_t
 xdr_entry(XDR *xdrs, entry *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_u_int(xdrs, &objp->fileid)) {
 		 return (FALSE);
@@ -748,7 +748,7 @@ bool_t
 xdr_dirlist(XDR *xdrs, dirlist *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_pointer(xdrs, (char **)&objp->entries, sizeof(entry), (xdrproc_t)xdr_entry)) {
 		 return (FALSE);
@@ -763,7 +763,7 @@ bool_t
 xdr_readdirres(XDR *xdrs, readdirres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfsstat(xdrs, &objp->status)) {
 		 return (FALSE);
@@ -784,7 +784,7 @@ bool_t
 xdr_statfsokres(XDR *xdrs, statfsokres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 
 	 if (xdrs->x_op == XDR_ENCODE) {
@@ -868,7 +868,7 @@ bool_t
 xdr_statfsres(XDR *xdrs, statfsres *objp)
 {
 
-	 register int32_t *buf=buf;
+	 int32_t *buf=buf;
 
 	 if (!xdr_nfsstat(xdrs, &objp->status)) {
 		 return (FALSE);
diff --git a/tdeioslave/system/entries/documents.desktop b/tdeioslave/system/entries/documents.desktop
index 901b217f..c720f04e 100644
--- a/tdeioslave/system/entries/documents.desktop
+++ b/tdeioslave/system/entries/documents.desktop
@@ -1,6 +1,6 @@
 [Desktop Entry]
 Type=Link
-URL=$( kxdglauncher --getpath --xdgname DOCUMENTS )
+URL=$XDG_DOCUMENTS_DIR
 Icon=folder_man
 Name=Documents Folder
 Name[af]=Dokument Gids
diff --git a/tdeprint/kjobviewer/CMakeLists.txt b/tdeprint/kjobviewer/CMakeLists.txt
index 14ba1dfd..12c0b255 100644
--- a/tdeprint/kjobviewer/CMakeLists.txt
+++ b/tdeprint/kjobviewer/CMakeLists.txt
@@ -26,6 +26,7 @@ link_directories(
 
 tde_install_icons( kjobviewer )
 install( FILES kjobviewer.desktop DESTINATION ${XDG_APPS_INSTALL_DIR} )
+install( FILES kjobviewer-autostart.desktop DESTINATION ${AUTOSTART_INSTALL_DIR} )
 install( FILES kjobviewerui.rc DESTINATION ${DATA_INSTALL_DIR}/kjobviewer )
 
 
diff --git a/tdeprint/kjobviewer/kjobviewer-autostart.desktop b/tdeprint/kjobviewer/kjobviewer-autostart.desktop
new file mode 100644
index 00000000..4213729a
--- /dev/null
+++ b/tdeprint/kjobviewer/kjobviewer-autostart.desktop
@@ -0,0 +1,96 @@
+[Desktop Entry]
+Exec=kjobviewer --all --noshow %i %m
+Icon=kjobviewer
+Terminal=false
+Type=Application
+
+Name=KJobViewer
+Name[bn]=কে-জব-ভিউয়ার
+Name[csb]=Przezérnik pòlétów drëkera
+Name[cy]=KGwelyddSwyddi
+Name[ja]=K ジョブビューア
+Name[nds]=Opgavenkieker
+Name[ne]=KJob दर्शक
+Name[pl]=Przeglądarka zadań drukowania
+Name[pt_BR]=Trabalhos de Impressão
+Name[ro]=Vizualizor lucrări de tipărit
+Name[rw]=K-IkigaragazaUmurimo
+Name[sk]=Prehliadač úloh
+Name[sv]=K-jobbvisare
+Name[ta]=கேபணி காட்சியாளன்
+Name[tg]=Намоишгари корҳо
+Name[vi]=Trình theo dõi Tác vụ In ấn
+GenericName=Print Jobs
+GenericName[af]=Drukker Werke
+GenericName[be]=Заданні друку
+GenericName[bg]=Задания за печат
+GenericName[bn]=মুদ্রণ তালিকা
+GenericName[bs]=Zadaci štampe
+GenericName[ca]=Treballs d'impressió
+GenericName[cs]=Tiskové úlohy
+GenericName[csb]=Pòlétë drëkera
+GenericName[cy]=Swyddi Argraffu
+GenericName[da]=Udskriv job
+GenericName[de]=Druckaufträge
+GenericName[el]=Εργασίες εκτύπωσης
+GenericName[eo]=Printtaskoj
+GenericName[es]=Trabajos de impresión
+GenericName[et]=Printeri tööd
+GenericName[eu]=Inprimaketa lanak
+GenericName[fa]=چاپ کارها
+GenericName[fi]=Tulostustyöt
+GenericName[fr]=Tâches d'impressions
+GenericName[fy]=printtaken
+GenericName[ga]=Jabanna Priontála
+GenericName[gl]=Traballos de Impresión
+GenericName[he]=עבודות הדפסה
+GenericName[hr]=Zadaci ispisivanja
+GenericName[hu]=Nyomtatási feladatok
+GenericName[is]=Prentverk
+GenericName[it]=Lavori di stampa
+GenericName[ja]=印刷ジョブ
+GenericName[ka]=ბეჭდვის დავალება
+GenericName[kk]=Басып шығару тапсырмалары
+GenericName[km]=ការងារ​បោះពុម្ព
+GenericName[lt]=Spausdinimo užduotys
+GenericName[mk]=Задачи за печатење
+GenericName[ms]=Cetak Kerja
+GenericName[nb]=Utskriftsjobber
+GenericName[nds]=Druckopgaven
+GenericName[ne]=मुद्रण कार्य
+GenericName[nl]=Afdruktaken
+GenericName[nn]=Utskriftsjobbar
+GenericName[pa]=ਛਪਾਈ ਕੰਮ
+GenericName[pl]=Zadania drukowania
+GenericName[pt]=Tarefas de Impressão
+GenericName[pt_BR]=Tarefas de Impressão
+GenericName[ro]=Lucrări de tipărit
+GenericName[ru]=Задания печати
+GenericName[rw]=Gucapa Imirimo
+GenericName[se]=Čálihanbarggut
+GenericName[sk]=Tlačové úlohy
+GenericName[sl]=Tiskalniška opravila
+GenericName[sr]=Послови штампе
+GenericName[sr@Latn]=Poslovi štampe
+GenericName[sv]=Skrivarjobb
+GenericName[ta]=அச்சுப் பணிகள்
+GenericName[te]=ప్రచురణ పనులు
+GenericName[tg]=Корҳои чопгар
+GenericName[th]=งานพิมพ์
+GenericName[tr]=Yazdırma Görevleri
+GenericName[tt]=Bastıru Eşläre
+GenericName[uk]=Задачі друку
+GenericName[uz]=Bosib chiqarish vazifalari
+GenericName[uz@cyrillic]=Босиб чиқариш вазифалари
+GenericName[vi]=Tác vụ In ấn
+GenericName[wa]=Bouyes d' imprimaedje
+GenericName[zh_CN]=打印任务
+GenericName[zh_TW]=列印工作
+
+X-DCOP-ServiceType=Unique
+X-TDE-autostart-after=panel
+X-TDE-autostart-condition=tdeprintrc:Jobs:KeepWindow:true
+X-TDE-autostart-phase=1
+X-TDE-StartupNotify=false
+Categories=Qt;TDE;Utility;Printing;HardwareSettings;TrayIcon;
+ShowOnlyIn=TDE;
diff --git a/tdeprint/kjobviewer/kjobviewer.cpp b/tdeprint/kjobviewer/kjobviewer.cpp
index 393cd1c9..cdf1fc22 100644
--- a/tdeprint/kjobviewer/kjobviewer.cpp
+++ b/tdeprint/kjobviewer/kjobviewer.cpp
@@ -94,6 +94,9 @@ KJobViewerApp::KJobViewerApp() : KUniqueApplication()
 	m_views.setAutoDelete(true);
 	m_tray = 0;
 	m_timer = 0;
+
+	// We handle autostart via standard autostart-enabled .desktop file instead of the session manager
+	disableSessionManagement();
 }
 
 KJobViewerApp::~KJobViewerApp()
diff --git a/tdm/backend/auth.c b/tdm/backend/auth.c
index b9288178..9698816a 100644
--- a/tdm/backend/auth.c
+++ b/tdm/backend/auth.c
@@ -393,7 +393,7 @@ SetLocalAuthorization( struct display *d )
 void
 SetAuthorization( struct display *d )
 {
-	register Xauth **auth = d->authorizations;
+	Xauth **auth = d->authorizations;
 	int i;
 
 	for (i = 0; i < d->authNum; i++) {
@@ -925,7 +925,7 @@ DefineSelf( int fd, int file, int auth, int *ok )
 	int family;
 
 	struct utsname name;
-	register struct hostent  *hp;
+	struct hostent  *hp;
 
 	union {
 		struct sockaddr   sa;
diff --git a/tdm/backend/choose.c b/tdm/backend/choose.c
index ead84122..e6624986 100644
--- a/tdm/backend/choose.c
+++ b/tdm/backend/choose.c
@@ -550,7 +550,7 @@ registerBroadcastForPing( void )
 	                  BROADCAST_QUERY );
 #else /* __GNU__ */
 	struct ifconf ifc;
-	register struct ifreq *ifr;
+	struct ifreq *ifr;
 	struct sockaddr broad_addr;
 	char buf[2048], *cp, *cplim;
 # ifdef WINTCP /* NCR with Wollongong TCP */
diff --git a/tdm/config.def b/tdm/config.def
index 4209c821..6164f2f8 100644
--- a/tdm/config.def
+++ b/tdm/config.def
@@ -2025,6 +2025,17 @@ Comment:
 Description:
  If true then the SAK anti-spoofing dialog will be utilized
 
+Key: SyncKbdLED
+Type: bool
+Default: true
+User: core
+User: greeter
+Instance: #:*/true
+Comment:
+ Sync keyboard led status
+Description:
+ Enable or disable the use of tdekbdledsync to sync keyboard LED status.
+
 Key: UseAdminSession
 Type: bool
 Default: false
diff --git a/tdm/kfrontend/kgapp.cpp b/tdm/kfrontend/kgapp.cpp
index 4ea54028..3fefc00b 100644
--- a/tdm/kfrontend/kgapp.cpp
+++ b/tdm/kfrontend/kgapp.cpp
@@ -225,6 +225,7 @@ kg_main( const char *argv0 )
 	trinity_desktop_lock_use_sak = false;
 #endif
 
+	trinity_desktop_synchronize_keyboard_lights = _syncKbdLED;
 	if (trinity_desktop_synchronize_keyboard_lights &&
 	    TQString(getenv("DISPLAY")).startsWith(":")) {
 		kbdl = new TDEProcess;
diff --git a/tdm/kfrontend/themer/tdmitem.cpp b/tdm/kfrontend/themer/tdmitem.cpp
index f5eabdb5..10218c88 100644
--- a/tdm/kfrontend/themer/tdmitem.cpp
+++ b/tdm/kfrontend/themer/tdmitem.cpp
@@ -306,9 +306,9 @@ KdmItem::paint( TQPainter *p, const TQRect &rect )
                 TQImage lightVersion;
                 lightVersion = copy.convertToImage();
 
-                register uchar * r = lightVersion.bits();
-                register uchar * g = lightVersion.bits() + 1;
-                register uchar * b = lightVersion.bits() + 2;
+                uchar * r = lightVersion.bits();
+                uchar * g = lightVersion.bits() + 1;
+                uchar * b = lightVersion.bits() + 2;
                 uchar * end = lightVersion.bits() + lightVersion.numBytes();
 
                 while ( r != end ) {
@@ -345,7 +345,7 @@ KdmItem::paint( TQPainter *p, const TQRect &rect )
 		TQImage img( myWidget->size(), 32 );
 		img = img.convertDepth(32);
 		img.setAlphaBuffer(true);
-		register uchar * rd = img.bits();
+		uchar * rd = img.bits();
 		for( int y = 0; y < img.height(); ++y )
 		{
 			for( short int x = 0; x < img.width(); ++x )
diff --git a/twin/client.cpp b/twin/client.cpp
index ce7461b3..b57cab35 100644
--- a/twin/client.cpp
+++ b/twin/client.cpp
@@ -1482,7 +1482,7 @@ void Client::imposeCachedShadow(TQPixmap &pixmap, TQRegion exposed)
 void Client::imposeRegionShadow(TQPixmap &pixmap, TQRegion occluded,
         TQRegion exposed, int thickness, double maxOpacity)
 {
-    register int distance, intersectCount, i, j, x, y;
+    int distance, intersectCount, i, j, x, y;
     QRgb pixel;
     double decay, factor, opacity;
     int red, green, blue, pixelRed, pixelGreen, pixelBlue;
diff --git a/twin/clients/keramik/keramik.cpp b/twin/clients/keramik/keramik.cpp
index 4043e6ee..7a5225cc 100644
--- a/twin/clients/keramik/keramik.cpp
+++ b/twin/clients/keramik/keramik.cpp
@@ -593,16 +593,16 @@ TQPixmap *KeramikHandler::composite( TQImage *over, TQImage *under )
 	// Copy the under image (bottom aligned) to the destination image
 	for (int y1 = height - under->height(), y2 = 0; y1 < height; y1++, y2++ )
 	{
-		register TQ_UINT32 *dst = reinterpret_cast<TQ_UINT32*>( dest.scanLine(y1) );
-		register TQ_UINT32 *src = reinterpret_cast<TQ_UINT32*>( under->scanLine(y2) );
+		TQ_UINT32 *dst = reinterpret_cast<TQ_UINT32*>( dest.scanLine(y1) );
+		TQ_UINT32 *src = reinterpret_cast<TQ_UINT32*>( under->scanLine(y2) );
 
 		for ( int x = 0; x < width; x++ )
 			*(dst++) = *(src++);
 	}
 
 	// Blend the over image onto the destination
-	register TQ_UINT32 *dst = reinterpret_cast<TQ_UINT32*>( dest.bits() );
-	register TQ_UINT32 *src = reinterpret_cast<TQ_UINT32*>( over->bits() );
+	TQ_UINT32 *dst = reinterpret_cast<TQ_UINT32*>( dest.bits() );
+	TQ_UINT32 *src = reinterpret_cast<TQ_UINT32*>( over->bits() );
 	for ( int i = 0; i < width * height; i++ )
 	{
 		int r1 = tqRed( *dst ), g1 = tqGreen( *dst ), b1 = tqBlue( *dst );
@@ -1155,13 +1155,13 @@ void KeramikClient::updateMask()
 	// over the pixels to compute the bounding rects from it.
 
 	TQRegion r;
-	register int w, y = 0;
+	int w, y = 0;
 
 	if ( TQApplication::reverseLayout() ) {
 
 		// If the caption bubble is visible and extends above the titlebar
 		if ( largeCaption && captionRect.width() >= 25 ) {
-			register int x = captionRect.left();
+			int x = captionRect.left();
 			w = captionRect.width();
 			r += TQRegion( x + 11, y++, w - 19, 1 );
 			r += TQRegion( x + 9,  y++, w - 15, 1 );
@@ -1188,7 +1188,7 @@ void KeramikClient::updateMask()
 
 		// If the caption bubble is visible and extends above the titlebar
 		if ( largeCaption && captionRect.width() >= 25 ) {
-			register int x = captionRect.left();
+			int x = captionRect.left();
 			w = captionRect.width();
 			r += TQRegion( x + 8, y++, w - 19, 1 );
 			r += TQRegion( x + 6, y++, w - 15, 1 );
diff --git a/twin/compton-tde/common.h b/twin/compton-tde/common.h
index bcc2ad68..9091fc58 100644
--- a/twin/compton-tde/common.h
+++ b/twin/compton-tde/common.h
@@ -99,7 +99,7 @@
 #include <stdlib.h>
 #include <string.h>
 #include <inttypes.h>
-#include <sys/poll.h>
+#include <poll.h>
 #include <assert.h>
 #include <time.h>
 #include <ctype.h>
diff --git a/twin/tools/xreply/xreply.c b/twin/tools/xreply/xreply.c
index ecdf6ebc..ce558419 100644
--- a/twin/tools/xreply/xreply.c
+++ b/twin/tools/xreply/xreply.c
@@ -165,8 +165,8 @@ static void xreply_backtrace()
 
 Status
 _XReply (dpy, rep, extra, discard)
-    register Display *dpy;
-    register xReply *rep;
+    Display *dpy;
+    xReply *rep;
     int extra;		/* number of 32-bit words expected after the reply */
     Bool discard;	/* should I discard data following "extra" words? */
     {
