summaryrefslogtreecommitdiffstats
path: root/redhat/tdebase
diff options
context:
space:
mode:
authorFrançois Andriot <albator78@libertysurf.fr>2013-06-24 19:50:32 +0200
committerFrançois Andriot <albator78@libertysurf.fr>2013-06-24 19:50:32 +0200
commitb4359e8bf97799f83dc1ca62744db7cfcc81bc87 (patch)
tree3346872613490cc467c19e1645d0026c1221bce7 /redhat/tdebase
parent4cc71d79c5718d59078d06c497a56d7c05b41576 (diff)
downloadtde-packaging-b4359e8bf97799f83dc1ca62744db7cfcc81bc87.tar.gz
tde-packaging-b4359e8bf97799f83dc1ca62744db7cfcc81bc87.zip
RPM Packaging: rename directories
Diffstat (limited to 'redhat/tdebase')
-rw-r--r--redhat/tdebase/kdebase-3.5.12-desktop-openterminalhere.patch19
-rw-r--r--redhat/tdebase/kdebase-3.5.12-disable-krandr.patch36
-rw-r--r--redhat/tdebase/kdebase-3.5.12-halmountoptions.patch78
-rw-r--r--redhat/tdebase/kdebase-3.5.12-kdesktop_lock_fix.patch22
-rw-r--r--redhat/tdebase/kdebase-3.5.12-kdesu-noignorebutton.patch45
-rw-r--r--redhat/tdebase/kdebase-3.5.12-kdm_hide_menu_button.patch29
-rw-r--r--redhat/tdebase/kdebase-3.5.12-kickerfix.patch13
-rw-r--r--redhat/tdebase/kdebase-3.5.12-kickoff_unstable.patch428
-rw-r--r--redhat/tdebase/kdebase-3.5.12-kio_man_utf8.patch40
-rw-r--r--redhat/tdebase/kdebase-3.5.12-konq_menu_tab_background.patch136
-rw-r--r--redhat/tdebase/kdebase-3.5.12-r1220927.patch29
-rw-r--r--redhat/tdebase/kdebase-3.5.12-r1220975.patch19
-rw-r--r--redhat/tdebase/kdebase-3.5.12-shutdowndlg-dbus-include.patch20
-rw-r--r--redhat/tdebase/kdebase-3.5.12-startkde_directories.patch19
-rw-r--r--redhat/tdebase/kdebase-3.5.13-add_disable_composite_option.patch81
-rw-r--r--redhat/tdebase/kdebase-3.5.13-add_drag_drop_to_kate_file_list.patch33
-rw-r--r--redhat/tdebase/kdebase-3.5.13-add_reorder_documents_in_kate.patch167
-rw-r--r--redhat/tdebase/kdebase-3.5.13-add_usbstorage_panel.patch1278
-rw-r--r--redhat/tdebase/kdebase-3.5.13-add_xscreensaver_support.patch76
-rw-r--r--redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch372
-rw-r--r--redhat/tdebase/kdebase-3.5.13-build_without_consolekit.patch22
-rw-r--r--redhat/tdebase/kdebase-3.5.13-build_without_dbustqt.patch97
-rw-r--r--redhat/tdebase/kdebase-3.5.13-disable_keyboard_shortcuts_for_file_location_moving.patch22
-rw-r--r--redhat/tdebase/kdebase-3.5.13-disable_tsak_dialog_if_not_built.patch50
-rw-r--r--redhat/tdebase/kdebase-3.5.13-do_not_require_dbustqt_if_no_tsak.patch37
-rw-r--r--redhat/tdebase/kdebase-3.5.13-enable_xtest_support.patch135
-rw-r--r--redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time.patch252
-rw-r--r--redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time_continued.patch356
-rw-r--r--redhat/tdebase/kdebase-3.5.13-ensure_pagersettings_is_installed.patch19
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_dbus_include.patch10
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_device_icon_placement.patch30
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch162
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_fqdn_in_title.patch46
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_kdesktop_lock_security_issue.patch157
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_kdesu_kdesudo_argument_compatibility.patch18
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch47
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_khtml_smooth_scrolling.patch38
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_kio_sftp.patch57
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_kio_sftp_nonstandard_ports.patch23
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_kxdglauncher_document.patch18
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_lib_detection.patch102
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_lock_failure.patch84
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_menu_crash_with_disabled_search.patch20
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_multihead_desktop_lock.patch297
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_potential_ABI_compat_problem.patch24
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_race_condition.patch22
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_rhel4_compilation.patch152
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_tooltip_lock.patch29
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_translations_in_desktop_files.patch105
-rw-r--r--redhat/tdebase/kdebase-3.5.13-fix_tsak_ftbfs.patch12
-rw-r--r--redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location.patch11
-rw-r--r--redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location_xdm.patch11
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kate_focus_fix.patch133
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kate_mru.patch71
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kdesu-noignorebutton.patch45
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kdesu_showkeeppassword.patch11
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kdm-crypt.patch43
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kicker-easyvector.patch29
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kickoff_unstable.patch442
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kio_man_utf8.patch40
-rw-r--r--redhat/tdebase/kdebase-3.5.13-konq_icon_effect.patch19
-rw-r--r--redhat/tdebase/kdebase-3.5.13-konq_menu_tab_background.patch160
-rw-r--r--redhat/tdebase/kdebase-3.5.13-konqsidebar_documents.patch11
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kpersonalizer_default_doubleclick.patch41
-rw-r--r--redhat/tdebase/kdebase-3.5.13-kwin-keramic-pics-emb.patch62
-rw-r--r--redhat/tdebase/kdebase-3.5.13-mediamanager_ftbfs.patch10
-rw-r--r--redhat/tdebase/kdebase-3.5.13-option_to_disable_scroll_desktop.patch101
-rw-r--r--redhat/tdebase/kdebase-3.5.13-prevent_tooltip_over_lockscreen.patch137
-rw-r--r--redhat/tdebase/kdebase-3.5.13-randrtray_merge_x11_reconfig_requests.patch51
-rw-r--r--redhat/tdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch95
-rw-r--r--redhat/tdebase/kdebase-3.5.13-restore_kde3_clock.patch104
-rw-r--r--redhat/tdebase/kdebase-3.5.13-start_dcop_in_tdm.patch34
-rw-r--r--redhat/tdebase/kdebase-3.5.13-startkde_directories.patch118
-rw-r--r--redhat/tdebase/kdebase-3.5.13-startkde_icon.patch19
-rw-r--r--redhat/tdebase/kdebase-3.5.13-startkde_ldpreload.patch13
-rw-r--r--redhat/tdebase/kdebase-3.5.13-support_hal_04.patch1033
-rw-r--r--redhat/tdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch641
-rw-r--r--redhat/tdebase/kdebase-3.5.13-update_default_konq_max_image_prev_size.patch49
-rw-r--r--redhat/tdebase/kdebase-3.5.13-upgrade_to_sru_20120806.patch.gzbin0 -> 302981 bytes
-rw-r--r--redhat/tdebase/kdebase-3.5.13.1-fix_displayconfig_icon.patch20
-rw-r--r--redhat/tdebase/kdebase-3.5.13.1-fix_startkde_path.patch107
-rw-r--r--redhat/tdebase/kdebase-3.5.13.1-fix_tdm_pid_file.patch11
-rw-r--r--redhat/tdebase/kdebase-3.5.13.1-startkde_icon.patch19
-rw-r--r--redhat/tdebase/kdebase-bp126-553923b2.diff135
-rw-r--r--redhat/tdebase/kdebase-bp127-57f5c069.diff159
-rw-r--r--redhat/tdebase/kdebase-bp128-1f33dc8f.diff58
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.el411
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.el59
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.el65
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.fc155
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.fc165
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.fc175
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.mdv2011.05
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.mga25
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.opensuse12205
-rw-r--r--redhat/tdebase/pamd.kcheckpass-trinity.pclos20125
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.el49
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.el511
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.el613
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.fc1515
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.fc1615
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.fc1715
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.mdv2011.07
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.mga210
-rw-r--r--redhat/tdebase/pamd.kdm-trinity-np.pclos20127
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.el411
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.el510
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.el616
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.fc1518
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.fc1618
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.fc1718
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.mdv2011.08
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.mga213
-rw-r--r--redhat/tdebase/pamd.kdm-trinity.pclos20128
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.el411
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.el59
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.el65
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.fc155
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.fc165
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.fc175
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.mdv2011.05
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.mga25
-rw-r--r--redhat/tdebase/pamd.kscreensaver-trinity.pclos20125
-rw-r--r--redhat/tdebase/plasma-desktop9
-rw-r--r--redhat/tdebase/r1182808.diff29
-rw-r--r--redhat/tdebase/r1201523.diff31
-rw-r--r--redhat/tdebase/r1201705.diff43
-rw-r--r--redhat/tdebase/r1221326.diff13
-rw-r--r--redhat/tdebase/suse-displaymanagers-tdm21
-rw-r--r--redhat/tdebase/tdebase-3.5.13.1-missing_ldflags.patch10
-rw-r--r--redhat/tdebase/tdebase-r14.spec648
-rw-r--r--redhat/tdebase/tiles-fixed-png-images.tar.gzbin0 -> 50550 bytes
-rw-r--r--redhat/tdebase/trinity-kdebase-3.5.12.spec757
-rw-r--r--redhat/tdebase/trinity-kdebase-3.5.13.1.spec3266
-rw-r--r--redhat/tdebase/trinity-kdebase-3.5.13.spec3467
135 files changed, 18057 insertions, 0 deletions
diff --git a/redhat/tdebase/kdebase-3.5.12-desktop-openterminalhere.patch b/redhat/tdebase/kdebase-3.5.12-desktop-openterminalhere.patch
new file mode 100644
index 000000000..1dc03e97e
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-desktop-openterminalhere.patch
@@ -0,0 +1,19 @@
+*** kdebase/kdesktop/krootwm.cc.ori 2011-07-20 14:14:25.822954866 +0200
+--- kdebase/kdesktop/krootwm.cc 2011-07-20 14:16:09.964002976 +0200
+***************
+*** 760,766 ****
+ KConfigGroupSaver gs(KGlobal::config(), "General");
+ TQString terminal = KGlobal::config()->readPathEntry("TerminalApplication", "konsole");
+
+! *p << terminal << "--workdir=" + KGlobalSettings::desktopPath() + "/";
+
+ p->start(KProcess::DontCare);
+
+--- 760,766 ----
+ KConfigGroupSaver gs(KGlobal::config(), "General");
+ TQString terminal = KGlobal::config()->readPathEntry("TerminalApplication", "konsole");
+
+! *p << terminal;
+
+ p->start(KProcess::DontCare);
+
diff --git a/redhat/tdebase/kdebase-3.5.12-disable-krandr.patch b/redhat/tdebase/kdebase-3.5.12-disable-krandr.patch
new file mode 100644
index 000000000..b7924cef0
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-disable-krandr.patch
@@ -0,0 +1,36 @@
+*** kdebase/kcontrol/Makefile.am.ORI 2011-09-18 22:04:50.000000000 +0200
+--- kdebase/kcontrol/Makefile.am 2011-09-18 22:05:00.000000000 +0200
+***************
+*** 12,18 ****
+ endif
+
+ if include_kcontrol_iccconfig
+! ICCCONFIG_SUBDIR=iccconfig
+ endif
+
+ if include_kcontrol_usbview
+--- 12,18 ----
+ endif
+
+ if include_kcontrol_iccconfig
+! #ICCCONFIG_SUBDIR=iccconfig
+ endif
+
+ if include_kcontrol_usbview
+***************
+*** 24,30 ****
+ endif
+
+ if include_kcontrol_randr
+! RANDR_SUBDIR=randr
+ endif
+
+ if include_kcontrol_joystick
+--- 24,30 ----
+ endif
+
+ if include_kcontrol_randr
+! #RANDR_SUBDIR=randr
+ endif
+
+ if include_kcontrol_joystick
diff --git a/redhat/tdebase/kdebase-3.5.12-halmountoptions.patch b/redhat/tdebase/kdebase-3.5.12-halmountoptions.patch
new file mode 100644
index 000000000..4a604f9a3
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-halmountoptions.patch
@@ -0,0 +1,78 @@
+*** kdebase/kioslave/media/mediamanager/halbackend.cpp.orig 2010-09-30 00:24:28.000000000 +0200
+--- kdebase/kioslave/media/mediamanager/halbackend.cpp 2011-07-20 16:39:40.933056051 +0200
+***************
+*** 873,878 ****
+--- 873,905 ----
+ s_HALBackend->DeviceCondition(udi, condition_name);
+ }
+
++ TQStringList HALBackend::getHALmountoptions(TQString udi)
++ {
++ const char* _ppt_string;
++ LibHalVolume* volume;
++ LibHalDrive* drive;
++
++ TQString _ppt_QString;
++
++ volume = libhal_volume_from_udi( m_halContext, udi.latin1() );
++ if( volume )
++ drive = libhal_drive_from_udi( m_halContext, libhal_volume_get_storage_device_udi( volume ) );
++ else
++ drive = libhal_drive_from_udi( m_halContext, udi.latin1() );
++
++ if( !drive )
++ return TQString::null;
++
++ if( volume )
++ _ppt_string = libhal_volume_policy_get_mount_options ( drive, volume, NULL );
++ else
++ _ppt_string = libhal_drive_policy_get_mount_options ( drive, NULL );
++
++ _ppt_QString = TQString(_ppt_string ? _ppt_string : "");
++
++ return TQStringList::split(",",_ppt_QString);
++ }
++
+ TQStringList HALBackend::mountoptions(const TQString &name)
+ {
+ const Medium* medium = m_mediaList.findById(name);
+***************
+*** 1472,1481 ****
+--- 1499,1524 ----
+ soptions << TQString("data=ordered");
+ }
+
++ TQStringList hal_mount_options = getHALmountoptions(medium->id());
++ for (TQValueListIterator<TQString> it=hal_mount_options.begin();it!=hal_mount_options.end();it++)
++ {
++ soptions << *it;
++ kdDebug()<<"HALOption: "<<*it<<endl;
++ if ((*it).startsWith("iocharset="))
++ {
++ soptions.remove("utf8");
++ kdDebug()<<"\"iocharset=\" found. Removing \"utf8\" from options."<<endl;
++ }
++ }
++
++
+ const char **options = new const char*[soptions.size() + 1];
+ uint noptions = 0;
+ for (TQStringList::ConstIterator it = soptions.begin(); it != soptions.end(); ++it, ++noptions)
++ {
+ options[noptions] = (*it).latin1();
++ kdDebug()<<"Option: "<<*it<<endl;
++ }
+ options[noptions] = NULL;
+
+ TQString qerror = i18n("Cannot mount encrypted drives!");
+diff -r -u kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.h kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.h
+--- kdebase-3.5.5a.dfsg.1.orig/kioslave/media/mediamanager/halbackend.h 2007-01-25 12:34:07.133446000 +0300
++++ kdebase-3.5.5a.dfsg.1/kioslave/media/mediamanager/halbackend.h 2007-01-25 16:33:54.413638693 +0300
+@@ -192,6 +192,7 @@
+ const char* message
+ );
+
++ TQStringList getHALmountoptions(QString udi);
+ /* HAL and DBus structures */
+ private:
+ /**
diff --git a/redhat/tdebase/kdebase-3.5.12-kdesktop_lock_fix.patch b/redhat/tdebase/kdebase-3.5.12-kdesktop_lock_fix.patch
new file mode 100644
index 000000000..0acc11659
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-kdesktop_lock_fix.patch
@@ -0,0 +1,22 @@
+--- kdebase-3.5.12/kdesktop/lock/lockprocess.cc.ORI 2011-12-21 18:40:05.553301746 +0100
++++ kdebase-3.5.12/kdesktop/lock/lockprocess.cc 2011-12-21 18:43:01.643590270 +0100
+@@ -1045,17 +1045,13 @@
+ mHackProc << word;
+ }
+
+- if (!mForbidden)
++ if (!mForbidden && mHackProc.start() == true)
+ {
+-
+- if (mHackProc.start() == true)
+- {
+ #ifdef HAVE_SETPRIORITY
+ setpriority(PRIO_PROCESS, mHackProc.pid(), mPriority);
+ #endif
+ //bitBlt(this, 0, 0, &mOriginal);
+ return true;
+- }
+ }
+ else
+ // we aren't allowed to start the specified screensaver either because it didn't run for some reason
+
diff --git a/redhat/tdebase/kdebase-3.5.12-kdesu-noignorebutton.patch b/redhat/tdebase/kdebase-3.5.12-kdesu-noignorebutton.patch
new file mode 100644
index 000000000..bc3583e5e
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-kdesu-noignorebutton.patch
@@ -0,0 +1,45 @@
+diff -rcb kdebase.ORI/kdesu/kdesu/sudlg.cpp kdebase/kdesu/kdesu/sudlg.cpp
+*** kdebase.ORI/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:07.725798945 +0100
+--- kdebase/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:49.378797283 +0100
+***************
+*** 15,21 ****
+ #include "sudlg.h"
+
+ KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
+! : KPasswordDialog(Password, enableKeep, (withIgnoreButton ? User1:NoDefault), icon)
+ {
+ KConfig* config = KGlobal::config();
+ config->setGroup("super-user-command");
+--- 15,21 ----
+ #include "sudlg.h"
+
+ KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
+! : KPasswordDialog(Password, enableKeep, 0, icon)
+ {
+ KConfig* config = KGlobal::config();
+ config->setGroup("super-user-command");
+***************
+*** 34,45 ****
+ } else {
+ if (m_User == "root") {
+ prompt = i18n("The action you requested needs root privileges. "
+! "Please enter root's password below or click "
+! "Ignore to continue with your current privileges.");
+ } else {
+ prompt = i18n("The action you requested needs additional privileges. "
+! "Please enter the password for \"%1\" below or click "
+! "Ignore to continue with your current privileges.").arg(m_User);
+ }
+ }
+ setPrompt(prompt);
+--- 34,43 ----
+ } else {
+ if (m_User == "root") {
+ prompt = i18n("The action you requested needs root privileges. "
+! "Please enter root's password below.");
+ } else {
+ prompt = i18n("The action you requested needs additional privileges. "
+! "Please enter the password for \"%1\" below.").arg(m_User);
+ }
+ }
+ setPrompt(prompt);
diff --git a/redhat/tdebase/kdebase-3.5.12-kdm_hide_menu_button.patch b/redhat/tdebase/kdebase-3.5.12-kdm_hide_menu_button.patch
new file mode 100644
index 000000000..f2cb32511
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-kdm_hide_menu_button.patch
@@ -0,0 +1,29 @@
+diff -Nuar kdebase/kdm.ORI/config.def kdebase/kdm/config.def
+--- kdebase/kdm.ORI/config.def 2012-01-05 19:29:01.956728364 +0100
++++ kdebase/kdm/config.def 2012-01-05 19:28:53.165728336 +0100
+@@ -2630,3 +2630,12 @@
+ Description:
+ The theme to use for the greeter. Can point to either a directory or an XML
+ file.
++
++Key: HideMenuButton
++Type: bool
++Default: false
++User: greeter
++Instance: */
++Comment: &
++Description:
++ Determines if the "menu" button should be hidden on KDM login prompt.
+diff -Nuar kdebase/kdm.ORI/kfrontend/kgreeter.cpp kdebase/kdm/kfrontend/kgreeter.cpp
+--- kdebase/kdm.ORI/kfrontend/kgreeter.cpp 2012-01-05 19:29:01.955735413 +0100
++++ kdebase/kdm/kfrontend/kgreeter.cpp 2012-01-05 19:30:39.538730206 +0100
+@@ -892,6 +892,9 @@
+ else
+ menuButton->hide();
+
++ if ( _hideMenuButton)
++ menuButton->hide();
++
+ pluginSetup();
+
+ verify->start();
diff --git a/redhat/tdebase/kdebase-3.5.12-kickerfix.patch b/redhat/tdebase/kdebase-3.5.12-kickerfix.patch
new file mode 100644
index 000000000..2a58f0020
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-kickerfix.patch
@@ -0,0 +1,13 @@
+Index: ui/k_new_mnu.cpp
+===================================================================
+--- ui/k_new_mnu.cpp (revision 1259264)
++++ ui/k_new_mnu.cpp (working copy)
+@@ -3502,6 +3502,8 @@
+ descr, "system:/media/" + name, nId++, -1 );
+
+ ++it; // skip separator
++ ++it;
++ ++it;
+ }
+ }
+
diff --git a/redhat/tdebase/kdebase-3.5.12-kickoff_unstable.patch b/redhat/tdebase/kdebase-3.5.12-kickoff_unstable.patch
new file mode 100644
index 000000000..a66bf625d
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-kickoff_unstable.patch
@@ -0,0 +1,428 @@
+--- kdebase/kicker/kicker/buttons/knewbutton.cpp.ORI 2011-12-08 21:15:57.551323941 +0100
++++ kdebase/kicker/kicker/buttons/knewbutton.cpp 2011-12-08 21:22:05.216346827 +0100
+@@ -55,26 +55,26 @@
+ : KButton( parent ),
+ m_oldPos(0,0)
+ {
++ setTitle(i18n("K Menu"));
+ Q_ASSERT( !m_self );
+ m_self = this;
+- m_hoverTimer = -1;
+ m_openTimer = -1;
+- m_active = false;
++ m_hoverTimer = -1;
+ m_mouseInside = false;
+ m_drag = false;
+
+- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight));
+- setAcceptDrops(true);
+- setIcon("kmenu-suse");
+- setDrawArrow(false);
+-
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
+- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
+- m_movie->connectStatus(this, TQT_SLOT(slotStatus(int)));
+- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
++ setIcon("kmenu");
++ setIcon(KickerSettings::customKMenuIcon());
+
+ TQApplication::desktop()->screen()->installEventFilter(this);
+- setMouseTracking(true);
++ if (KickerSettings::showKMenuText())
++ {
++ setButtonText(KickerSettings::kMenuText());
++ setFont(KickerSettings::buttonFont());
++ setTextColor(KickerSettings::buttonTextColor());
++ }
++
++ repaint();
+ }
+
+ KNewButton::~KNewButton()
+@@ -82,28 +82,14 @@
+ if ( m_self == this )
+ m_self = 0;
+ setMouseTracking(false);
+- delete m_movie;
+-}
+-
+-void KNewButton::slotStatus(int status)
+-{
+- if(status == TQMovie::EndOfLoop)
+- slotStopAnimation();
+ }
+
+-TQColor KNewButton::borderColor() const
++void KNewButton::drawButton(TQPainter *p)
+ {
+- TQImage img = m_active_pixmap.convertToImage();
+-
+- for (int i = 0; i < img.width(); ++i) {
+- QRgb rgb = img.pixel(orientation() == Qt::Horizontal ? img.width() - i - 1 :
+- i, 2);
+-
+- if (qGreen(rgb) > 0x50)
+- return rgb;
+- }
+-
+- return img.pixel( orientation() == Qt::Horizontal ? img.width() - 2 : 2, 2);
++ //if (KickerSettings::showDeepButtons())
++ // PanelPopupButton::drawDeepButton(p);
++ //else
++ PanelPopupButton::drawButton(p);
+ }
+
+ void KNewButton::show()
+@@ -111,103 +97,12 @@
+ KButton::show();
+
+ if (KickerSettings::firstRun()) {
+- TQTimer::singleShot(500,this,TQT_SLOT(slotExecMenu()));
++ TQTimer::singleShot(0,this,TQT_SLOT(slotExecMenu()));
+ KickerSettings::setFirstRun(false);
+ KickerSettings::writeConfig();
+ }
+ }
+
+-void KNewButton::updateMovie()
+-{
+- m_oldPos = TQPoint( -1, -1 );
+- drawEye();
+-
+- if (!m_active && m_movie->running())
+- m_movie->pause();
+-}
+-
+-void KNewButton::setPopupDirection(KPanelApplet::Direction d)
+-{
+- KButton::setPopupDirection(d);
+-
+- delete m_movie;
+-
+- switch (d) {
+- case KPanelApplet::Left:
+- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignLeft));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
+- break;
+- case KPanelApplet::Right:
+- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignRight));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
+- break;
+- case KPanelApplet::Up:
+- setIconAlignment((Qt::AlignmentFlags)(AlignTop|AlignHCenter));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
+- break;
+- case KPanelApplet::Down:
+- setIconAlignment((Qt::AlignmentFlags)(AlignBottom|AlignHCenter));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_flipped.mng"));
+- }
+-
+- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
+- m_movie->connectStatus(this, TQT_SLOT(slotStatus(int)));
+- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
+-}
+-
+-void KNewButton::slotSetSize(const TQSize& s)
+-{
+- m_iconSize = s;
+-}
+-
+-double KNewButton::buttonScaleFactor(const TQSize& s) const
+-{
+- double sf = 1.0;
+-
+- switch (popupDirection()) {
+- case KPanelApplet::Left:
+- case KPanelApplet::Right:
+-// sf = kMin(double(s.width()) / m_iconSize.height(), double(s.height()) / m_iconSize.width());
+-// break;
+- case KPanelApplet::Up:
+- case KPanelApplet::Down:
+- sf = kMin(double(s.width()) / m_iconSize.width(), double(s.height()) / m_iconSize.height());
+- break;
+- }
+-
+- if (sf > 0.8) sf = 1.0;
+- return sf;
+-}
+-
+-int KNewButton::widthForHeight(int height) const
+-{
+- int r = m_iconSize.width() * buttonScaleFactor(TQSize(m_iconSize.width(), height));
+-
+- if (!m_movie->running() && height != m_active_pixmap.height())
+- {
+- KNewButton* that = const_cast<KNewButton*>(this);
+- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
+- }
+-
+- return r;
+-}
+-
+-int KNewButton::preferredDimension(int panelDim) const
+-{
+- return kMax(m_icon.width(), m_icon.height());
+-}
+-
+-int KNewButton::heightForWidth(int width) const
+-{
+- int r = m_iconSize.width() * buttonScaleFactor(TQSize(width, m_iconSize.height()));
+- if (!m_movie->running() && width != m_active_pixmap.width())
+- {
+- KNewButton* that = const_cast<KNewButton*>(this);
+- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
+- }
+- return r;
+-}
+-
+ bool KNewButton::eventFilter(TQObject *o, TQEvent *e)
+ {
+ if (e->type() == TQEvent::MouseButtonRelease ||
+@@ -223,75 +118,9 @@
+ }
+ }
+
+- if (KickerSettings::kickoffDrawGeekoEye() && e->type() == TQEvent::MouseMove)
+- {
+- TQMouseEvent *me = static_cast<TQMouseEvent *>(e);
+- if ((me->state() & MouseButtonMask) == NoButton)
+- drawEye();
+- }
+-
+ return KButton::eventFilter(o, e);
+ }
+
+-void KNewButton::drawEye()
+-{
+-#define eye_x 62
+-#define eye_y 13
+- TQPoint mouse = TQCursor::pos();
+- TQPoint me = mapToGlobal(TQPoint(eye_x, eye_y));
+- double a = atan2(mouse.y() - me.y(), mouse.x() - me.x());
+- int dx = int(2.1 * cos(a));
+- int dy = int(2.1 * sin(a));
+-
+- TQPoint newpos(eye_x+dx,eye_y+dy);
+- if (newpos!=m_oldPos) {
+- m_oldPos = newpos;
+- TQPixmap pixmap = m_active_pixmap;
+-
+- double sf = 1.0;
+-
+- if(!m_movie->framePixmap().isNull())
+- {
+- pixmap = m_movie->framePixmap();
+- pixmap.detach();
+- m_iconSize = pixmap.size();
+- sf = buttonScaleFactor(size());
+-
+- if (KickerSettings::kickoffDrawGeekoEye()) {
+- TQPainter p(&pixmap);
+- p.setPen(white);
+- p.setBrush(white);
+- // p.setPen(TQColor(110,185,55));
+- p.drawRect(eye_x+dx, eye_y+dy, 2, 2);
+- p. end();
+- }
+- }
+-
+- TQWMatrix matrix;
+- switch (popupDirection()) {
+- case KPanelApplet::Left:
+- matrix.scale(sf, -sf);
+- matrix.rotate(90);
+- break;
+- case KPanelApplet::Up:
+- matrix.scale(sf, sf);
+- break;
+- case KPanelApplet::Right:
+- matrix.scale(sf, -sf);
+- matrix.rotate(90);
+- break;
+- case KPanelApplet::Down:
+- matrix.scale(sf, sf);
+- break;
+- }
+- m_active_pixmap = pixmap.xForm(matrix);
+-
+- repaint(false);
+- }
+-#undef eye_x
+-#undef eye_y
+-}
+-
+ void KNewButton::enterEvent(TQEvent* e)
+ {
+ KButton::enterEvent(e);
+@@ -315,14 +144,6 @@
+ }
+
+ m_active = true;
+- m_movie->unpause();
+- m_movie->restart();
+-}
+-
+-void KNewButton::rewindMovie()
+-{
+- m_oldPos = TQPoint( -1, -1 );
+- m_movie->unpause();
+ }
+
+ void KNewButton::dragEnterEvent(TQDragEnterEvent* /*e*/)
+@@ -369,31 +190,11 @@
+ }
+ }
+
+-void KNewButton::slotStopAnimation()
+-{
+- m_active = false;
+- m_movie->pause();
+- m_movie->restart();
+- TQTimer::singleShot(200, this, TQT_SLOT(rewindMovie()));
+-}
+-
+-const TQPixmap& KNewButton::labelIcon() const
+-{
+- return m_active_pixmap;
+-}
+-
+ void KNewButton::slotExecMenu()
+ {
+- if (m_openTimer != -1)
+- killTimer(m_openTimer);
+-
+- m_openTimer = startTimer(TQApplication::doubleClickInterval() * 3);
+-
+ if (m_active)
+ {
+ m_active = false;
+- m_movie->pause();
+- m_movie->restart();
+ }
+
+ KButton::slotExecMenu();
+@@ -401,40 +202,11 @@
+ assert(!KickerTip::tippingEnabled());
+ assert(dynamic_cast<KMenu*>(m_popup));
+
+- disconnect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), this,
+- TQT_SLOT(slotStopAnimation()));
+- connect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()),
+- TQT_SLOT(slotStopAnimation()));
+-
+ m_popup->move(KickerLib::popupPosition(popupDirection(), m_popup, this));
+ // I wish KMenu would properly done itself when it closes. But it doesn't.
+
+- bool useEffect = true; // could be TQApplication::isEffectEnabled()
+- useEffect = false; // too many TQt bugs to be useful
+- if (m_drag)
+- useEffect = false;
+-
+ m_drag = false; // once is enough
+-
+- if (useEffect)
+- {
+- switch (popupDirection()) {
+- case KPanelApplet::Left:
+- qScrollEffect(m_popup, QEffects::LeftScroll);
+- break;
+- case KPanelApplet::Up:
+- qScrollEffect(m_popup, QEffects::UpScroll);
+- break;
+- case KPanelApplet::Right:
+- qScrollEffect(m_popup, QEffects::RightScroll);
+- break;
+- case KPanelApplet::Down:
+- qScrollEffect(m_popup, QEffects::DownScroll);
+- break;
+- }
+- }
+- else
+- static_cast<KMenu*>(m_popup)->show();
++ static_cast<KMenu*>(m_popup)->show();
+ }
+
+ void KNewButton::timerEvent(TQTimerEvent* e)
+@@ -447,9 +219,4 @@
+ killTimer(m_hoverTimer);
+ m_hoverTimer = -1;
+ }
+- if (e->timerId() == m_openTimer)
+- {
+- killTimer(m_openTimer);
+- m_openTimer = -1;
+- }
+ }
+--- kdebase/kicker/kicker/buttons/knewbutton.h.ORI 2011-12-08 21:22:24.273573281 +0100
++++ kdebase/kicker/kicker/buttons/knewbutton.h 2011-12-08 21:24:16.791338762 +0100
+@@ -28,7 +28,6 @@
+
+ #include "kbutton.h"
+
+-#include <tqmovie.h>
+ #include <tqpoint.h>
+
+ /**
+@@ -46,23 +45,8 @@
+
+ void loadConfig( const KConfigGroup& config );
+
+- virtual const TQPixmap& labelIcon() const;
+-
+- virtual int widthForHeight(int height) const;
+- virtual int preferredDimension(int panelDim) const;
+- virtual int heightForWidth(int width) const;
+-
+ TQColor borderColor() const;
+
+- virtual void setPopupDirection(KPanelApplet::Direction d);
+-
+-private slots:
+- void slotStatus(int);
+- void slotSetSize(const TQSize&);
+- void slotStopAnimation();
+- void rewindMovie();
+- void updateMovie();
+-
+ protected:
+ virtual void show();
+ virtual void slotExecMenu();
+@@ -78,16 +62,13 @@
+ void timerEvent(TQTimerEvent*);
+
+ private:
+- void drawEye();
+- double buttonScaleFactor(const TQSize& s) const;
+-
+- TQMovie* m_movie;
++ void drawButton(TQPainter *p);
+ TQPixmap m_active_pixmap;
+ TQPoint m_oldPos;
+ TQSize m_iconSize;
+ TQRect m_sloppyRegion;
+- int m_hoverTimer;
+ int m_openTimer;
++ int m_hoverTimer;
+ bool m_active;
+ bool m_mouseInside;
+ bool m_drag;
+--- kdebase/kicker/kicker/ui/k_new_mnu.cpp.ORI 2011-12-08 21:24:57.071572016 +0100
++++ kdebase/kicker/kicker/ui/k_new_mnu.cpp 2011-12-08 21:25:54.300324465 +0100
+@@ -1700,8 +1700,6 @@
+ TQPixmap pix( 64, footer->height() );
+ TQPainter p( &pix );
+ p.fillRect( 0, 0, 64, footer->height(), m_branding->colorGroup().brush( TQColorGroup::Base ) );
+- p.fillRect( 0, m_orientation == BottomUp ? footer->height() - 2 : 0,
+- 64, 3, KNewButton::self()->borderColor() );
+ p.end();
+ footer->setPaletteBackgroundPixmap( pix );
+ }
+@@ -3501,6 +3499,8 @@
+ m_systemView->insertItem( iconName, userLabel.isEmpty() ? label : userLabel,
+ descr, "system:/media/" + name, nId++, -1 );
+
++ ++it;
++ ++it;
+ ++it; // skip separator
+ }
+ }
diff --git a/redhat/tdebase/kdebase-3.5.12-kio_man_utf8.patch b/redhat/tdebase/kdebase-3.5.12-kio_man_utf8.patch
new file mode 100644
index 000000000..a85f0286d
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-kio_man_utf8.patch
@@ -0,0 +1,40 @@
+--- kdebase/kioslave/man/kio_man.cpp.orig 2010-08-13 00:37:38.000000000 +0200
++++ kdebase/kioslave/man/kio_man.cpp 2011-12-08 21:10:25.720324499 +0100
+@@ -569,20 +569,24 @@
+ }
+ lastdir = filename.left(filename.findRev('/'));
+
+- myStdStream = TQString::null;
+- KProcess proc;
+- /* TODO: detect availability of 'man --recode' so that this can go
+- * upstream */
+- proc << "man" << "--recode" << "UTF-8" << filename;
+-
+- TQApplication::connect(&proc, TQT_SIGNAL(receivedStdout (KProcess *, char *, int)),
+- this, TQT_SLOT(slotGetStdOutputUtf8(KProcess *, char *, int)));
+- proc.start(KProcess::Block, KProcess::All);
+-
+- const TQCString cstr=myStdStream.utf8();
+- const int len = cstr.size()-1;
++ QIODevice *fd= KFilterDev::deviceForFile(filename);
++
++ if ( !fd || !fd->open(IO_ReadOnly))
++ {
++ delete fd;
++ return 0;
++ }
++ QByteArray array(fd->readAll());
++ kdDebug(7107) << "read " << array.size() << endl;
++ fd->close();
++ delete fd;
++
++ if (array.isEmpty())
++ return 0;
++
++ const int len = array.size();
+ buf = new char[len + 4];
+- qmemmove(buf + 1, cstr.data(), len);
++ qmemmove(buf + 1, array.data(), len);
+ buf[0]=buf[len]='\n'; // Start and end with a end of line
+ buf[len+1]=buf[len+2]='\0'; // Two NUL characters at end
+ }
diff --git a/redhat/tdebase/kdebase-3.5.12-konq_menu_tab_background.patch b/redhat/tdebase/kdebase-3.5.12-konq_menu_tab_background.patch
new file mode 100644
index 000000000..442486efa
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-konq_menu_tab_background.patch
@@ -0,0 +1,136 @@
+diff -Nuar kcontrol.ORI/konqhtml/advancedTabDialog.cpp kcontrol/konqhtml/advancedTabDialog.cpp
+--- kdebase/kcontrol.ORI/konqhtml/advancedTabDialog.cpp 2011-12-09 23:45:04.676253975 +0100
++++ kdebase/kcontrol/konqhtml/advancedTabDialog.cpp 2011-12-09 23:46:28.239256986 +0100
+@@ -58,7 +58,6 @@
+ layout->addSpacing( 20 );
+ layout->addStretch();
+
+- connect(m_advancedWidget->m_pNewTabsInBackground, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+ connect(m_advancedWidget->m_pOpenAfterCurrentPage, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+ connect(m_advancedWidget->m_pTabConfirm, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+ connect(m_advancedWidget->m_pTabCloseActivatePrevious, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+@@ -76,7 +75,6 @@
+ void advancedTabDialog::load()
+ {
+ m_pConfig->setGroup("FMSettings");
+- m_advancedWidget->m_pNewTabsInBackground->setChecked( ! (m_pConfig->readBoolEntry( "NewTabsInFront", false )) );
+ m_advancedWidget->m_pOpenAfterCurrentPage->setChecked( m_pConfig->readBoolEntry( "OpenAfterCurrentPage", false ) );
+ m_advancedWidget->m_pPermanentCloseButton->setChecked( m_pConfig->readBoolEntry( "PermanentCloseButton", false ) );
+ m_advancedWidget->m_pKonquerorTabforExternalURL->setChecked( m_pConfig->readBoolEntry( "KonquerorTabforExternalURL", false ) );
+@@ -92,7 +90,6 @@
+ void advancedTabDialog::save()
+ {
+ m_pConfig->setGroup("FMSettings");
+- m_pConfig->writeEntry( "NewTabsInFront", !(m_advancedWidget->m_pNewTabsInBackground->isChecked()) );
+ m_pConfig->writeEntry( "OpenAfterCurrentPage", m_advancedWidget->m_pOpenAfterCurrentPage->isChecked() );
+ m_pConfig->writeEntry( "PermanentCloseButton", m_advancedWidget->m_pPermanentCloseButton->isChecked() );
+ m_pConfig->writeEntry( "KonquerorTabforExternalURL", m_advancedWidget->m_pKonquerorTabforExternalURL->isChecked() );
+diff -Nuar kcontrol.ORI/konqhtml/advancedTabOptions.ui kcontrol/konqhtml/advancedTabOptions.ui
+--- kdebase/kcontrol.ORI/konqhtml/advancedTabOptions.ui 2011-12-09 23:45:04.674267416 +0100
++++ kdebase/kcontrol/konqhtml/advancedTabOptions.ui 2011-12-09 23:56:01.440255647 +0100
+@@ -62,6 +62,17 @@
+ </widget>
+ <widget class="QCheckBox">
+ <property name="name">
++ <cstring>m_pNewTabsInBackground</cstring>
++ </property>
++ <property name="text">
++ <string>O&amp;pen new tabs in the background</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>This will open a new tab in the background, instead of in the foreground.</string>
++ </property>
++ </widget>
++ <widget class="QCheckBox">
++ <property name="name">
+ <cstring>m_pOpenAfterCurrentPage</cstring>
+ </property>
+ <property name="text">
+diff -Nuar konqueror.ORI/konq_guiclients.cc konqueror/konq_guiclients.cc
+--- kdebase/konqueror.ORI/konq_guiclients.cc 2011-12-09 23:44:28.950255993 +0100
++++ kdebase/konqueror/konq_guiclients.cc 2011-12-09 23:49:31.432261289 +0100
+@@ -115,6 +115,11 @@
+ openInTabElement.setAttribute( "group", "tabhandling" );
+ menu.appendChild( openInTabElement );
+
++ TQDomElement openInTabFrontElement = m_doc.createElement( "action" );
++ openInTabFrontElement.setAttribute( "name", "openintabfront" );
++ openInTabFrontElement.setAttribute( "group", "tabhandling" );
++ menu.appendChild( openInTabFrontElement );
++
+ TQDomElement separatorElement = m_doc.createElement( "separator" );
+ separatorElement.setAttribute( "group", "tabhandling" );
+ menu.appendChild( separatorElement );
+diff -Nuar konqueror.ORI/konq_mainwindow.cc konqueror/konq_mainwindow.cc
+--- kdebase/konqueror.ORI/konq_mainwindow.cc 2011-12-09 23:44:29.030265039 +0100
++++ kdebase/konqueror/konq_mainwindow.cc 2011-12-09 23:54:27.518255409 +0100
+@@ -2727,6 +2727,14 @@
+ openURL( 0L, popupItems.getFirst()->url() );
+ }
+
++void KonqMainWindow::slotPopupNewTabAtFront()
++{
++ KConfig *config = KGlobal::config();
++ KConfigGroupSaver cs( config, TQString::fromLatin1("FMSettings") );
++ bool openAfterCurrentPage = config->readBoolEntry( "OpenAfterCurrentPage", false );
++ popupNewTab(true, openAfterCurrentPage);
++}
++
+ void KonqMainWindow::slotPopupNewTab()
+ {
+ bool openAfterCurrentPage = KonqSettings::openAfterCurrentPage();
+@@ -2735,7 +2743,7 @@
+ if (KApplication::keyboardMouseState() & Qt::ShiftButton)
+ newTabsInFront = !newTabsInFront;
+
+- popupNewTab(newTabsInFront, openAfterCurrentPage);
++ popupNewTab(false, openAfterCurrentPage);
+ }
+
+ void KonqMainWindow::slotPopupNewTabRight()
+@@ -2755,16 +2763,12 @@
+ KFileItemListIterator it ( popupItems );
+ KonqOpenURLRequest req;
+ req.newTab = true;
+- req.newTabInFront = false;
++ req.newTabInFront = infront;
+ req.openAfterCurrentPage = openAfterCurrentPage;
+ req.args = popupUrlArgs;
+
+ for ( ; it.current(); ++it )
+ {
+- if ( infront && it.atLast() )
+- {
+- req.newTabInFront = true;
+- }
+ openURL( 0L, (*it)->url(), TQString::null, req );
+ }
+ }
+@@ -4783,8 +4787,14 @@
+ else
+ tab_new_x = "tab_new_bg" ;
+
+- actNewTab = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, this, TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
+- actNewTab->setToolTip( i18n( "Open the document in a new tab" ) );
++ KAction *actNewTab = new KAction( i18n( "Open in &Background Tab" ), "tab_new_bg", 0, this, TQT_SLOT( slotPopupNewTab() ), actionCollection(), "openintab" );
++ actNewTab->setStatusText( i18n( "Open the document in a new background tab" ) );
++ KAction *actNewTabFront = new KAction( i18n( "Open in &New Tab" ), "tab_new", 0, this, TQT_SLOT( slotPopupNewTabAtFront() ), actionCollection(), "openintabfront" );
++ actNewTabFront->setStatusText( i18n( "Open the document in a new foreground tab" ) );
++ actNewTab = new KAction( i18n( "Open in &Background Tab" ), tab_new_x, 0, this, TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
++ actNewTabFront = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, this, TQT_SLOT( slotPopupNewTabAtFront() ), konqyMenuClient->actionCollection(), "openintabfront" );
++ actNewTab->setToolTip( i18n( "Open the document in a new background tab" ) );
++ actNewTabFront->setToolTip( i18n( "Open the document in a new foreground tab" ) );
+ doTabHandling = true;
+ }
+
+diff -Nuar konqueror.ORI/konq_mainwindow.h konqueror/konq_mainwindow.h
+--- kdebase/konqueror.ORI/konq_mainwindow.h 2011-12-09 23:44:28.941260682 +0100
++++ kdebase/konqueror/konq_mainwindow.h 2011-12-09 23:54:57.772255487 +0100
+@@ -444,6 +444,7 @@
+ void slotPopupNewWindow();
+ void slotPopupThisWindow();
+ void slotPopupNewTab();
++ void slotPopupNewTabAtFront();
+ void slotPopupNewTabRight();
+ void slotPopupPasteTo();
+ void slotRemoveView();
diff --git a/redhat/tdebase/kdebase-3.5.12-r1220927.patch b/redhat/tdebase/kdebase-3.5.12-r1220927.patch
new file mode 100644
index 000000000..8048cc929
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-r1220927.patch
@@ -0,0 +1,29 @@
+Index: kdebase/kcontrol/iccconfig/iccconfig.cpp
+===================================================================
+--- kdebase/kcontrol/iccconfig/iccconfig.cpp (revision 1220926)
++++ kdebase/kcontrol/iccconfig/iccconfig.cpp (revision 1220927)
+@@ -286,7 +286,7 @@
+ base->deleteProfileButton->setFixedWidth(90);
+
+ XRROutputInfo *output_info;
+- KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI::KRandrSimpleAPI();
++ KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI();
+
+ config->setReadDefaults( useDefaults );
+
+@@ -356,7 +356,7 @@
+ {
+ int i;
+ int j;
+- KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI::KRandrSimpleAPI();
++ KRandrSimpleAPI *randrsimple = new KRandrSimpleAPI();
+
+ // Write system configuration
+ systemconfig->setGroup(NULL);
+@@ -408,4 +408,4 @@
+ " for a more lifelike and vibrant image.");
+ }
+
+-#include "iccconfig.moc"
+\ No newline at end of file
++#include "iccconfig.moc"
diff --git a/redhat/tdebase/kdebase-3.5.12-r1220975.patch b/redhat/tdebase/kdebase-3.5.12-r1220975.patch
new file mode 100644
index 000000000..d16ce90e0
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-r1220975.patch
@@ -0,0 +1,19 @@
+*** kdebase/ksmserver/shutdowndlg.cpp.ORI 2011-08-23 21:42:55.206965177 +0200
+--- kdebase/ksmserver/shutdowndlg.cpp 2011-08-23 21:43:26.429965029 +0200
+***************
+*** 80,86 ****
+ {
+ DCOPRef("kicker", "KMenu").call("hideMenu"); // Make sure the K Menu is completely removed from the screen before taking a snapshot...
+ m_grayImage = TQPixmap::grabWindow(qt_xrootwin(), 0, 0, TQApplication::desktop()->width(), TQApplication::desktop()->height()).convertToImage();
+! m_unfadedImage = TQImage::TQImage();
+ resize(0, 0);
+ setShown(true);
+ TQTimer::singleShot( 500, this, TQT_SLOT( slotPaintEffect() ) );
+--- 80,86 ----
+ {
+ DCOPRef("kicker", "KMenu").call("hideMenu"); // Make sure the K Menu is completely removed from the screen before taking a snapshot...
+ m_grayImage = TQPixmap::grabWindow(qt_xrootwin(), 0, 0, TQApplication::desktop()->width(), TQApplication::desktop()->height()).convertToImage();
+! m_unfadedImage = TQImage();
+ resize(0, 0);
+ setShown(true);
+ TQTimer::singleShot( 500, this, TQT_SLOT( slotPaintEffect() ) );
diff --git a/redhat/tdebase/kdebase-3.5.12-shutdowndlg-dbus-include.patch b/redhat/tdebase/kdebase-3.5.12-shutdowndlg-dbus-include.patch
new file mode 100644
index 000000000..64af6d86e
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-shutdowndlg-dbus-include.patch
@@ -0,0 +1,20 @@
+diff -rcb kdebase/ksmserver/shutdowndlg.h kdebase.patch/ksmserver/shutdowndlg.h
+*** kdebase/ksmserver/shutdowndlg.h Sat Sep 25 23:33:51 2010
+--- kdebase.patch/ksmserver/shutdowndlg.h Thu Dec 9 14:58:43 2010
+***************
+*** 32,38 ****
+
+ /* We acknowledge the the dbus API is unstable */
+ #define DBUS_API_SUBJECT_TO_CHANGE
+! #include <dbus/connection.h>
+ #include <libhal.h>
+
+ // The (singleton) widget that makes/fades the desktop gray.
+--- 32,38 ----
+
+ /* We acknowledge the the dbus API is unstable */
+ #define DBUS_API_SUBJECT_TO_CHANGE
+! #include <dbus/dbus.h>
+ #include <libhal.h>
+
+ // The (singleton) widget that makes/fades the desktop gray.
diff --git a/redhat/tdebase/kdebase-3.5.12-startkde_directories.patch b/redhat/tdebase/kdebase-3.5.12-startkde_directories.patch
new file mode 100644
index 000000000..393903059
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.12-startkde_directories.patch
@@ -0,0 +1,19 @@
+--- kdebase/startkde.ORI 2011-12-11 18:55:25.873027885 +0100
++++ kdebase/startkde 2011-12-11 18:56:37.885065246 +0100
+@@ -144,14 +144,14 @@
+ fi
+ if [ -d /opt/kde3 ]; then
+ if [ -n "$KDEDIRS" ]; then
+- export KDEDIRS=$KDEDIRS:/opt/kde3/:/usr/
++ export KDEDIRS=/opt/kde3/:$KDEDIRS:/usr/
+ else
+ export KDEDIRS=/opt/kde3/:/usr/
+ fi
+ fi
+ if [ -d /opt/trinity ]; then
+ if [ -n "$KDEDIRS" ]; then
+- export KDEDIRS=$KDEDIRS:/opt/trinity/:/usr/
++ export KDEDIRS=/opt/trinity/:$KDEDIRS:/usr/
+ else
+ export KDEDIRS=/opt/trinity/:/usr/
+ fi
diff --git a/redhat/tdebase/kdebase-3.5.13-add_disable_composite_option.patch b/redhat/tdebase/kdebase-3.5.13-add_disable_composite_option.patch
new file mode 100644
index 000000000..3fc57b6de
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-add_disable_composite_option.patch
@@ -0,0 +1,81 @@
+--- kdebase/kdesktop/bgmanager.cc.ORI 2012-09-06 17:20:49.564915154 -0400
++++ kdebase/kdesktop/bgmanager.cc 2012-09-06 17:21:01.969682348 -0400
+@@ -1013,13 +1013,13 @@
+ slotChangeDesktop(0);
+ }
+
+-#ifdef COMPOSITE
+ void KBackgroundManager::slotCmBackgroundChanged( bool )
+ {
++#ifdef COMPOSITE
+ m_tPixmap->fill(TQColor(0, 0x0));
+ m_Hash = 0;
+ slotChangeDesktop(0);
+-}
+ #endif
++}
+
+ #include "bgmanager.moc"
+--- kdebase/kdesktop/main.cc.ORI 2012-09-07 20:33:09.716283507 +0200
++++ kdebase/kdesktop/main.cc 2012-09-07 20:33:31.683842727 +0200
+@@ -43,7 +43,7 @@
+ #include <fcntl.h>
+ #include <stdlib.h>
+
+-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
++#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+ #define COMPOSITE
+ #endif
+
+--- kdebase/kdesktop/bgmanager.h.ORI 2012-09-07 20:36:28.196299160 +0200
++++ kdebase/kdesktop/bgmanager.h 2012-09-07 20:36:52.420812591 +0200
+@@ -15,7 +15,7 @@
+
+ #include <KBackgroundIface.h>
+
+-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
++#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+ #define COMPOSITE
+ #endif
+
+--- kdebase/kdesktop/kdesktopapp.h.ORI 2012-09-07 20:37:14.677365503 +0200
++++ kdebase/kdesktop/kdesktopapp.h 2012-09-07 20:37:25.194154223 +0200
+@@ -23,7 +23,7 @@
+ #include <config.h>
+ #include <kuniqueapplication.h>
+
+-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
++#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+ #define COMPOSITE
+ #endif
+
+--- kdebase/konsole/konsole/main.cpp.ORI 2012-09-07 20:37:37.749901966 +0200
++++ kdebase/konsole/konsole/main.cpp 2012-09-07 20:37:46.683722469 +0200
+@@ -46,7 +46,7 @@
+
+ #include "konsole.h"
+
+-#if defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
++#if defined(WITH_COMPOSITE) && defined(Q_WS_X11) && defined(HAVE_XRENDER) && QT_VERSION >= 0x030300
+ #define COMPOSITE
+ #endif
+
+--- kdebase/CMakeLists.txt.ORI 2012-09-07 20:41:11.142612361 +0200
++++ kdebase/CMakeLists.txt 2012-09-07 20:42:40.138822080 +0200
+@@ -78,6 +78,7 @@
+ option( WITH_ARTS "Enable aRts support" OFF )
+ option( WITH_I8K "Enable Dell laptop support (ksysguard)" OFF )
+ option( WITH_HAL "Enable HAL support" OFF )
++option( WITH_COMPOSITE "Enable COMPOSITE support" OFF )
+
+
+ ##### user requested modules ####################
+--- kdebase/config.h.cmake.composite 2012-09-07 20:44:49.980208832 +0200
++++ kdebase/config.h.cmake 2012-09-07 20:44:56.929068934 +0200
+@@ -177,3 +177,6 @@
+
+ // tsak
+ #cmakedefine BUILD_TSAK "@BUILD_TSAK@"
++
++ // kdesktop, konsole
++ #cmakedefine WITH_COMPOSITE "@WITH_COMPOSITE@"
diff --git a/redhat/tdebase/kdebase-3.5.13-add_drag_drop_to_kate_file_list.patch b/redhat/tdebase/kdebase-3.5.13-add_drag_drop_to_kate_file_list.patch
new file mode 100644
index 000000000..35f271e15
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-add_drag_drop_to_kate_file_list.patch
@@ -0,0 +1,33 @@
+commit b0fa10df6cf9ba377d6bfdef719efc8ca4fe57a0
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1337062555 -0500
+
+ Add drag and drop to kate file list in manual mode
+
+diff --git a/kate/app/katefilelist.cpp b/kate/app/katefilelist.cpp
+index bc5b0a1..bd2d087 100644
+--- a/kate/app/katefilelist.cpp
++++ b/kate/app/katefilelist.cpp
+@@ -102,7 +102,7 @@ KateFileList::KateFileList (KateMainWindow *main,
+ addColumn("Document Name");
+
+ setSelectionMode( TQListView::Single );
+- setSorting( 0, true );
++ setSortType(KateFileList::sortByID);
+ setShowToolTips( false );
+
+ setupActions ();
+@@ -408,9 +408,13 @@ void KateFileList::setSortType (int s)
+ m_sort = s;
+ if (m_sort == KateFileList::sortManual) {
+ setSorting( -1, true );
++ setDragEnabled(true);
++ setAcceptDrops(true);
+ }
+ else {
+ setSorting( 0, true );
++ setDragEnabled(false);
++ setAcceptDrops(false);
+ updateSort ();
+ }
+ }
diff --git a/redhat/tdebase/kdebase-3.5.13-add_reorder_documents_in_kate.patch b/redhat/tdebase/kdebase-3.5.13-add_reorder_documents_in_kate.patch
new file mode 100644
index 000000000..5518f13a9
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-add_reorder_documents_in_kate.patch
@@ -0,0 +1,167 @@
+commit 46a657f7108284d4f02107d11fa407cbf95b86b9
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1337058308 -0500
+
+ Add the ability to reorder documents in kate
+
+diff --git a/kate/app/katefilelist.cpp b/kate/app/katefilelist.cpp
+index 8d34c38..bc5b0a1 100644
+--- a/kate/app/katefilelist.cpp
++++ b/kate/app/katefilelist.cpp
+@@ -138,8 +138,14 @@ void KateFileList::setupActions ()
+ windowPrev = KStdAction::forward(TQT_TQOBJECT(this), TQT_SLOT(slotNextDocument()), m_main->actionCollection());
+ sortAction = new KSelectAction( i18n("Sort &By"), 0,
+ m_main->actionCollection(), "filelist_sortby" );
++ listMoveFileUp = new KAction( i18n("Move File Up"), 0, m_main->actionCollection(), "filelist_move_up" );
++ listMoveFileUp->setShortcut(KShortcut(CTRL + SHIFT + Key_Comma));
++ listMoveFileDown = new KAction( i18n("Move File Down"), 0, m_main->actionCollection(), "filelist_move_down" );
++ listMoveFileDown->setShortcut(KShortcut(CTRL + SHIFT + Key_Period));
++ connect( listMoveFileUp, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileUp()) );
++ connect( listMoveFileDown, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileDown()) );
+ TQStringList l;
+- l << i18n("Opening Order") << i18n("Document Name") << i18n("URL");
++ l << i18n("Opening Order") << i18n("Document Name") << i18n("URL") << i18n("Manual Placement");
+ sortAction->setItems( l );
+ connect( sortAction, TQT_SIGNAL(activated(int)), TQT_TQOBJECT(this), TQT_SLOT(setSortType(int)) );
+ }
+@@ -353,10 +359,25 @@ void KateFileList::slotMenu ( TQListViewItem *item, const TQPoint &p, int /*col*
+ if (!item)
+ return;
+
++ m_clickedMenuItem = item;
++ if (m_clickedMenuItem->itemAbove()) {
++ listMoveFileUp->setEnabled(true);
++ }
++ else {
++ listMoveFileUp->setEnabled(false);
++ }
++ if (m_clickedMenuItem->itemBelow()) {
++ listMoveFileDown->setEnabled(true);
++ }
++ else {
++ listMoveFileDown->setEnabled(false);
++ }
++
+ TQPopupMenu *menu = (TQPopupMenu*) ((viewManager->mainWindow())->factory()->container("filelist_popup", viewManager->mainWindow()));
+
+- if (menu)
++ if (menu) {
+ menu->exec(p);
++ }
+ }
+
+ TQString KateFileList::tooltip( TQListViewItem *item, int )
+@@ -385,7 +406,45 @@ TQString KateFileList::tooltip( TQListViewItem *item, int )
+ void KateFileList::setSortType (int s)
+ {
+ m_sort = s;
+- updateSort ();
++ if (m_sort == KateFileList::sortManual) {
++ setSorting( -1, true );
++ }
++ else {
++ setSorting( 0, true );
++ updateSort ();
++ }
++}
++
++void KateFileList::moveFileUp()
++{
++ if (m_clickedMenuItem) {
++ sortAction->setCurrentItem(KateFileList::sortManual);
++ setSortType(KateFileList::sortManual);
++ TQListViewItem* nitemabove = m_clickedMenuItem->itemAbove();
++ if (nitemabove) {
++ nitemabove = nitemabove->itemAbove();
++ if (nitemabove) {
++ m_clickedMenuItem->moveItem(nitemabove);
++ }
++ else {
++ // Qt made this hard
++ nitemabove = m_clickedMenuItem->itemAbove();
++ nitemabove->moveItem(m_clickedMenuItem);
++ }
++ }
++ }
++}
++
++void KateFileList::moveFileDown()
++{
++ if (m_clickedMenuItem) {
++ sortAction->setCurrentItem(KateFileList::sortManual);
++ setSortType(KateFileList::sortManual);
++ TQListViewItem* nitemabove = m_clickedMenuItem->itemBelow();
++ if (nitemabove) {
++ m_clickedMenuItem->moveItem(nitemabove);
++ }
++ }
+ }
+
+ void KateFileList::updateSort ()
+@@ -441,6 +500,11 @@ KateFileListItem::KateFileListItem( TQListView* lv,
+ m_edithistpos( 0 ),
+ m_docNumber( _doc->documentNumber() )
+ {
++ // Move this document to the end of the list where it belongs
++ TQListViewItem* lastitem = lv->lastItem();
++ if (lastitem) {
++ moveItem(lastitem);
++ }
+ }
+
+ KateFileListItem::~KateFileListItem()
+diff --git a/kate/app/katefilelist.h b/kate/app/katefilelist.h
+index 176898c..e3504cb 100644
+--- a/kate/app/katefilelist.h
++++ b/kate/app/katefilelist.h
+@@ -90,7 +90,8 @@ class KateFileList : public KListView
+ enum sorting {
+ sortByID = 0,
+ sortByName = 1,
+- sortByURL = 2
++ sortByURL = 2,
++ sortManual = 3
+ };
+
+ TQString tooltip( TQListViewItem *item, int );
+@@ -111,6 +112,8 @@ class KateFileList : public KListView
+
+ public slots:
+ void setSortType (int s);
++ void moveFileUp();
++ void moveFileDown();
+ void slotNextDocument();
+ void slotPrevDocument();
+
+@@ -151,6 +154,8 @@ class KateFileList : public KListView
+ KAction* windowNext;
+ KAction* windowPrev;
+ KSelectAction* sortAction;
++ KAction* listMoveFileUp;
++ KAction* listMoveFileDown;
+
+ TQPtrList<KateFileListItem> m_viewHistory;
+ TQPtrList<KateFileListItem> m_editHistory;
+@@ -158,6 +163,8 @@ class KateFileList : public KListView
+ TQColor m_viewShade, m_editShade;
+ bool m_enableBgShading;
+
++ TQListViewItem *m_clickedMenuItem;
++
+ class ToolTip *m_tooltip;
+ };
+
+diff --git a/kate/data/kateui.rc b/kate/data/kateui.rc
+index 27df006..6e784e9 100644
+--- a/kate/data/kateui.rc
++++ b/kate/data/kateui.rc
+@@ -162,6 +162,9 @@
+ <Action name="file_close"/>
+ <Action name="file_close_all"/>
+ <Separator/>
++ <Action name="filelist_move_up"/>
++ <Action name="filelist_move_down"/>
++ <Separator/>
+ <Action name="filelist_sortby"/>
+ </Menu>
+
diff --git a/redhat/tdebase/kdebase-3.5.13-add_usbstorage_panel.patch b/redhat/tdebase/kdebase-3.5.13-add_usbstorage_panel.patch
new file mode 100644
index 000000000..b75f1c84f
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-add_usbstorage_panel.patch
@@ -0,0 +1,1278 @@
+Index: kdebase/kioslave/media/kcmodule/managermoduleview.ui
+===================================================================
+--- kdebase/kioslave/media/kcmodule/managermoduleview.ui (revision 604326)
++++ kdebase/kioslave/media/kcmodule/managermoduleview.ui (working copy)
+@@ -12,6 +12,9 @@
+ <height>480</height>
+ </rect>
+ </property>
++ <property name="caption">
++ <string>ManagerModuleView</string>
++ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+@@ -49,6 +52,245 @@
+ <string>Select this if you want to enable application autostart after mounting a device.</string>
+ </property>
+ </widget>
++ <widget class="TQGroupBox">
++ <property name="name">
++ <cstring>groupbox_mount</cstring>
++ </property>
++ <property name="title">
++ <string>Mount options</string>
++ </property>
++ <vbox>
++ <property name="name">
++ <cstring>unnamed</cstring>
++ </property>
++ <widget class="TQLabel">
++ <property name="name">
++ <cstring>textLabel3</cstring>
++ </property>
++ <property name="text">
++ <string>Here you can specify default mount options for your storage media. Please note that some options are not supported for certain filesystems and/or medium. You will be able to redefine all these options on per-volume basis later, using Properties dialog of the corresponding volume.&lt;br&gt;
++Some of the options are tristate. Leave them "undefined" to let KDE choose the best value depending on your media.</string>
++ </property>
++ <property name="alignment">
++ <set>WordBreak|AlignVCenter</set>
++ </property>
++ </widget>
++ <widget class="TQLayoutWidget">
++ <property name="name">
++ <cstring>layout30</cstring>
++ </property>
++ <grid>
++ <property name="name">
++ <cstring>unnamed</cstring>
++ </property>
++ <widget class="TQCheckBox" row="1" column="0">
++ <property name="name">
++ <cstring>option_ro</cstring>
++ </property>
++ <property name="text">
++ <string>Read only</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>By default, mount all file systems read-only.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox" row="2" column="1">
++ <property name="name">
++ <cstring>option_uid</cstring>
++ </property>
++ <property name="text">
++ <string>Mount as user</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Mount this file system as user.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox" row="0" column="1">
++ <property name="name">
++ <cstring>option_flush</cstring>
++ </property>
++ <property name="text">
++ <string>Flushed IO</string>
++ </property>
++ <property name="tristate">
++ <bool>true</bool>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Always flush all data to the hot plug devices immediately and don't cache it.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox" row="3" column="0">
++ <property name="name">
++ <cstring>option_sync</cstring>
++ </property>
++ <property name="text">
++ <string>Synchronous</string>
++ </property>
++ <property name="tristate">
++ <bool>true</bool>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>All I/O to the file system should be done synchronously.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox" row="2" column="0">
++ <property name="name">
++ <cstring>option_quiet</cstring>
++ </property>
++ <property name="text">
++ <string>Quiet</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Attempts to chown or chmod files do not return errors, although they fail. Use with caution!</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox" row="1" column="1">
++ <property name="name">
++ <cstring>option_utf8</cstring>
++ </property>
++ <property name="text">
++ <string>UTF-8 charset</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>UTF8 is the filesystem safe 8-bit encoding of Unicode that is used by the console. It can be be enabled for the filesystem with this option.</string>
++ </property>
++ </widget>
++ <widget class="TQLayoutWidget" row="3" column="1" rowspan="2" colspan="1">
++ <property name="name">
++ <cstring>layout29</cstring>
++ </property>
++ <grid>
++ <property name="name">
++ <cstring>unnamed</cstring>
++ </property>
++ <widget class="TQLabel" row="1" column="0">
++ <property name="name">
++ <cstring>text_shortname</cstring>
++ </property>
++ <property name="text">
++ <string>Short names:</string>
++ </property>
++ <property name="buddy" stdset="0">
++ <cstring>option_shortname</cstring>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>&lt;h2&gt;Defines the behaviour for creation and display of filenames which fit into 8.3 characters. If a long name for a file exists, it will always be preferred display.&lt;/h2&gt;
++
++&lt;h3&gt;&lt;b&gt;Lower&lt;/b&gt;&lt;/h3&gt;
++Force the short name to lower case upon display; store a long name when the short name is not all upper case.
++
++&lt;h3&gt;&lt;b&gt;Windows 95&lt;/b&gt;&lt;/h3&gt;
++Force the short name to upper case upon display; store a long name when the short name is not all upper case.
++
++&lt;h3&gt;&lt;b&gt;Windows NT&lt;/b&gt;&lt;/h3&gt;
++Display the shortname as is; store a long name when the short name is not all lower case or all upper case.
++
++&lt;h3&gt;&lt;b&gt;Mixed&lt;/b&gt;&lt;/h3&gt;
++Display the short name as is; store a long name when the short name is not all upper case.</string>
++ </property>
++ </widget>
++ <widget class="TQComboBox" row="0" column="1">
++ <item>
++ <property name="text">
++ <string>All Data</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Ordered</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Writeback</string>
++ </property>
++ </item>
++ <property name="name">
++ <cstring>option_journaling</cstring>
++ </property>
++ <property name="currentItem">
++ <number>1</number>
++ </property>
++ </widget>
++ <widget class="TQLabel" row="0" column="0">
++ <property name="name">
++ <cstring>text_journaling</cstring>
++ </property>
++ <property name="text">
++ <string>Journaling:</string>
++ </property>
++ <property name="buddy" stdset="0">
++ <cstring>option_journaling</cstring>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>&lt;h2&gt;Specifies the journalling mode for file data. Metadata is always journaled. &lt;/h2&gt;
++
++&lt;h3&gt;&lt;b&gt;All Data&lt;/b&gt;&lt;/h3&gt;
++ All data is committed into the journal prior to being written into the main file system. This is the slowest variant with the highest data security.
++
++&lt;h3&gt;&lt;b&gt;Ordered&lt;/b&gt;&lt;/h3&gt;
++ All data is forced directly out to the main file system prior to its metadata being committed to the journal.
++
++&lt;h3&gt;&lt;b&gt;Write Back&lt;/b&gt;&lt;/h3&gt;
++ Data ordering is not preserved - data may be written into the main file system after its metadata has been committed to the journal. This is rumoured to be the highest-throughput option. It guarantees internal file system integrity, however it can allow old data to appear in files after a crash and journal recovery.</string>
++ </property>
++ </widget>
++ <widget class="TQComboBox" row="1" column="1">
++ <item>
++ <property name="text">
++ <string>Lower</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Windows 95</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Windows NT</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Mixed</string>
++ </property>
++ </item>
++ <property name="name">
++ <cstring>option_shortname</cstring>
++ </property>
++ </widget>
++ </grid>
++ </widget>
++ <widget class="TQCheckBox" row="0" column="0">
++ <property name="name">
++ <cstring>option_automount</cstring>
++ </property>
++ <property name="text">
++ <string>Mount automatically</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>By default, mount all file systems automatically.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox" row="4" column="0">
++ <property name="name">
++ <cstring>option_atime</cstring>
++ </property>
++ <property name="text">
++ <string>Access time updates</string>
++ </property>
++ <property name="tristate">
++ <bool>true</bool>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Update inode access time for each access.</string>
++ </property>
++ </widget>
++ </grid>
++ </widget>
++ </vbox>
++ </widget>
+ <spacer>
+ <property name="name">
+ <cstring>spacer1</cstring>
+@@ -62,11 +304,40 @@
+ <property name="tqsizeHint">
+ <size>
+ <width>21</width>
+- <height>360</height>
++ <height>130</height>
+ </size>
+ </property>
+ </spacer>
+ </vbox>
+ </widget>
++<connections>
++ <connection>
++ <sender>kcfg_HalBackendEnabled</sender>
++ <signal>toggled(bool)</signal>
++ <receiver>groupbox_mount</receiver>
++ <slot>setEnabled(bool)</slot>
++ </connection>
++</connections>
++<tabstops>
++ <tabstop>kcfg_HalBackendEnabled</tabstop>
++ <tabstop>kcfg_CdPollingEnabled</tabstop>
++ <tabstop>kcfg_AutostartEnabled</tabstop>
++ <tabstop>option_automount</tabstop>
++ <tabstop>option_ro</tabstop>
++ <tabstop>option_quiet</tabstop>
++ <tabstop>option_sync</tabstop>
++ <tabstop>option_atime</tabstop>
++ <tabstop>option_flush</tabstop>
++ <tabstop>option_utf8</tabstop>
++ <tabstop>option_uid</tabstop>
++ <tabstop>option_journaling</tabstop>
++ <tabstop>option_shortname</tabstop>
++</tabstops>
++<includes>
++ <include location="local" impldecl="in implementation">managermoduleview.ui.h</include>
++</includes>
++<functions>
++ <function access="private" specifier="non virtual">init()</function>
++</functions>
+ <layoutdefaults spacing="6" margin="11"/>
+ </UI>
+Index: kdebase/kioslave/media/kcmodule/managermodule.cpp
+===================================================================
+--- kdebase/kioslave/media/kcmodule/managermodule.cpp (revision 604326)
++++ kdebase/kioslave/media/kcmodule/managermodule.cpp (working copy)
+@@ -1,5 +1,6 @@
+ /* This file is part of the KDE Project
+ Copyright (c) 2005 Kvin Ottens <ervin ipsquad net>
++ Copyright (c) 2006 Valentine Sinitsyn <e_val@inbox.ru>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+@@ -20,9 +21,13 @@
+
+ #include "managermodule.h"
+
++#include <kconfig.h>
+ #include <klocale.h>
+ #include <dcopref.h>
++#include <tqbutton.h>
+ #include <tqcheckbox.h>
++#include <tqcombobox.h>
++#include <tqobjectlist.h>
+ #include <kdirnotify_stub.h>
+
+ #include "managermoduleview.h"
+@@ -31,7 +36,7 @@
+ ManagerModule::ManagerModule( TQWidget* parent, const char* name )
+ : KCModule( parent, name )
+ {
+- ManagerModuleView *view = new ManagerModuleView( this );
++ view = new ManagerModuleView( this );
+
+ addConfig( MediaManagerSettings::self(), view );
+
+@@ -49,12 +54,87 @@
+ #endif
+ view->kcfg_CdPollingEnabled->setEnabled( false );
+
++ connect( view->option_automount, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_ro, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_quiet, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_flush, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_uid, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_utf8, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_sync, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_atime, SIGNAL( stateChanged(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_shortname, SIGNAL( activated(int) ), this, SLOT( emitChanged() ) );
++ connect( view->option_journaling, SIGNAL( activated(int) ), this, SLOT( emitChanged() ) );
++
+ load();
++}
++
++
++void ManagerModule::load()
++{
++ KCModule::load();
++
++ KConfig config("mediamanagerrc");
++ config.setGroup("DefaultOptions");
++
++ view->option_automount->setChecked( config.readBoolEntry("automount", false) );
++ view->option_ro->setChecked( config.readBoolEntry("ro", false) );
++ view->option_quiet->setChecked( config.readBoolEntry("quiet", false) );
++ if (config.hasKey("flush"))
++ view->option_flush->setChecked( config.readBoolEntry("flush") );
++ else
++ view->option_flush->setNoChange();
++ view->option_uid->setChecked( config.readBoolEntry("uid", true) );
++ view->option_utf8->setChecked( config.readBoolEntry("utf8", true) );
++ if (config.hasKey("sync"))
++ view->option_sync->setChecked( config.readBoolEntry("sync") );
++ else
++ view->option_sync->setNoChange();
++ if (config.hasKey("atime"))
++ view->option_atime->setChecked( config.readBoolEntry("atime") );
++ else
++ view->option_atime->setNoChange();
++
++ QString value;
++
++ value = config.readEntry("shortname", "lower").lower();
++ for (int i = 0; i < view->option_shortname->count(); i++)
++ if (view->option_shortname->text(i).lower() == value) view->option_shortname->setCurrentItem(i);
++
++ value = config.readEntry("journaling", "ordered").lower();
++ for (int i = 0; i < view->option_journaling->count(); i++)
++ if (view->option_journaling->text(i).lower() == value) view->option_journaling->setCurrentItem(i);
++
++ rememberSettings();
+ }
+
+ void ManagerModule::save()
+ {
+ KCModule::save();
++
++ KConfig config("mediamanagerrc");
++ config.setGroup("DefaultOptions");
++
++ config.writeEntry("automount", view->option_automount->isChecked());
++ config.writeEntry("ro", view->option_ro->isChecked());
++ config.writeEntry("quiet", view->option_quiet->isChecked());
++ if (view->option_flush->state() == QButton::NoChange)
++ config.deleteEntry("flush");
++ else
++ config.writeEntry("flush", view->option_flush->isChecked());
++ config.writeEntry("uid", view->option_uid->isChecked());
++ config.writeEntry("utf8", view->option_utf8->isChecked());
++ if (view->option_sync->state() == QButton::NoChange)
++ config.deleteEntry("sync");
++ else
++ config.writeEntry("sync", view->option_sync->isChecked());
++ if (view->option_atime->state() == QButton::NoChange)
++ config.deleteEntry("atime");
++ else
++ config.writeEntry("atime", view->option_atime->isChecked());
++ config.writeEntry("journaling", view->option_journaling->currentText().lower());
++ config.writeEntry("shortname", view->option_shortname->currentText().lower());
++
++ rememberSettings();
+
+ //Well... reloadBackends is buggy with HAL, it seems to be linked
+ //to a bug in the unmaintained Qt3 DBUS binding ;-/
+@@ -70,5 +150,64 @@
+ notifier.FilesAdded( "media:/" );
+ }
+
++void ManagerModule::defaults()
++{
++ KCModule::defaults();
++
++ view->option_automount->setChecked(false);
++ view->option_ro->setChecked(false);
++ view->option_quiet->setChecked(false);
++ view->option_flush->setNoChange();
++ view->option_uid->setChecked(true);
++ view->option_utf8->setChecked(true);
++ view->option_sync->setNoChange();
++ view->option_atime->setNoChange();
++ view->option_journaling->setCurrentItem(1);
++ view->option_shortname->setCurrentItem(0);
++}
+
++void ManagerModule::rememberSettings()
++{
++ QObjectList *options = view->queryList(0, "^option_");
++ QObject *current = 0;
++ QObjectListIterator it(*options);
++
++ settings.clear();
++ while ( (current = it.current()) != 0 ) {
++ if (current->isA("QCheckBox"))
++ settings[current] = ((QCheckBox *)current)->state();
++ else if (current->isA("QComboBox"))
++ settings[current] = ((QComboBox *)current)->currentItem();
++ ++it;
++ }
++ delete options;
++
++}
++
++void ManagerModule::emitChanged()
++{
++ QObjectList *options = view->queryList(0, "^option_");
++ QObject *current = 0;
++ QObjectListIterator it(*options);
++ int value = -1;
++ bool somethingChanged = false;
++
++ while ( (current = it.current()) != 0 ) {
++ if (current->isA("QCheckBox"))
++ value = ((QCheckBox *)current)->state();
++ else if (current->isA("QComboBox"))
++ value = ((QComboBox *)current)->currentItem();
++
++ if (settings[current] != value) {
++ somethingChanged = true;
++ break;
++ }
++
++ ++it;
++ }
++ delete options;
++
++ emit changed(somethingChanged);
++}
++
+ #include "managermodule.moc"
+Index: kdebase/kioslave/media/kcmodule/main.cpp
+===================================================================
+--- kdebase/kioslave/media/kcmodule/main.cpp (revision 604326)
++++ kdebase/kioslave/media/kcmodule/main.cpp (working copy)
+@@ -67,6 +67,7 @@
+ I18N_NOOP("(c) 2005 Jean-Remy Falleri"));
+ about->addAuthor("Jean-Remy Falleri", I18N_NOOP("Maintainer"), "jr.falleri@laposte.net");
+ about->addAuthor("Kevin Ottens", 0, "ervin ipsquad net");
++ about->addAuthor("Valentine Sinitsyn", 0, "e_val@inbox.ru");
+ about->addCredit("Achim Bohnet", I18N_NOOP("Help for the application design"));
+
+ setAboutData( about );
+Index: kdebase/kioslave/media/kcmodule/managermodule.h
+===================================================================
+--- kdebase/kioslave/media/kcmodule/managermodule.h (revision 604326)
++++ kdebase/kioslave/media/kcmodule/managermodule.h (working copy)
+@@ -1,5 +1,6 @@
+ /* This file is part of the KDE Project
+ Copyright (c) 2005 Kvin Ottens <ervin ipsquad net>
++ Copyright (c) 2006 Valentine Sinitsyn <e_val@inbox.ru>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+@@ -19,8 +20,11 @@
+ #ifndef _MANAGERMODULE_H_
+ #define _MANAGERMODULE_H_
+
++#include <tqmap.h>
+ #include <kcmodule.h>
+
++class ManagerModuleView;
++
+ class ManagerModule : public KCModule
+ {
+ Q_OBJECT
+@@ -28,7 +32,18 @@
+ public:
+ ManagerModule( TQWidget* parent = 0, const char* name = 0);
+
++ void load();
+ void save();
++ void defaults();
++
++private:
++ void rememberSettings();
++
++ ManagerModuleView *view;
++ TQMap<TQObject *, int> settings;
++
++private slots:
++ void emitChanged();
+ };
+
+ #endif
+Index: kdebase/kioslave/media/kcmodule/managermoduleview.ui.h
+===================================================================
+--- kdebase/kioslave/media/kcmodule/managermoduleview.ui.h (revision 0)
++++ kdebase/kioslave/media/kcmodule/managermoduleview.ui.h (revision 0)
+@@ -0,0 +1,18 @@
++/****************************************************************************
++** ui.h extension file, included from the uic-generated form implementation.
++**
++** If you want to add, delete, or rename functions or slots, use
++** Qt Designer to update this file, preserving your code.
++**
++** You should not define a constructor or destructor in this file.
++** Instead, write your code in functions called init() and destroy().
++** These will automatically be called by the form's constructor and
++** destructor.
++*****************************************************************************/
++
++void ManagerModuleView::init()
++{
++ option_flush->setNoChange();
++ option_sync->setNoChange();
++ option_atime->setNoChange();
++}
+Index: kdebase/kioslave/media/propsdlgplugin/propertiespage.cpp
+===================================================================
+--- kdebase/kioslave/media/propsdlgplugin/propertiespage.cpp (revision 604326)
++++ kdebase/kioslave/media/propsdlgplugin/propertiespage.cpp (working copy)
+@@ -140,12 +140,23 @@
+ option_automount->setChecked(options["automount"] == "true");
+ connect( option_automount, TQT_SIGNAL( stateChanged(int) ), TQT_SIGNAL( changed() ) );
+
++ bool has_groupbox_specific = true;
+ if (!options.contains("journaling") &&
+ !options.contains("shortname") &&
+ !options.contains("uid") &&
+ !options.contains("utf8") &&
+- !options.contains("flush"))
++ !options.contains("flush")) {
+ groupbox_specific->hide();
++ has_groupbox_specific = false;
++ }
++
++ // The order is important - we want groupboxes to hide automatically depending on use_defaults
++ // but don't want to emit changed() until user actually changes something.
++ connect( option_defaults, TQT_SIGNAL( toggled(bool) ), groupbox_generic, SLOT( setHidden(bool) ) );
++ if (has_groupbox_specific)
++ connect( option_defaults, TQT_SIGNAL( toggled(bool) ), groupbox_specific, SLOT( setHidden(bool) ) );
++ option_defaults->setChecked(options["use_defaults"] == "true");
++ connect( option_defaults, TQT_SIGNAL( stateChanged(int) ), TQT_SIGNAL( changed() ) );
+
+ } else {
+
+@@ -198,6 +210,7 @@
+ }
+ result << TQString("mountpoint=%1").arg(mp);
+ result << TQString("automount=%1").arg(option_automount->isChecked() ? "true" : "false");
++ result << TQString("use_defaults=%1").arg(option_defaults->isChecked() ? "true" : "false");
+
+ kdDebug() << result << endl;
+
+Index: kdebase/kioslave/media/propsdlgplugin/propertiespagegui.ui
+===================================================================
+--- kdebase/kioslave/media/propsdlgplugin/propertiespagegui.ui (revision 604326)
++++ kdebase/kioslave/media/propsdlgplugin/propertiespagegui.ui (working copy)
+@@ -8,207 +8,207 @@
+ <rect>
+ <x>0</x>
+ <y>0</y>
+- <width>527</width>
+- <height>476</height>
++ <width>219</width>
++ <height>446</height>
+ </rect>
+ </property>
+- <hbox>
++ <property name="caption">
++ <string>PropertiesPageGUI</string>
++ </property>
++ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+- <property name="margin">
+- <number>0</number>
+- </property>
+- <widget class="TQLayoutWidget">
++ <widget class="TQCheckBox">
+ <property name="name">
+- <cstring>layout17</cstring>
++ <cstring>option_defaults</cstring>
+ </property>
++ <property name="text">
++ <string>Use default mount options</string>
++ </property>
++ </widget>
++ <widget class="TQGroupBox">
++ <property name="name">
++ <cstring>groupbox_generic</cstring>
++ </property>
++ <property name="title">
++ <string>Generic Mount Options</string>
++ </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+- <widget class="TQGroupBox">
++ <widget class="TQLayoutWidget">
+ <property name="name">
+- <cstring>groupbox_generic</cstring>
++ <cstring>layout15</cstring>
+ </property>
+- <property name="title">
+- <string>Generic Mount Options</string>
+- </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_ro</cstring>
++ </property>
++ <property name="text">
++ <string>Read only</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Mount the file system read-only.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_quiet</cstring>
++ </property>
++ <property name="text">
++ <string>Quiet</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Attempts to chown or chmod files do not return errors, although they fail. Use with caution!</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_sync</cstring>
++ </property>
++ <property name="text">
++ <string>Synchronous</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>All I/O to the file system should be done synchronously.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_atime</cstring>
++ </property>
++ <property name="text">
++ <string>Access time updates</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Update inode access time for each access.</string>
++ </property>
++ </widget>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+- <cstring>layout15</cstring>
++ <cstring>layout14</cstring>
+ </property>
+- <vbox>
++ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+- <widget class="TQCheckBox">
++ <widget class="TQLabel">
+ <property name="name">
+- <cstring>option_ro</cstring>
++ <cstring>textLabel3</cstring>
+ </property>
+ <property name="text">
+- <string>Read only</string>
++ <string>Mountpoint:</string>
+ </property>
+- <property name="whatsThis" stdset="0">
+- <string>Mount the file system read-only.</string>
++ <property name="buddy" stdset="0">
++ <cstring>option_mountpoint</cstring>
+ </property>
+- </widget>
+- <widget class="TQCheckBox">
+- <property name="name">
+- <cstring>option_quiet</cstring>
+- </property>
+- <property name="text">
+- <string>Quiet</string>
+- </property>
+ <property name="whatsThis" stdset="0">
+- <string>Attempts to chown or chmod files do not return errors, although they fail. Use with caution!</string>
++ <string>Under what directory this file system shall be mounted. Please note that there is no guarantee that the system will respect your wish. For one the directory has to be below /media - and it does not yet have to exist.</string>
+ </property>
+ </widget>
+- <widget class="TQCheckBox">
++ <widget class="TQLineEdit">
+ <property name="name">
+- <cstring>option_sync</cstring>
++ <cstring>option_mountpoint</cstring>
+ </property>
+ <property name="text">
+- <string>Synchronous</string>
++ <string></string>
+ </property>
+- <property name="whatsThis" stdset="0">
+- <string>All I/O to the file system should be done synchronously.</string>
+- </property>
+ </widget>
+- <widget class="TQCheckBox">
+- <property name="name">
+- <cstring>option_atime</cstring>
+- </property>
+- <property name="text">
+- <string>Access time updates</string>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>Update inode access time for each access.</string>
+- </property>
+- </widget>
+- <widget class="TQLayoutWidget">
+- <property name="name">
+- <cstring>layout14</cstring>
+- </property>
+- <hbox>
+- <property name="name">
+- <cstring>unnamed</cstring>
+- </property>
+- <widget class="TQLabel">
+- <property name="name">
+- <cstring>textLabel3</cstring>
+- </property>
+- <property name="text">
+- <string>Mountpoint:</string>
+- </property>
+- <property name="buddy" stdset="0">
+- <cstring>option_mountpoint</cstring>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>Under what directory this file system shall be mounted. Please note that there is no guarantee that the system will respect your wish. For one the directory has to be below /media - and it does not yet have to exist.</string>
+- </property>
+- </widget>
+- <widget class="TQLineEdit">
+- <property name="name">
+- <cstring>option_mountpoint</cstring>
+- </property>
+- <property name="text">
+- <string></string>
+- </property>
+- </widget>
+- </hbox>
+- </widget>
+- <widget class="TQCheckBox">
+- <property name="name">
+- <cstring>option_automount</cstring>
+- </property>
+- <property name="text">
+- <string>Mount automatically</string>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>Mount this file system automatically.</string>
+- </property>
+- </widget>
+- </vbox>
++ </hbox>
+ </widget>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_automount</cstring>
++ </property>
++ <property name="text">
++ <string>Mount automatically</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Mount this file system automatically.</string>
++ </property>
++ </widget>
+ </vbox>
+ </widget>
+- <widget class="TQGroupBox">
++ </vbox>
++ </widget>
++ <widget class="TQGroupBox">
++ <property name="name">
++ <cstring>groupbox_specific</cstring>
++ </property>
++ <property name="title">
++ <string>Filesystem Specific Mount Options</string>
++ </property>
++ <vbox>
++ <property name="name">
++ <cstring>unnamed</cstring>
++ </property>
++ <widget class="TQLayoutWidget">
+ <property name="name">
+- <cstring>groupbox_specific</cstring>
++ <cstring>layout11</cstring>
+ </property>
+- <property name="title">
+- <string>Filesystem Specific Mount Options</string>
+- </property>
+ <vbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_flush</cstring>
++ </property>
++ <property name="text">
++ <string>Flushed IO</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Always flush all data to the hot plug devices immediately and don't cache it.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_utf8</cstring>
++ </property>
++ <property name="text">
++ <string>UTF-8 charset</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>UTF8 is the filesystem safe 8-bit encoding of Unicode that is used by the console. It can be be enabled for the filesystem with this option.</string>
++ </property>
++ </widget>
++ <widget class="TQCheckBox">
++ <property name="name">
++ <cstring>option_uid</cstring>
++ </property>
++ <property name="text">
++ <string>Mount as user</string>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>Mount this file system as user.</string>
++ </property>
++ </widget>
+ <widget class="TQLayoutWidget">
+ <property name="name">
+- <cstring>layout11</cstring>
++ <cstring>layout7</cstring>
+ </property>
+- <vbox>
++ <hbox>
+ <property name="name">
+ <cstring>unnamed</cstring>
+ </property>
+- <widget class="TQCheckBox">
++ <widget class="TQLabel">
+ <property name="name">
+- <cstring>option_flush</cstring>
++ <cstring>text_journaling</cstring>
+ </property>
+ <property name="text">
+- <string>Flushed IO</string>
++ <string>Journaling:</string>
+ </property>
+- <property name="whatsThis" stdset="0">
+- <string>Always flush all data to the hot plug devices immediately and don't cache it.</string>
++ <property name="buddy" stdset="0">
++ <cstring>option_journaling</cstring>
+ </property>
+- </widget>
+- <widget class="TQCheckBox">
+- <property name="name">
+- <cstring>option_utf8</cstring>
+- </property>
+- <property name="text">
+- <string>UTF-8 charset</string>
+- </property>
+ <property name="whatsThis" stdset="0">
+- <string>UTF8 is the filesystem safe 8-bit encoding of Unicode that is used by the console. It can be be enabled for the filesystem with this option.</string>
+- </property>
+- </widget>
+- <widget class="TQCheckBox">
+- <property name="name">
+- <cstring>option_uid</cstring>
+- </property>
+- <property name="text">
+- <string>Mount as user</string>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>Mount this file system as user.</string>
+- </property>
+- </widget>
+- <widget class="TQLayoutWidget">
+- <property name="name">
+- <cstring>layout7</cstring>
+- </property>
+- <hbox>
+- <property name="name">
+- <cstring>unnamed</cstring>
+- </property>
+- <widget class="TQLabel">
+- <property name="name">
+- <cstring>text_journaling</cstring>
+- </property>
+- <property name="text">
+- <string>Journaling:</string>
+- </property>
+- <property name="buddy" stdset="0">
+- <cstring>option_journaling</cstring>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>&lt;h2&gt;Specifies the journalling mode for file data. Metadata is always journaled. &lt;/h2&gt;
++ <string>&lt;h2&gt;Specifies the journalling mode for file data. Metadata is always journaled. &lt;/h2&gt;
+
+ &lt;h3&gt;&lt;b&gt;All Data&lt;/b&gt;&lt;/h3&gt;
+ All data is committed into the journal prior to being written into the main file system. This is the slowest variant with the highest data security.
+@@ -218,29 +218,29 @@
+
+ &lt;h3&gt;&lt;b&gt;Write Back&lt;/b&gt;&lt;/h3&gt;
+ Data ordering is not preserved - data may be written into the main file system after its metadata has been committed to the journal. This is rumoured to be the highest-throughput option. It guarantees internal file system integrity, however it can allow old data to appear in files after a crash and journal recovery.</string>
+- </property>
+- </widget>
+- <widget class="TQComboBox">
+- <item>
+- <property name="text">
+- <string>All Data</string>
+- </property>
+- </item>
+- <item>
+- <property name="text">
+- <string>Ordered</string>
+- </property>
+- </item>
+- <item>
+- <property name="text">
+- <string>Write Back</string>
+- </property>
+- </item>
+- <property name="name">
+- <cstring>option_journaling</cstring>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>&lt;h2&gt;Specifies the journalling mode for file data. Metadata is always journaled. &lt;/h2&gt;
++ </property>
++ </widget>
++ <widget class="TQComboBox">
++ <item>
++ <property name="text">
++ <string>All Data</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Ordered</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Write Back</string>
++ </property>
++ </item>
++ <property name="name">
++ <cstring>option_journaling</cstring>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>&lt;h2&gt;Specifies the journalling mode for file data. Metadata is always journaled. &lt;/h2&gt;
+
+ &lt;h3&gt;&lt;b&gt;All Data&lt;/b&gt;&lt;/h3&gt;
+ All data is committed into the journal prior to being written into the main file system. This is the slowest variant with the highest data security.
+@@ -250,30 +250,30 @@
+
+ &lt;h3&gt;&lt;b&gt;Write Back&lt;/b&gt;&lt;/h3&gt;
+ Data ordering is not preserved - data may be written into the main file system after its metadata has been committed to the journal. This is rumoured to be the highest-throughput option. It guarantees internal file system integrity, however it can allow old data to appear in files after a crash and journal recovery.</string>
+- </property>
+- </widget>
+- </hbox>
++ </property>
+ </widget>
+- <widget class="TQLayoutWidget">
++ </hbox>
++ </widget>
++ <widget class="TQLayoutWidget">
++ <property name="name">
++ <cstring>layout14</cstring>
++ </property>
++ <hbox>
++ <property name="name">
++ <cstring>unnamed</cstring>
++ </property>
++ <widget class="TQLabel">
+ <property name="name">
+- <cstring>layout14</cstring>
++ <cstring>text_shortname</cstring>
+ </property>
+- <hbox>
+- <property name="name">
+- <cstring>unnamed</cstring>
+- </property>
+- <widget class="TQLabel">
+- <property name="name">
+- <cstring>text_shortname</cstring>
+- </property>
+- <property name="text">
+- <string>Short names:</string>
+- </property>
+- <property name="buddy" stdset="0">
+- <cstring>option_shortname</cstring>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>&lt;h2&gt;Defines the behaviour for creation and display of filenames which fit into 8.3 characters. If a long name for a file exists, it will always be preferred display.&lt;/h2&gt;
++ <property name="text">
++ <string>Short names:</string>
++ </property>
++ <property name="buddy" stdset="0">
++ <cstring>option_shortname</cstring>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>&lt;h2&gt;Defines the behaviour for creation and display of filenames which fit into 8.3 characters. If a long name for a file exists, it will always be preferred display.&lt;/h2&gt;
+
+ &lt;h3&gt;&lt;b&gt;Lower&lt;/b&gt;&lt;/h3&gt;
+ Force the short name to lower case upon display; store a long name when the short name is not all upper case.
+@@ -286,34 +286,34 @@
+
+ &lt;h3&gt;&lt;b&gt;Mixed&lt;/b&gt;&lt;/h3&gt;
+ Display the short name as is; store a long name when the short name is not all upper case.</string>
+- </property>
+- </widget>
+- <widget class="TQComboBox">
+- <item>
+- <property name="text">
+- <string>Lower</string>
+- </property>
+- </item>
+- <item>
+- <property name="text">
+- <string>Windows 95</string>
+- </property>
+- </item>
+- <item>
+- <property name="text">
+- <string>Windows NT</string>
+- </property>
+- </item>
+- <item>
+- <property name="text">
+- <string>Mixed</string>
+- </property>
+- </item>
+- <property name="name">
+- <cstring>option_shortname</cstring>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>&lt;h2&gt;Defines the behaviour for creation and display of filenames which fit into 8.3 characters. If a long name for a file exists, it will always be preferred display.&lt;/h2&gt;
++ </property>
++ </widget>
++ <widget class="TQComboBox">
++ <item>
++ <property name="text">
++ <string>Lower</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Windows 95</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Windows NT</string>
++ </property>
++ </item>
++ <item>
++ <property name="text">
++ <string>Mixed</string>
++ </property>
++ </item>
++ <property name="name">
++ <cstring>option_shortname</cstring>
++ </property>
++ <property name="whatsThis" stdset="0">
++ <string>&lt;h2&gt;Defines the behaviour for creation and display of filenames which fit into 8.3 characters. If a long name for a file exists, it will always be preferred display.&lt;/h2&gt;
+
+ &lt;h3&gt;&lt;b&gt;Lower&lt;/b&gt;&lt;/h3&gt;
+ Force the short name to lower case upon display; store a long name when the short name is not all upper case.
+@@ -326,42 +326,40 @@
+
+ &lt;h3&gt;&lt;b&gt;Mixed&lt;/b&gt;&lt;/h3&gt;
+ Display the short name as is; store a long name when the short name is not all upper case.</string>
+- </property>
+- </widget>
+- </hbox>
++ </property>
+ </widget>
+- </vbox>
++ </hbox>
+ </widget>
+ </vbox>
+ </widget>
+- <widget class="TQLabel">
+- <property name="name">
+- <cstring>label_filesystem</cstring>
+- </property>
+- <property name="text">
+- <string>Filesystem: iso9660</string>
+- </property>
+- </widget>
+- <spacer>
+- <property name="name">
+- <cstring>spacer1</cstring>
+- </property>
+- <property name="orientation">
+- <enum>Vertical</enum>
+- </property>
+- <property name="sizeType">
+- <enum>Expanding</enum>
+- </property>
+- <property name="tqsizeHint">
+- <size>
+- <width>20</width>
+- <height>20</height>
+- </size>
+- </property>
+- </spacer>
+ </vbox>
+ </widget>
+- </hbox>
++ <widget class="TQLabel">
++ <property name="name">
++ <cstring>label_filesystem</cstring>
++ </property>
++ <property name="text">
++ <string>Filesystem: iso9660</string>
++ </property>
++ </widget>
++ <spacer>
++ <property name="name">
++ <cstring>spacer1</cstring>
++ </property>
++ <property name="orientation">
++ <enum>Vertical</enum>
++ </property>
++ <property name="sizeType">
++ <enum>Expanding</enum>
++ </property>
++ <property name="tqsizeHint">
++ <size>
++ <width>20</width>
++ <height>20</height>
++ </size>
++ </property>
++ </spacer>
++ </vbox>
+ </widget>
+ <connections>
+ <connection>
+Index: kdebase/kioslave/media/mediamanager/halbackend.cpp
+===================================================================
+--- kdebase/kioslave/media/mediamanager/halbackend.cpp (revision 604326)
++++ kdebase/kioslave/media/mediamanager/halbackend.cpp (working copy)
+@@ -1,5 +1,6 @@
+ /* This file is part of the KDE Project
+ Copyright (c) 2004-2005 Jérôme Lodewyck <jerome dot lodewyck at normalesup dot org>
++ Copyright (c) 2006 Valentine Sinitsyn <e_val@inbox.ru>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+@@ -56,9 +57,7 @@
+ {
+ char* _ppt_string;
+ TQString _ppt_QString;
+- DBusError error;
+- dbus_error_init(&error);
+- _ppt_string = libhal_device_get_property_string(ctx, udi, key, &error);
++ _ppt_string = libhal_device_get_property_string(ctx, udi, key, NULL);
+ if ( _ppt_string )
+ _ppt_QString = _ppt_string;
+ libhal_free_string(_ppt_string);
+@@ -929,7 +928,16 @@
+ }
+
+ KConfig config("mediamanagerrc");
+- config.setGroup(name);
++
++ bool use_defaults = true;
++ if (config.hasGroup(name))
++ {
++ config.setGroup(name);
++ use_defaults = config.readBoolEntry("use_defaults", false);
++ }
++
++ if (use_defaults)
++ config.setGroup("DefaultOptions");
+
+ char ** array = libhal_device_get_property_strlist(m_halContext, volume_udi.latin1(), "volume.mount.valid_options", NULL);
+ TQMap<TQString,bool> valids;
+@@ -944,6 +952,8 @@
+ libhal_free_string_array(array);
+ TQStringList result;
+ TQString tmp;
++
++ result << TQString("use_defaults=%1").arg(use_defaults ? "true" : "false");
+
+ TQString fstype = libhal_device_get_property_QString(m_halContext, volume_udi.latin1(), "volume.fstype");
+ if (fstype.isNull())
+@@ -956,9 +966,18 @@
+ removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL)
+ || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL);
+
+- config.setGroup(drive_udi);
+- bool value = config.readBoolEntry("automount", false);
+- config.setGroup(name);
++ bool value;
++ if (use_defaults)
++ {
++ value = config.readBoolEntry("automount", false);
++ }
++ else
++ {
++ QString current_group = config.group();
++ config.setGroup(drive_udi);
++ value = config.readBoolEntry("automount", false);
++ config.setGroup(current_group);
++ }
+
+ if (libhal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_blank", NULL)
+ || libhal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_vcd", NULL)
+@@ -1083,7 +1099,7 @@
+
+ TQMap<TQString,TQString> valids = MediaManagerUtils::splitOptions(options);
+
+- const char *names[] = { "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 };
++ const char *names[] = { "use_defaults", "ro", "quiet", "atime", "uid", "utf8", "flush", "sync", 0 };
+ for (int index = 0; names[index]; ++index)
+ if (valids.contains(names[index]))
+ config.writeEntry(names[index], valids[names[index]] == "true");
diff --git a/redhat/tdebase/kdebase-3.5.13-add_xscreensaver_support.patch b/redhat/tdebase/kdebase-3.5.13-add_xscreensaver_support.patch
new file mode 100644
index 000000000..8e52ab971
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-add_xscreensaver_support.patch
@@ -0,0 +1,76 @@
+commit 80deb52955cbd917e10f015f37699d830cb681ce
+Author: Slávek Banko <slavek.banko@axis.cz>
+Date: 1339336699 +0200
+
+ Add xscreensaver support to CMake
+ This closes Bug 859
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 31fb46c..3da5b2f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -67,6 +67,7 @@
+ option( WITH_XDAMAGE "Enable xdamage support" OFF )
+ option( WITH_XEXT "Enable xext support" OFF )
+ option( WITH_XTEST "Enable xext support" OFF )
++option( WITH_XSCREENSAVER "Enable xscreensaver support" ${WITH_ALL_OPTIONS} )
+ option( WITH_LIBUSB "Enable control of some mouse models through libusb" OFF )
+ option( WITH_LIBRAW1394 "Enable visualization of ieee1394 devices through libraw1394" OFF )
+ option( WITH_SUDO_KDESU_BACKEND "Use sudo as backend for kdesu (default is su)" OFF )
+diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
+index ded1d00..1d9c83d 100644
+--- a/ConfigureChecks.cmake
++++ b/ConfigureChecks.cmake
+@@ -144,6 +144,26 @@ if( WITH_XTEST )
+ endif( )
+
+
++# xscreensaver ()
++if( WITH_XSCREENSAVER )
++ check_library_exists( Xss XScreenSaverQueryInfo "" HAVE_XSSLIB )
++ if( HAVE_XSSLIB )
++ pkg_search_module( XSS xscrnsaver )
++ else( )
++ check_library_exists( Xext XScreenSaverQueryInfo "" HAVE_XSSLIB )
++ if( HAVE_XSSLIB )
++ pkg_search_module( XSS xext )
++ endif( )
++ endif( )
++ check_include_file( X11/extensions/scrnsaver.h HAVE_XSCREENSAVER_H )
++ if( HAVE_XSSLIB AND HAVE_XSCREENSAVER_H )
++ set( HAVE_XSCREENSAVER 1 )
++ else( )
++ tde_message_fatal( "xscreensaver is requested, but was not found on your system" )
++ endif( )
++endif( )
++
++
+ # GL
+ if( BUILD_KDESKTOP OR BUILD_KCONTROL OR BUILD_KSCREENSAVER )
+ check_library_exists( GL glXChooseVisual "" HAVE_GLXCHOOSEVISUAL )
+diff --git a/config.h.cmake b/config.h.cmake
+index 39d6d85..772ca88 100644
+--- a/config.h.cmake
++++ b/config.h.cmake
+@@ -21,6 +21,9 @@
+ // kxkb
+ #cmakedefine HAVE_XTEST 1
+
++// xscreensaver
++#cmakedefine HAVE_XSCREENSAVER 1
++
+ // kdm, kioslave
+ #cmakedefine HAVE_TERMIOS_H 1
+
+diff --git a/kdesktop/CMakeLists.txt b/kdesktop/CMakeLists.txt
+index 99d86d1..b2e4628 100644
+--- a/kdesktop/CMakeLists.txt
++++ b/kdesktop/CMakeLists.txt
+@@ -94,6 +94,7 @@ tde_add_tdeinit_executable( ${target} AUTOMOC
+ kdesktopsettings-static bgnd-static dmctl-static
+ konq-shared kutils-shared
+ ${XRENDER_LIBRARIES} ${XCURSOR_LIBRARIES} Xext dl
++ ${XSS_LIBRARIES}
+ )
+
+
diff --git a/redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch b/redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch
new file mode 100644
index 000000000..1c022587d
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch
@@ -0,0 +1,372 @@
+commit 057932620ba8355a6506b9d437518e253ba14ed9
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1327619240 -0600
+
+ Clean up lock screen internals
+ This cleanup is part of an effort to resolve Bug 810, but a new Qt3 version is required to fully resolve it
+
+diff --git a/kdesktop/lock/autologout.cc b/kdesktop/lock/autologout.cc
+index 22b449c..bef39dd 100644
+--- a/kdesktop/lock/autologout.cc
++++ b/kdesktop/lock/autologout.cc
+@@ -82,6 +82,8 @@ AutoLogout::AutoLogout(LockProcess *parent) : TQDialog(parent, "password dialog"
+ mCountdownTimerId = startTimer(1000/25);
+
+ connect(tqApp, TQT_SIGNAL(activity()), TQT_SLOT(slotActivity()));
++
++ setFixedSize( sizeHint() );
+ }
+
+ AutoLogout::~AutoLogout()
+diff --git a/kdesktop/lock/infodlg.cc b/kdesktop/lock/infodlg.cc
+index f5f35b9..3fbc276 100644
+--- a/kdesktop/lock/infodlg.cc
++++ b/kdesktop/lock/infodlg.cc
+@@ -99,6 +99,7 @@ InfoDlg::InfoDlg(LockProcess *parent)
+ frameLayout->addLayout( layStatus, 1, 1 );
+
+ installEventFilter(this);
++ setFixedSize( sizeHint() );
+ }
+
+ InfoDlg::~InfoDlg()
+diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
+index 0863a22..f3eeee0 100644
+--- a/kdesktop/lock/lockdlg.cc
++++ b/kdesktop/lock/lockdlg.cc
+@@ -215,6 +215,7 @@ void PasswordDlg::init(GreeterPluginHandle *plugin)
+ mNewSessButton->hide();
+
+ installEventFilter(this);
++ setFixedSize( sizeHint() );
+
+ mFailedTimerId = 0;
+ mTimeoutTimerId = startTimer(PASSDLG_HIDE_TIMEOUT);
+@@ -598,6 +599,7 @@ void PasswordDlg::show()
+ {
+ TQDialog::show();
+ TQApplication::flushX();
++ setFixedSize( sizeHint() );
+ }
+
+ void PasswordDlg::slotStartNewSession()
+@@ -818,6 +820,8 @@ void PasswordDlg::slotSwitchUser()
+ connect( btn, TQT_SIGNAL(clicked()), &dialog, TQT_SLOT(reject()) );
+ vbox2->addWidget( btn );
+
++ dialog.setFixedSize( dialog.sizeHint() );
++
+ int ret = static_cast< LockProcess* >(parent())->execDialog( &dialog );
+ if (ret != TQDialog::Rejected) {
+ TQDialog::reject();
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 5acc96e..9648bbc 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -4,7 +4,7 @@
+ //
+ // Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
+ // Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
+-// Copyright (c) 2010-2011 Timothy Pearson <kb9vqf@pearsoncomputing.net>
++// Copyright (c) 2010-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ //
+
+ //kdesktop keeps running and checks user inactivity
+@@ -111,6 +111,10 @@ Status DPMSInfo ( Display *, CARD16 *, BOOL * );
+ #define LOCK_GRACE_DEFAULT 5000
+ #define AUTOLOGOUT_DEFAULT 600
+
++// FIXME
++// This should be defined if Qt 3.4.0 or higher is in use
++// #define KEEP_MOUSE_UNGRABBED 1
++
+ // These lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special multimedia keys
+ #define XF86XK_AudioMute 0x1008FF12
+ #define XF86XK_AudioRaiseVolume 0x1008FF13
+@@ -183,6 +187,10 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
+ mBackingStartupDelayTimer(0),
+ m_startupStatusDialog(NULL)
+ {
++#ifdef KEEP_MOUSE_UNGRABBED
++ setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize);
++#endif
++
+ setupSignals();
+ setupPipe();
+
+@@ -267,7 +275,11 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
+ #endif
+
+ #if (QT_VERSION-0 >= 0x030200) // XRANDR support
+- connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized()));
++ connect( kapp->desktop(), TQT_SIGNAL( resized( int )), TQT_SLOT( desktopResized()));
++#endif
++
++#ifdef KEEP_MOUSE_UNGRABBED
++ setEnabled(false);
+ #endif
+
+ greetPlugin.library = 0;
+@@ -874,7 +886,6 @@ void LockProcess::createSaverWindow()
+ // this is a security risk and has been deactivated--welcome to the 21st century folks!
+ // setBackgroundMode(TQWidget::NoBackground);
+
+- setCursor( tqblankCursor );
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+
+ kdDebug(1204) << "Saver window Id: " << winId() << endl;
+@@ -884,7 +895,6 @@ void LockProcess::desktopResized()
+ {
+ mBusy = true;
+ suspend();
+- setCursor( tqblankCursor );
+
+ // Get root window size
+ XWindowAttributes rootAttr;
+@@ -1087,6 +1097,7 @@ bool LockProcess::grabInput()
+ }
+ }
+
++#ifndef KEEP_MOUSE_UNGRABBED
+ if (!grabMouse())
+ {
+ usleep(100000);
+@@ -1096,6 +1107,7 @@ bool LockProcess::grabInput()
+ return false;
+ }
+ }
++#endif
+
+ lockXF86();
+
+@@ -1150,7 +1162,6 @@ bool LockProcess::startSaver()
+ createSaverWindow();
+ move(0, 0);
+ show();
+- setCursor( tqblankCursor );
+
+ raise();
+ XSync(qt_xdisplay(), False);
+@@ -1313,6 +1324,8 @@ void LockProcess::repaintRootWindowIfNeeded()
+
+ bool LockProcess::startHack()
+ {
++ setCursor( tqblankCursor );
++
+ if ((mEnsureVRootWindowSecurityTimer) && (!mEnsureVRootWindowSecurityTimer->isActive())) mEnsureVRootWindowSecurityTimer->start(250, FALSE);
+
+ if (currentDialog || (!mDialogs.isEmpty()))
+@@ -1429,6 +1442,7 @@ void LockProcess::stopHack()
+ mHackProc.kill(SIGKILL);
+ }
+ }
++ setCursor( tqarrowCursor );
+ }
+
+ //---------------------------------------------------------------------------
+@@ -1730,7 +1744,6 @@ void LockProcess::doFunctionKeyBroadcast() {
+ mDialogControlLock = false;
+ }
+ }
+- setCursor( tqblankCursor );
+
+ DCOPRef ref( "*", "MainApplication-Interface");
+ ref.send("sendFakeKey", DCOPArg(mkeyCode , "unsigned int"));
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index c0b8e24..0cbef60 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -45,8 +45,9 @@ bool trinity_desktop_lock_forced = FALSE;
+
+ bool MyApp::x11EventFilter( XEvent *ev )
+ {
+- if (ev->type == XKeyPress || ev->type == ButtonPress)
++ if (ev->type == XKeyPress || ev->type == ButtonPress) {
+ emit activity();
++ }
+ else if (ev->type == MotionNotify) {
+ time_t tick = time( 0 );
+ if (tick != lastTick) {
+diff --git a/kdesktop/lock/querydlg.cc b/kdesktop/lock/querydlg.cc
+index e672d54..5f50cbe 100644
+--- a/kdesktop/lock/querydlg.cc
++++ b/kdesktop/lock/querydlg.cc
+@@ -118,6 +118,7 @@ QueryDlg::QueryDlg(LockProcess *parent)
+ connect(ok, TQT_SIGNAL(clicked()), TQT_SLOT(slotOK()));
+
+ installEventFilter(this);
++ setFixedSize( sizeHint() );
+ }
+
+ QueryDlg::~QueryDlg()
+diff --git a/kdesktop/lock/sakdlg.cc b/kdesktop/lock/sakdlg.cc
+index 17f54a1..d96e0af 100644
+--- a/kdesktop/lock/sakdlg.cc
++++ b/kdesktop/lock/sakdlg.cc
+@@ -102,6 +102,7 @@ SAKDlg::SAKDlg(LockProcess *parent)
+ mStatusLabel->setText("<b>" + i18n("Press Ctrl+Alt+Del to begin.") + "</b><p>" + i18n("This process helps keep your password secure.") + "<br>" + i18n("It prevents unauthorized users from emulating the login screen."));
+
+ installEventFilter(this);
++ setFixedSize( sizeHint() );
+
+ mSAKProcess = new KProcess;
+ *mSAKProcess << "kdmtsak";
+diff --git a/kdesktop/lock/securedlg.cc b/kdesktop/lock/securedlg.cc
+index 532b904..37524f7 100644
+--- a/kdesktop/lock/securedlg.cc
++++ b/kdesktop/lock/securedlg.cc
+@@ -144,6 +144,7 @@ SecureDlg::SecureDlg(LockProcess *parent)
+ mSwitchButton->setFixedWidth(btnSize);
+
+ installEventFilter(this);
++ setFixedSize( sizeHint() );
+ }
+
+ SecureDlg::~SecureDlg()
+commit 678bea5ba74b3b39981e482e188c61fdd37786f0
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1328606373 -0600
+
+ Allow minimal managed window interaction inside the lock process
+ This closes Bug 810
+
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 9648bbc..2e9c9d3 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -111,8 +111,8 @@ Status DPMSInfo ( Display *, CARD16 *, BOOL * );
+ #define LOCK_GRACE_DEFAULT 5000
+ #define AUTOLOGOUT_DEFAULT 600
+
+-// FIXME
+-// This should be defined if Qt 3.4.0 or higher is in use
++// Setting this define is INSECURE
++// Use it for debugging purposes ONLY
+ // #define KEEP_MOUSE_UNGRABBED 1
+
+ // These lines are taken on 10/2009 from X.org (X11/XF86keysym.h), defining some special multimedia keys
+@@ -185,7 +185,12 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
+ mHackStartupEnabled(true),
+ m_rootPixmap(NULL),
+ mBackingStartupDelayTimer(0),
+- m_startupStatusDialog(NULL)
++ m_startupStatusDialog(NULL),
++ m_mouseDown(0),
++ m_mousePrevX(0),
++ m_mousePrevY(0),
++ m_dialogPrevX(0),
++ m_dialogPrevY(0)
+ {
+ #ifdef KEEP_MOUSE_UNGRABBED
+ setNFlags(WX11DisableMove|WX11DisableClose|WX11DisableShade|WX11DisableMinimize|WX11DisableMaximize);
+@@ -208,6 +213,8 @@ LockProcess::LockProcess(bool child, bool useBlankOnly)
+ mEnsureVRootWindowSecurityTimer = new TQTimer( this );
+ connect( mEnsureVRootWindowSecurityTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(repaintRootWindowIfNeeded()) );
+
++ connect(tqApp, TQT_SIGNAL(mouseInteraction(XEvent *)), TQT_SLOT(slotMouseActivity(XEvent *)));
++
+ mHackDelayStartupTimeout = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::timeout()*1000:10*1000;
+ mHackStartupEnabled = trinity_desktop_lock_delay_screensaver_start?KDesktopSettings::screenSaverEnabled():true;
+
+@@ -2200,4 +2207,64 @@ void LockProcess::sendVkbdFocusInOut( WId window, Time t )
+ }
+ }
+
++void LockProcess::slotMouseActivity(XEvent *event)
++{
++ bool inFrame = 0;
++ bool inDialog = 0;
++ XButtonEvent *be = (XButtonEvent *) event;
++ XMotionEvent *me = (XMotionEvent *) event;
++ if (event->type == ButtonPress) {
++ // Get geometry including window frame/titlebar
++ TQRect fgeom = mDialogs.first()->frameGeometry();
++ TQRect wgeom = mDialogs.first()->geometry();
++
++ if (((be->x_root > fgeom.x()) && (be->y_root > fgeom.y())) && ((be->x_root < (fgeom.x()+fgeom.width())) && (be->y_root < (fgeom.y()+fgeom.height())))) {
++ inFrame = 1;
++ }
++ if (((be->x_root > wgeom.x()) && (be->y_root > wgeom.y())) && ((be->x_root < (wgeom.x()+wgeom.width())) && (be->y_root < (wgeom.y()+wgeom.height())))) {
++ inDialog = 1;
++ }
++
++ // Clicked inside dialog; set focus
++ if (inFrame == TRUE) {
++ WId window = mDialogs.first()->winId();
++ XSetInputFocus(qt_xdisplay(), window, RevertToParent, CurrentTime);
++ fakeFocusIn(window);
++ // Why this needs to be repeated I have no idea...
++ XSetInputFocus(qt_xdisplay(), window, RevertToParent, CurrentTime);
++ fakeFocusIn(window);
++ }
++
++ // Clicked inside window handle (or border); drag window
++ if ((inFrame == TRUE) && (inDialog == FALSE)) {
++ TQPoint oldPoint = mDialogs.first()->pos();
++ m_mouseDown = 1;
++ m_dialogPrevX = oldPoint.x();
++ m_dialogPrevY = oldPoint.y();
++ m_mousePrevX = be->x_root;
++ m_mousePrevY = be->y_root;
++ XChangeActivePointerGrab( qt_xdisplay(), GRABEVENTS, TQCursor(tqsizeAllCursor).handle(), CurrentTime);
++ }
++ }
++
++ // Drag the window...
++ if (event->type == MotionNotify) {
++ if (m_mouseDown == TRUE) {
++ int deltaX = me->x_root - m_mousePrevX;
++ int deltaY = me->y_root - m_mousePrevY;
++ m_dialogPrevX = m_dialogPrevX + deltaX;
++ m_dialogPrevY = m_dialogPrevY + deltaY;
++ mDialogs.first()->move(m_dialogPrevX, m_dialogPrevY);
++
++ m_mousePrevX = me->x_root;
++ m_mousePrevY = me->y_root;
++ }
++ }
++
++ if (event->type == ButtonRelease) {
++ m_mouseDown = 0;
++ XChangeActivePointerGrab( qt_xdisplay(), GRABEVENTS, TQCursor(tqarrowCursor).handle(), CurrentTime);
++ }
++}
++
+ #include "lockprocess.moc"
+diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h
+index 3a7e3db..18320a8 100644
+--- a/kdesktop/lock/lockprocess.h
++++ b/kdesktop/lock/lockprocess.h
+@@ -94,6 +94,7 @@ private slots:
+ bool closeCurrentWindow();
+ void repaintRootWindowIfNeeded();
+ void startSecureDialog();
++ void slotMouseActivity(XEvent *event);
+
+ private:
+ void configure();
+@@ -197,6 +198,12 @@ private:
+ KSMModalDialog* m_startupStatusDialog;
+
+ TQDateTime mlockDateTime;
++
++ bool m_mouseDown;
++ int m_mousePrevX;
++ int m_mousePrevY;
++ int m_dialogPrevX;
++ int m_dialogPrevY;
+ };
+
+ #endif
+diff --git a/kdesktop/lock/main.h b/kdesktop/lock/main.h
+index c8e0e05..23797e4 100644
+--- a/kdesktop/lock/main.h
++++ b/kdesktop/lock/main.h
+@@ -32,6 +32,7 @@ protected:
+ bool x11EventFilter( XEvent * );
+ signals:
+ void activity();
++ void mouseInteraction(XEvent *event);
+ private:
+ time_t lastTick;
+ };
diff --git a/redhat/tdebase/kdebase-3.5.13-build_without_consolekit.patch b/redhat/tdebase/kdebase-3.5.13-build_without_consolekit.patch
new file mode 100644
index 000000000..42a4f7747
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-build_without_consolekit.patch
@@ -0,0 +1,22 @@
+--- kdebase/kdm/backend/CMakeLists.txt.ORI 2012-09-06 22:17:30.134745111 +0200
++++ kdebase/kdm/backend/CMakeLists.txt 2012-09-06 22:17:34.329664333 +0200
+@@ -37,7 +37,7 @@
+
+ tde_add_executable( kdm
+ SOURCES
+- access.c auth.c bootman.c choose.c client.c consolekit.c
++ access.c auth.c bootman.c choose.c client.c
+ ctrl.c daemon.c dm.c dpylist.c error.c genauth.c
+ inifile.c krb5auth.c mitauth.c netaddr.c policy.c
+ process.c protodpy.c reset.c resource.c rpcauth.c
+--- kdebase/kdm/backend/dm.h.ORI 2012-09-06 17:33:31.284704186 -0400
++++ kdebase/kdm/backend/dm.h 2012-09-06 17:33:40.415522219 -0400
+@@ -37,8 +37,6 @@
+ #ifndef _DM_H_
+ #define _DM_H_ 1
+
+-#define WITH_CONSOLE_KIT
+-
+ #include "greet.h"
+ #include <config.ci>
+
diff --git a/redhat/tdebase/kdebase-3.5.13-build_without_dbustqt.patch b/redhat/tdebase/kdebase-3.5.13-build_without_dbustqt.patch
new file mode 100644
index 000000000..2e17a0db9
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-build_without_dbustqt.patch
@@ -0,0 +1,97 @@
+--- kdebase/kdm/backend/CMakeLists.txt.ORI 2012-09-06 22:11:08.422091268 +0200
++++ kdebase/kdm/backend/CMakeLists.txt 2012-09-06 22:11:21.280843938 +0200
+@@ -14,11 +14,11 @@
+ include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}
+- ${DBUS_TQT_INCLUDE_DIRS}
++ ${DBUS_INCLUDE_DIRS}
+ )
+
+ link_directories(
+- ${DBUS_TQT_LIBRARY_DIRS}
++ ${DBUS_LIBRARY_DIRS}
+ )
+
+ ##### kdm (executable) ##########################
+@@ -43,6 +43,6 @@
+ process.c protodpy.c reset.c resource.c rpcauth.c
+ server.c session.c sessreg.c socket.c streams.c
+ util.c xdmauth.c xdmcp.c
+- LINK X11 ${XAU_LIBRARIES} ${DBUS_TQT_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
++ LINK X11 ${XAU_LIBRARIES} ${DBUS_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
+ DESTINATION ${BIN_INSTALL_DIR}
+ )
+--- kdebase/ksmserver/CMakeLists.txt.ORI 2012-09-06 17:22:59.990317001 -0400
++++ kdebase/ksmserver/CMakeLists.txt 2012-09-06 17:23:16.340989494 -0400
+@@ -19,13 +19,13 @@
+ ${CMAKE_SOURCE_DIR}/kdmlib
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+- ${DBUS_TQT_INCLUDE_DIRS}
++ ${DBUS_INCLUDE_DIRS}
+ ${HAL_INCLUDE_DIRS}
+ )
+
+ link_directories(
+ ${TQT_LIBRARY_DIRS}
+- ${DBUS_TQT_LIBRARY_DIRS}
++ ${DBUS_LIBRARY_DIRS}
+ )
+
+
+@@ -43,5 +43,5 @@
+ main.cpp server.cpp shutdowndlg.cpp startupdlg.cpp
+ legacy.cpp startup.cpp shutdown.cpp client.cpp
+ KSMServerInterface.skel server.skel timed.ui
+- LINK dmctl-static kdeui-shared krsync-shared ${HAL_LIBRARIES} ${DBUS_TQT_LIBRARIES}
++ LINK dmctl-static kdeui-shared krsync-shared ${HAL_LIBRARIES} ${DBUS_LIBRARIES}
+ )
+--- kdebase/kioslave/media/mediamanager/CMakeLists.txt.ORI 2012-09-07 23:57:56.858227336 +0200
++++ kdebase/kioslave/media/mediamanager/CMakeLists.txt 2012-09-07 23:58:54.948097583 +0200
+@@ -20,12 +20,12 @@
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+ ${HAL_INCLUDE_DIRS}
+- ${DBUS_TQT_INCLUDE_DIRS}
++ ${DBUS_INCLUDE_DIRS}
+ )
+
+ link_directories(
+ ${TQT_LIBRARY_DIRS}
+- ${DBUS_TQT_LIBRARY_DIRS}
++ ${DBUS_LIBRARY_DIRS}
+ )
+
+
+@@ -48,7 +48,7 @@
+
+ tde_add_kpart( ${target} AUTOMOC
+ SOURCES ${${target}_SRCS}
+- LINK mediacommon-static kdeinit_kded-shared ${HAL_LIBRARIES} -lhal-storage ${DBUS_TQT_LIBRARIES}
++ LINK mediacommon-static kdeinit_kded-shared ${HAL_LIBRARIES} -lhal-storage ${DBUS_LIBRARIES} -ldbus-qt-1
+ DESTINATION ${PLUGIN_INSTALL_DIR}
+ )
+ else( )
+--- kdebase-3.5.13.1/ConfigureChecks.cmake.ORI 2012-10-08 22:57:40.751052066 +0200
++++ kdebase-3.5.13.1/ConfigureChecks.cmake 2012-10-08 22:57:49.226885124 +0200
+@@ -254,19 +254,4 @@
+ tde_message_fatal( "dbus-1 is required, but was not found on your system" )
+ endif( )
+
+- # check for dbus-tqt
+- pkg_check_modules( DBUS_TQT REQUIRED dbus-tqt )
+- tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
+- set( CMAKE_REQUIRED_INCLUDES ${DBUS_TQT_INCLUDE_DIRS} ${TQT_INCLUDE_DIRS} ${QT_INCLUDE_DIRS})
+- set( CMAKE_REQUIRED_LIBRARIES ${DBUS_TQT_LDFLAGS} ${TQT_LDFLAGS} ${QT_LDFLAGS} )
+- check_cxx_source_compiles("
+- #include <tqt.h>
+- #include <dbus/connection.h>
+- int main(int, char**) { return 0; } "
+- HAVE_DBUS_QT3_07 )
+- tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
+- if( NOT HAVE_DBUS_QT3_07 )
+- tde_message_fatal( "dbus-tqt is required, but was not found on your system" )
+- endif( )
+-
+ endif( )
diff --git a/redhat/tdebase/kdebase-3.5.13-disable_keyboard_shortcuts_for_file_location_moving.patch b/redhat/tdebase/kdebase-3.5.13-disable_keyboard_shortcuts_for_file_location_moving.patch
new file mode 100644
index 000000000..b83bef726
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-disable_keyboard_shortcuts_for_file_location_moving.patch
@@ -0,0 +1,22 @@
+commit 9a948c1af9c07bfdc0eb079cc3cbc84e6bd597c6
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1337062714 -0500
+
+ Disable keyboard shortcuts for file location moving, as they did not work properly and have very little practical use
+
+diff --git a/kate/app/katefilelist.cpp b/kate/app/katefilelist.cpp
+index bd2d087..d2214a4 100644
+--- a/kate/app/katefilelist.cpp
++++ b/kate/app/katefilelist.cpp
+@@ -139,9 +139,9 @@ void KateFileList::setupActions ()
+ sortAction = new KSelectAction( i18n("Sort &By"), 0,
+ m_main->actionCollection(), "filelist_sortby" );
+ listMoveFileUp = new KAction( i18n("Move File Up"), 0, m_main->actionCollection(), "filelist_move_up" );
+- listMoveFileUp->setShortcut(KShortcut(CTRL + SHIFT + Key_Comma));
++ //listMoveFileUp->setShortcut(KShortcut(CTRL + SHIFT + Key_Comma));
+ listMoveFileDown = new KAction( i18n("Move File Down"), 0, m_main->actionCollection(), "filelist_move_down" );
+- listMoveFileDown->setShortcut(KShortcut(CTRL + SHIFT + Key_Period));
++ //listMoveFileDown->setShortcut(KShortcut(CTRL + SHIFT + Key_Period));
+ connect( listMoveFileUp, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileUp()) );
+ connect( listMoveFileDown, TQT_SIGNAL(activated()), TQT_TQOBJECT(this), TQT_SLOT(moveFileDown()) );
+ TQStringList l;
diff --git a/redhat/tdebase/kdebase-3.5.13-disable_tsak_dialog_if_not_built.patch b/redhat/tdebase/kdebase-3.5.13-disable_tsak_dialog_if_not_built.patch
new file mode 100644
index 000000000..4c0a822cd
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-disable_tsak_dialog_if_not_built.patch
@@ -0,0 +1,50 @@
+--- kdebase/config.h.cmake.ORI 2012-08-20 11:19:03.411461759 +0200
++++ kdebase/config.h.cmake 2012-08-20 11:19:40.587461736 +0200
+@@ -174,3 +174,6 @@
+
+ // kdm, kcontrol
+ #cmakedefine WITH_XRANDR "@WITH_XRANDR@"
++
++// tsak
++#cmakedefine BUILD_TSAK "@BUILD_TSAK@"
+--- kdebase/kdesktop/lock/main.cc.tsak 2012-08-20 13:55:47.265335687 +0200
++++ kdebase/kdesktop/lock/main.cc 2012-08-20 13:56:31.594856008 +0200
+@@ -207,8 +207,11 @@
+ struct stat st;
+ KSimpleConfig* tdmconfig;
+ OPEN_TDMCONFIG_AND_SET_GROUP
++#ifdef BUILD_TSAK
+ trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", true);
+-
++#else
++ trinity_desktop_lock_use_sak = false;
++#endif
+ LockProcess process;
+
+ // Start loading core functions, such as the desktop wallpaper interface
+@@ -272,7 +275,11 @@
+ trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
+ trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
++#ifdef BUILD_TSAK
+ trinity_desktop_lock_use_sak = tdmconfig->readBoolEntry("UseSAK", true);
++#else
++ trinity_desktop_lock_use_sak = false;
++#endif
+ }
+ else {
+ trinity_desktop_lock_use_sak = false; // If SAK is enabled with unmanaged windows, the SAK dialog will never close and will "burn in" the screen
+--- kdebase/kdm/kfrontend/kgapp.cpp.tsak 2012-08-20 14:00:44.387336567 +0200
++++ kdebase/kdm/kfrontend/kgapp.cpp 2012-08-20 14:01:26.280461134 +0200
+@@ -195,7 +195,11 @@
+ KProcess *dcop = 0;
+ KProcess *kwin = 0;
+
++#ifdef BUILD_TSAK
+ trinity_desktop_lock_use_sak = _useSAK;
++#else
++ trinity_desktop_lock_use_sak = false;
++#endif
+ if (trinity_desktop_lock_use_sak) {
+ tsak = new KProcess;
+ *tsak << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "tsak";
diff --git a/redhat/tdebase/kdebase-3.5.13-do_not_require_dbustqt_if_no_tsak.patch b/redhat/tdebase/kdebase-3.5.13-do_not_require_dbustqt_if_no_tsak.patch
new file mode 100644
index 000000000..7808af3d9
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-do_not_require_dbustqt_if_no_tsak.patch
@@ -0,0 +1,37 @@
+--- kdebase/ConfigureChecks.cmake.afterlibdetect.ORI 2012-09-06 20:46:34.705339175 +0200
++++ kdebase/ConfigureChecks.cmake 2012-09-06 20:47:12.331548001 +0200
+@@ -229,19 +229,21 @@
+ tde_message_fatal( "dbus-1 is required, but was not found on your system" )
+ endif( )
+
+- # check for dbus-tqt
+- pkg_check_modules( DBUS_TQT REQUIRED dbus-tqt )
+- tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
+- set( CMAKE_REQUIRED_INCLUDES ${DBUS_TQT_INCLUDE_DIRS} ${TQT_INCLUDE_DIRS} ${QT_INCLUDE_DIRS})
+- set( CMAKE_REQUIRED_LIBRARIES ${DBUS_TQT_LDFLAGS} ${TQT_LDFLAGS} ${QT_LDFLAGS} )
+- check_cxx_source_compiles("
+- #include <tqt.h>
+- #include <dbus/connection.h>
+- int main(int, char**) { return 0; } "
+- HAVE_DBUS_QT3_07 )
+- tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
+- if( NOT HAVE_DBUS_QT3_07 )
+- tde_message_fatal( "dbus-tqt is required, but was not found on your system" )
++ if( BUILD_TSAK )
++ # check for dbus-tqt
++ pkg_check_modules( DBUS_TQT REQUIRED dbus-tqt )
++ tde_save( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
++ set( CMAKE_REQUIRED_INCLUDES ${DBUS_TQT_INCLUDE_DIRS} ${TQT_INCLUDE_DIRS} ${QT_INCLUDE_DIRS})
++ set( CMAKE_REQUIRED_LIBRARIES ${DBUS_TQT_LDFLAGS} ${TQT_LDFLAGS} ${QT_LDFLAGS} )
++ check_cxx_source_compiles("
++ #include <tqt.h>
++ #include <dbus/connection.h>
++ int main(int, char**) { return 0; } "
++ HAVE_DBUS_QT3_07 )
++ tde_restore( CMAKE_REQUIRED_INCLUDES CMAKE_REQUIRED_LIBRARIES )
++ if( NOT HAVE_DBUS_QT3_07 )
++ tde_message_fatal( "dbus-tqt is required, but was not found on your system" )
++ endif( )
+ endif( )
+
+ endif( )
diff --git a/redhat/tdebase/kdebase-3.5.13-enable_xtest_support.patch b/redhat/tdebase/kdebase-3.5.13-enable_xtest_support.patch
new file mode 100644
index 000000000..cec848973
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-enable_xtest_support.patch
@@ -0,0 +1,135 @@
+commit 45fb5561be6e828c78180c781f74d0ae9d1c3ea4
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1326230757 -0600
+
+ Enable xtest support flag
+
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index b832a92..f4d11ac 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -65,6 +65,7 @@ option( WITH_XRANDR "Enable xrandr support" OFF )
+ option( WITH_XRENDER "Enable xrender support" OFF )
+ option( WITH_XDAMAGE "Enable xdamage support" OFF )
+ option( WITH_XEXT "Enable xext support" OFF )
++option( WITH_XTEST "Enable xext support" OFF )
+ option( WITH_LIBUSB "Enable control of some mouse models through libusb" OFF )
+ option( WITH_LIBRAW1394 "Enable visualization of ieee1394 devices through libraw1394" OFF )
+ option( WITH_SUDO_KDESU_BACKEND "Use sudo as backend for kdesu (default is su)" OFF )
+diff --git a/ConfigureChecks.cmake b/ConfigureChecks.cmake
+index 7b7a1b4..df892e1 100644
+--- a/ConfigureChecks.cmake
++++ b/ConfigureChecks.cmake
+@@ -100,12 +100,25 @@ endif( )
+ # xext (kwin/kompmgr)
+ if( WITH_XEXT )
+ pkg_search_module( XEXT xext )
+- if( NOT XEXT_FOUND )
++ if( XEXT_FOUND )
++ set( HAVE_XEXT 1 )
++ else( XEXT_FOUND )
+ tde_message_fatal( "xext is requested, but was not found on your system" )
+ endif( )
+ endif( )
+
+
++# xtest (kxkb)
++if( WITH_XTEST )
++ pkg_search_module( XTEST xtst )
++ if( XTEST_FOUND )
++ set( HAVE_XTEST 1 )
++ else( XTEST_FOUND )
++ tde_message_fatal( "xtest is requested, but was not found on your system" )
++ endif( )
++endif( )
++
++
+ # GL
+ if( BUILD_KDESKTOP OR BUILD_KCONTROL OR BUILD_KSCREENSAVER )
+ check_library_exists( GL glXChooseVisual "" HAVE_GLXCHOOSEVISUAL )
+diff --git a/config.h.cmake b/config.h.cmake
+index d72a96c..a8de2fa 100644
+--- a/config.h.cmake
++++ b/config.h.cmake
+@@ -18,6 +18,9 @@
+ // konsole, kdm, kxkb
+ #cmakedefine HAVE_XKB 1
+
++// kxkb
++#cmakedefine HAVE_XTEST 1
++
+ // kdm, kioslave
+ #cmakedefine HAVE_TERMIOS_H 1
+
+diff --git a/kxkb/CMakeLists.txt b/kxkb/CMakeLists.txt
+index 703591a..f36a003 100644
+--- a/kxkb/CMakeLists.txt
++++ b/kxkb/CMakeLists.txt
+@@ -22,6 +22,7 @@ include_directories(
+
+ link_directories(
+ ${TQT_LIBRARY_DIRS}
++ ${XTEST_LIBDIR}
+ )
+
+
+@@ -39,7 +40,7 @@ tde_add_kpart( kcm_keyboard AUTOMOC
+ extension.cpp x11helper.cpp rules.cpp kxkbconfig.cpp
+ pixmap.cpp kcmlayout.cpp kcmlayoutwidget.ui
+ kcmmisc.cpp kcmmiscwidget.ui
+- LINK kio-shared xkbfile
++ LINK kio-shared xkbfile ${XTEST_LIBRARIES}
+ DESTINATION ${PLUGIN_INSTALL_DIR}
+ )
+
+diff --git a/kxkb/kcmmisc.cpp b/kxkb/kcmmisc.cpp
+index b4c18a4..8850d89 100644
+--- a/kxkb/kcmmisc.cpp
++++ b/kxkb/kcmmisc.cpp
+@@ -344,6 +344,21 @@ int xkb_set_off()
+ return 1;
+ }
+
++int xkb_state()
++ {
++ unsigned int mask;
++ unsigned int numlockState;
++ XkbStateRec xkbState;
++ if( !xkb_init())
++ return 0;
++ mask = xkb_numlock_mask();
++ if( mask == 0 )
++ return 0;
++ XkbGetState( dpy, XkbUseCoreKbd, &xkbState);
++ numlockState = xkbState.locked_mods & mask;
++ return numlockState;
++ }
++
+ int xkb_toggle()
+ {
+ unsigned int mask;
+@@ -443,7 +458,14 @@ void numlock_toggle()
+ return;
+ #endif
+ #ifdef HAVE_XTEST
++#ifdef HAVE_XKB
++ if (xkb_state())
++ xtest_set_on();
++ else
++ xtest_set_off();
++#else // HAVE_XKB
+ xtest_toggle();
++#endif // HAVE_XKB
+ #endif
+ }
+ // This code is taken from xset utility from XFree 4.3 (http://www.xfree86.org/)
+--- kdebase/khotkeys/shared/CMakeLists.txt.ORI 2012-01-14 21:49:34.423813010 +0100
++++ kdebase/khotkeys/shared/CMakeLists.txt 2012-01-14 21:53:23.915008098 +0100
+@@ -36,6 +36,6 @@
+ tde_add_library( ${target} SHARED AUTOMOC
+ SOURCES ${${target}_SRCS}
+ VERSION 1.0.0
+- LINK kio-shared
++ LINK kio-shared ${XTEST_LIBRARIES}
+ DESTINATION ${LIB_INSTALL_DIR}
+ )
diff --git a/redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time.patch b/redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time.patch
new file mode 100644
index 000000000..54e35c45a
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time.patch
@@ -0,0 +1,252 @@
+commit 8d521d0b6ba88c6e679e7453f02897c8db7bbdf5
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1328671935 -0600
+
+ Update lock process to engage the lock in near real time
+
+diff --git a/kdesktop/lock/CMakeLists.txt b/kdesktop/lock/CMakeLists.txt
+index 5530d4c..7a35121 100644
+--- a/kdesktop/lock/CMakeLists.txt
++++ b/kdesktop/lock/CMakeLists.txt
+@@ -35,6 +35,6 @@ set( ${target}_SRCS
+
+ tde_add_executable( ${target} AUTOMOC
+ SOURCES ${${target}_SRCS}
+- LINK kdesktopsettings-static dmctl-static kio-shared Xext ${GL_LIBRARY}
++ LINK kdesktopsettings-static dmctl-static kio-shared Xext ${GL_LIBRARY} "-z\ now"
+ DESTINATION ${BIN_INSTALL_DIR}
+ )
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index 0cbef60..132ff30 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -1,6 +1,7 @@
+ /* This file is part of the KDE project
+ Copyright (C) 1999 David Faure
+ Copyright (c) 2003 Oswald Buddenhagen <ossi@kde.org>
++ Copyright (c) 2010-2012 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
+@@ -43,6 +44,13 @@ bool trinity_desktop_lock_use_sak = FALSE;
+
+ bool trinity_desktop_lock_forced = FALSE;
+
++bool signalled_forcelock;
++bool signalled_dontlock;
++bool signalled_securedialog;
++bool signalled_blank;
++bool signalled_run;
++bool in_internal_mode = FALSE;
++
+ bool MyApp::x11EventFilter( XEvent *ev )
+ {
+ if (ev->type == XKeyPress || ev->type == ButtonPress) {
+diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
+index 5307c5c..79d27db 100644
+--- a/kdesktop/lockeng.cc
++++ b/kdesktop/lockeng.cc
+@@ -1,8 +1,9 @@
+ //===========================================================================
+ //
+-// This file is part of the KDE project
++// This file is part of the TDE project
+ //
+ // Copyright (c) 1999 Martin R. Jones <mjones@kde.org>
++// Copyright (c) 2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+ //
+
+
+@@ -29,6 +30,14 @@ extern xautolock_corner_t xautolock_corners[ 4 ];
+
+ bool trinity_lockeng_sak_available = TRUE;
+
++SaverEngine* m_masterSaverEngine = NULL;
++static void sigusr1_handler(int)
++{
++ if (m_masterSaverEngine) {
++ m_masterSaverEngine->lockProcessWaiting();
++ }
++}
++
+ //===========================================================================
+ //
+ // Screen saver engine. Doesn't handle the actual screensaver window,
+@@ -42,6 +51,16 @@ SaverEngine::SaverEngine()
+ mSAKProcess(NULL),
+ mTerminationRequested(false)
+ {
++ struct sigaction act;
++
++ // handle SIGUSR1
++ m_masterSaverEngine = this;
++ act.sa_handler= sigusr1_handler;
++ sigemptyset(&(act.sa_mask));
++ sigaddset(&(act.sa_mask), SIGUSR1);
++ act.sa_flags = 0;
++ sigaction(SIGUSR1, &act, 0L);
++
+ // Save X screensaver parameters
+ XGetScreenSaver(qt_xdisplay(), &mXTimeout, &mXInterval,
+ &mXBlanking, &mXExposures);
+@@ -60,6 +79,19 @@ SaverEngine::SaverEngine()
+ TQTimer::singleShot( 0, this, TQT_SLOT(handleSecureDialog()) );
+
+ configure();
++
++ mLockProcess.clearArguments();
++ TQString path = KStandardDirs::findExe( "kdesktop_lock" );
++ if( path.isEmpty())
++ {
++ kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl;
++ }
++ mLockProcess << path;
++ mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid());
++ if (mLockProcess.start() == false )
++ {
++ kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl;
++ }
+ }
+
+ //---------------------------------------------------------------------------
+@@ -68,6 +100,10 @@ SaverEngine::SaverEngine()
+ //
+ SaverEngine::~SaverEngine()
+ {
++ if (mState == Waiting) {
++ kill(mLockProcess.pid(), SIGKILL);
++ }
++
+ mLockProcess.detach(); // don't kill it if we crash
+ delete mXAutoLock;
+
+@@ -86,9 +122,9 @@ void SaverEngine::lock()
+ {
+ mSAKProcess->kill(SIGTERM);
+ ok = startLockProcess( ForceLock );
+-// It takes a while for kdesktop_lock to start and lock the screen.
+-// Therefore delay the DCOP call until it tells kdesktop that the locking is in effect.
+-// This is done only for --forcelock .
++ // It takes a while for kdesktop_lock to start and lock the screen.
++ // Therefore delay the DCOP call until it tells kdesktop that the locking is in effect.
++ // This is done only for --forcelock .
+ if( ok && mState != Saving )
+ {
+ DCOPClientTransaction* trans = kapp->dcopClient()->beginTransaction();
+@@ -283,40 +319,42 @@ bool SaverEngine::startLockProcess( LockType lock_type )
+ kdDebug(1204) << "SaverEngine: starting saver" << endl;
+ emitDCOPSignal("KDE_start_screensaver()", TQByteArray());
+
+- if (mLockProcess.isRunning())
+- {
+- stopLockProcess();
+- }
+- mLockProcess.clearArguments();
+- TQString path = KStandardDirs::findExe( "kdesktop_lock" );
+- if( path.isEmpty())
+- {
+- kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl;
+- return false;
++ if (!mLockProcess.isRunning()) {
++ mLockProcess.clearArguments();
++ TQString path = KStandardDirs::findExe( "kdesktop_lock" );
++ if( path.isEmpty())
++ {
++ kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl;
++ return false;
++ }
++ mLockProcess << path;
++ mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid());
++ if (mLockProcess.start() == false )
++ {
++ kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl;
++ return false;
++ }
+ }
+- mLockProcess << path;
++
+ switch( lock_type )
+ {
+ case ForceLock:
+- mLockProcess << TQString( "--forcelock" );
++ mLockProcess.kill(SIGUSR1); // Request forcelock
+ break;
+ case DontLock:
+- mLockProcess << TQString( "--dontlock" );
++ mLockProcess.kill(SIGUSR2); // Request dontlock
+ break;
+ case SecureDialog:
+- mLockProcess << TQString( "--securedialog" );
++ mLockProcess.kill(SIGWINCH); // Request secure dialog
+ break;
+ default:
+ break;
+ }
+- if (mBlankOnly)
+- mLockProcess << TQString( "--blank" );
+-
+- if (mLockProcess.start() == false )
+- {
+- kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl;
+- return false;
++ if (mBlankOnly) {
++ mLockProcess.kill(SIGTTIN); // Request blanking
+ }
++
++ mLockProcess.kill(SIGTTOU); // Start lock
+ XSetScreenSaver(qt_xdisplay(), 0, mXInterval, PreferBlanking, mXExposures);
+
+ mState = Preparing;
+@@ -359,9 +397,7 @@ void SaverEngine::stopLockProcess()
+
+ void SaverEngine::lockProcessExited()
+ {
+-printf("Lock process exited\n\r"); fflush(stdout);
+ bool abnormalExit = false;
+- kdDebug(1204) << "SaverEngine: lock exited" << endl;
+ if (mLockProcess.normalExit() == false) {
+ abnormalExit = true;
+ }
+@@ -387,6 +423,28 @@ printf("Lock process exited\n\r"); fflush(stdout);
+ system("logout");
+ }
+ }
++ else {
++ // Restart the lock process
++ if (!mLockProcess.isRunning()) {
++ mLockProcess.clearArguments();
++ TQString path = KStandardDirs::findExe( "kdesktop_lock" );
++ if( path.isEmpty())
++ {
++ kdDebug( 1204 ) << "Can't find kdesktop_lock!" << endl;
++ }
++ mLockProcess << path;
++ mLockProcess << TQString( "--internal" ) << TQString( "%1" ).arg(getpid());
++ if (mLockProcess.start() == false )
++ {
++ kdDebug( 1204 ) << "Failed to start kdesktop_lock!" << endl;
++ }
++ }
++ }
++}
++
++void SaverEngine::lockProcessWaiting()
++{
++ kdDebug(1204) << "SaverEngine: lock exited" << endl;
+ if (trinity_lockeng_sak_available == TRUE) {
+ handleSecureDialog();
+ }
+diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h
+index ae81f90..ae08e9a 100644
+--- a/kdesktop/lockeng.h
++++ b/kdesktop/lockeng.h
+@@ -78,6 +78,9 @@ public:
+ */
+ virtual void saverLockReady();
+
++public slots:
++ void lockProcessWaiting();
++
+ protected slots:
+ void idleTimeout();
+ void lockProcessExited();
diff --git a/redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time_continued.patch b/redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time_continued.patch
new file mode 100644
index 000000000..fd39f061d
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-engage_lock_in_near_real_time_continued.patch
@@ -0,0 +1,356 @@
+commit 4952641328f28a541e3fdf2200df4e1e4b11d5dd
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1328994151 -0600
+
+ Commit the rest of 8d521d0b, not merged due to GIT glitch
+
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index 132ff30..4edd1b3 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -73,140 +73,241 @@ static KCmdLineOptions options[] =
+ { "dontlock", I18N_NOOP("Only start screensaver"), 0 },
+ { "securedialog", I18N_NOOP("Launch the secure dialog"), 0 },
+ { "blank", I18N_NOOP("Only use the blank screensaver"), 0 },
++ { "internal <pid>", I18N_NOOP("TDE internal command for background process loading"), 0 },
+ KCmdLineLastOption
+ };
+
++static void sigusr1_handler(int)
++{
++ signalled_forcelock = TRUE;
++}
++
++static void sigusr2_handler(int)
++{
++ signalled_dontlock = TRUE;
++}
++
++static void sigusr3_handler(int)
++{
++ signalled_securedialog = TRUE;
++}
++
++static void sigusr4_handler(int)
++{
++ signalled_blank = TRUE;
++}
++
++static void sigusr5_handler(int)
++{
++ signalled_run = TRUE;
++}
++
+ // -----------------------------------------------------------------------------
+
+ int main( int argc, char **argv )
+ {
+ KLocale::setMainCatalogue("kdesktop");
+
+- KCmdLineArgs::init( argc, argv, "kdesktop_lock", I18N_NOOP("KDesktop Locker"), I18N_NOOP("Session Locker for KDesktop"), "2.0" );
++ KCmdLineArgs::init( argc, argv, "kdesktop_lock", I18N_NOOP("KDesktop Locker"), I18N_NOOP("Session Locker for KDesktop"), "2.1" );
+ KCmdLineArgs::addCmdLineOptions( options );
+ KCmdLineArgs *args = KCmdLineArgs::parsedArgs();
+
+- if (args->isSet( "forcelock" ))
+- trinity_desktop_lock_forced = TRUE;
+-
+ putenv(strdup("SESSION_MANAGER="));
+
+ KApplication::disableAutoDcopRegistration(); // not needed
+
+- int kdesktop_screen_number = 0;
+- int starting_screen = 0;
+-
+- bool child = false;
+- int parent_connection = 0; // socket to the parent saver
+- TQValueList<int> child_sockets;
+-
+- if (KGlobalSettings::isMultiHead())
+- {
+- Display *dpy = XOpenDisplay(NULL);
+- if (! dpy) {
+- fprintf(stderr,
+- "%s: FATAL ERROR: couldn't open display '%s'\n",
+- argv[0], XDisplayName(NULL));
+- exit(1);
+- }
++ while (1 == 1) {
++ signalled_forcelock = FALSE;
++ signalled_dontlock = FALSE;
++ signalled_securedialog = FALSE;
++ signalled_blank = FALSE;
++ signalled_run = FALSE;
+
+- int number_of_screens = ScreenCount(dpy);
+- starting_screen = kdesktop_screen_number = DefaultScreen(dpy);
+- int pos;
+- TQCString display_name = XDisplayString(dpy);
+- XCloseDisplay(dpy);
+- kdDebug() << "screen " << number_of_screens << " " << kdesktop_screen_number << " " << display_name << " " << starting_screen << endl;
+- dpy = 0;
+-
+- if ((pos = display_name.findRev('.')) != -1)
+- display_name.remove(pos, 10);
+-
+- TQCString env;
+- if (number_of_screens != 1) {
+- for (int i = 0; i < number_of_screens; i++) {
+- if (i != starting_screen) {
+- int fd[2];
+- if (pipe(fd)) {
+- perror("pipe");
+- break;
+- }
+- if (fork() == 0) {
+- child = true;
+- kdesktop_screen_number = i;
+- parent_connection = fd[0];
+- // break here because we are the child process, we don't
+- // want to fork() anymore
+- break;
+- } else {
+- child_sockets.append(fd[1]);
++ int kdesktop_screen_number = 0;
++ int starting_screen = 0;
++
++ bool child = false;
++ int parent_connection = 0; // socket to the parent saver
++ TQValueList<int> child_sockets;
++
++ if (KGlobalSettings::isMultiHead())
++ {
++ Display *dpy = XOpenDisplay(NULL);
++ if (! dpy) {
++ fprintf(stderr,
++ "%s: FATAL ERROR: couldn't open display '%s'\n",
++ argv[0], XDisplayName(NULL));
++ exit(1);
++ }
++
++ int number_of_screens = ScreenCount(dpy);
++ starting_screen = kdesktop_screen_number = DefaultScreen(dpy);
++ int pos;
++ TQCString display_name = XDisplayString(dpy);
++ XCloseDisplay(dpy);
++ kdDebug() << "screen " << number_of_screens << " " << kdesktop_screen_number << " " << display_name << " " << starting_screen << endl;
++ dpy = 0;
++
++ if ((pos = display_name.findRev('.')) != -1)
++ display_name.remove(pos, 10);
++
++ TQCString env;
++ if (number_of_screens != 1) {
++ for (int i = 0; i < number_of_screens; i++) {
++ if (i != starting_screen) {
++ int fd[2];
++ if (pipe(fd)) {
++ perror("pipe");
++ break;
++ }
++ if (fork() == 0) {
++ child = true;
++ kdesktop_screen_number = i;
++ parent_connection = fd[0];
++ // break here because we are the child process, we don't
++ // want to fork() anymore
++ break;
++ } else {
++ child_sockets.append(fd[1]);
++ }
+ }
+ }
+- }
+
+- env.sprintf("DISPLAY=%s.%d", display_name.data(),
+- kdesktop_screen_number);
+- kdDebug() << "env " << env << endl;
++ env.sprintf("DISPLAY=%s.%d", display_name.data(),
++ kdesktop_screen_number);
++ kdDebug() << "env " << env << endl;
+
+- if (putenv(strdup(env.data()))) {
+- fprintf(stderr,
+- "%s: WARNING: unable to set DISPLAY environment variable\n",
+- argv[0]);
+- perror("putenv()");
++ if (putenv(strdup(env.data()))) {
++ fprintf(stderr,
++ "%s: WARNING: unable to set DISPLAY environment variable\n",
++ argv[0]);
++ perror("putenv()");
++ }
+ }
+ }
+- }
+
+- MyApp app;
+- kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl;
+- app.disableSessionManagement();
+- KGlobal::locale()->insertCatalogue("libdmctl");
+-
+- // we need to read from the right rc file - possibly taking screen number in account
+- KDesktopSettings::instance("kdesktoprc");
+-
+- trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
+- trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
+- trinity_desktop_lock_use_sak = KDesktopSettings::useTDESAK();
+-
+- LockProcess process(child, args->isSet( "blank" ));
+- if (!child)
+- process.setChildren(child_sockets);
+- else
+- process.setParent(parent_connection);
+-
+- bool rt;
+- bool sig = false;
+- if( !child && args->isSet( "forcelock" ))
+- {
+- rt = process.lock();
+- sig = true;
+- }
+- else if( child || args->isSet( "dontlock" )) {
+- rt = process.dontLock();
+- }
+- else if( child || args->isSet( "securedialog" )) {
+- int retcode = tde_sak_verify_calling_process();
+- if (retcode == 0) {
+- rt = process.runSecureDialog();
++ MyApp app;
++ kdDebug() << "app " << kdesktop_screen_number << " " << starting_screen << " " << child << " " << child_sockets.count() << " " << parent_connection << endl;
++ app.disableSessionManagement();
++ KGlobal::locale()->insertCatalogue("libdmctl");
++
++ // we need to read from the right rc file - possibly taking screen number in account
++ KDesktopSettings::instance("kdesktoprc");
++
++ trinity_desktop_lock_use_system_modal_dialogs = !KDesktopSettings::useUnmanagedLockWindows();
++ trinity_desktop_lock_delay_screensaver_start = KDesktopSettings::delaySaverStart();
++ trinity_desktop_lock_use_sak = KDesktopSettings::useTDESAK();
++
++ if (args->isSet( "internal" )) {
++ while (signalled_run == FALSE) {
++ sigset_t new_mask;
++ struct sigaction act;
++
++ in_internal_mode = TRUE;
++
++ // handle SIGUSR1
++ act.sa_handler= sigusr1_handler;
++ sigemptyset(&(act.sa_mask));
++ sigaddset(&(act.sa_mask), SIGUSR1);
++ act.sa_flags = 0;
++ sigaction(SIGUSR1, &act, 0L);
++ // handle SIGUSR2
++ act.sa_handler= sigusr2_handler;
++ sigemptyset(&(act.sa_mask));
++ sigaddset(&(act.sa_mask), SIGUSR2);
++ act.sa_flags = 0;
++ sigaction(SIGUSR2, &act, 0L);
++ // handle SIGWINCH (an ersatz SIGUSR3)
++ act.sa_handler= sigusr3_handler;
++ sigemptyset(&(act.sa_mask));
++ sigaddset(&(act.sa_mask), SIGWINCH);
++ act.sa_flags = 0;
++ sigaction(SIGWINCH, &act, 0L);
++ // handle SIGTTIN (an ersatz SIGUSR4)
++ act.sa_handler= sigusr4_handler;
++ sigemptyset(&(act.sa_mask));
++ sigaddset(&(act.sa_mask), SIGTTIN);
++ act.sa_flags = 0;
++ sigaction(SIGTTIN, &act, 0L);
++ // handle SIGTTOU (an ersatz SIGUSR5)
++ act.sa_handler= sigusr5_handler;
++ sigemptyset(&(act.sa_mask));
++ sigaddset(&(act.sa_mask), SIGTTOU);
++ act.sa_flags = 0;
++ sigaction(SIGTTOU, &act, 0L);
++
++ // initialize the signal masks
++ sigfillset(&new_mask);
++ sigdelset(&new_mask,SIGUSR1);
++ sigdelset(&new_mask,SIGUSR2);
++ sigdelset(&new_mask,SIGWINCH);
++ sigdelset(&new_mask,SIGTTIN);
++ sigdelset(&new_mask,SIGTTOU);
++
++ // wait for SIGUSR1, SIGUSR2, SIGWINCH, SIGTTIN, or SIGTTOU
++ sigsuspend(&new_mask);
++ }
++ }
++
++ if (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE))
++ trinity_desktop_lock_forced = TRUE;
++
++ LockProcess process(child, (args->isSet( "blank" ) || (signalled_blank == TRUE)));
++ if (!child)
++ process.setChildren(child_sockets);
++ else
++ process.setParent(parent_connection);
++
++ bool rt;
++ bool sig = false;
++ if( !child && (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)))
++ {
++ rt = process.lock();
++ sig = true;
++ }
++ else if( child || (args->isSet( "dontlock" ) || (signalled_dontlock == TRUE))) {
++ rt = process.dontLock();
++ }
++ else if( child || (args->isSet( "securedialog" ) || (signalled_securedialog == TRUE))) {
++ int retcode = tde_sak_verify_calling_process();
++ if (retcode == 0) {
++ rt = process.runSecureDialog();
++ }
++ else {
++ return 1;
++ }
+ }
+ else {
++ rt = process.defaultSave();
++ }
++ if (!rt) {
+ return 0;
+ }
+- }
+- else {
+- rt = process.defaultSave();
+- }
+- if (!rt) {
+- return 0;
+- }
+
+- if( sig )
+- {
+- DCOPRef ref( "kdesktop", "KScreensaverIface");
+- ref.send( "saverLockReady" );
+- }
++ if( sig )
++ {
++ DCOPRef ref( "kdesktop", "KScreensaverIface");
++ ref.send( "saverLockReady" );
++ }
++
++ if (in_internal_mode == FALSE) {
++ return app.exec();
++ }
++ else {
++ pid_t kdesktop_pid = atoi(args->getOption( "internal" ));
++ app.exec();
++ if (kill(kdesktop_pid, SIGUSR1) < 0) {
++ // The controlling kdesktop process probably died. Commit suicide...
++ return 12;
++ }
+
+- return app.exec();
++ // FIXME
++ // We should not have to return (restart) at all,
++ // but it seems that some X11 connections are left active,
++ // preventing the lock process from restarting properly in the while() loop above.
++ return 0;
++ }
++ }
+ }
+
+ #include "main.moc"
diff --git a/redhat/tdebase/kdebase-3.5.13-ensure_pagersettings_is_installed.patch b/redhat/tdebase/kdebase-3.5.13-ensure_pagersettings_is_installed.patch
new file mode 100644
index 000000000..2b3d38880
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-ensure_pagersettings_is_installed.patch
@@ -0,0 +1,19 @@
+commit bd9c1479d7a965959147398d71f18be62b2aa8b6
+Author: Darrell Anderson <humanreadable@yahoo.com>
+Date: 1333232418 -0500
+
+ Ensure pagersettings.kcfg is installed.
+
+diff --git a/kicker/applets/minipager/CMakeLists.txt b/kicker/applets/minipager/CMakeLists.txt
+index b9ca9c7..a90269c 100644
+--- a/kicker/applets/minipager/CMakeLists.txt
++++ b/kicker/applets/minipager/CMakeLists.txt
+@@ -27,7 +27,7 @@ link_directories(
+ ##### other data ################################
+
+ install( FILES minipagerapplet.desktop DESTINATION ${DATA_INSTALL_DIR}/kicker/applets )
+-
++install( FILES pagersettings.kcfg DESTINATION ${KCFG_INSTALL_DIR} )
+
+ ##### minipager_panelapplet (module) ############
+
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_dbus_include.patch b/redhat/tdebase/kdebase-3.5.13-fix_dbus_include.patch
new file mode 100644
index 000000000..19574bad0
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_dbus_include.patch
@@ -0,0 +1,10 @@
+--- kdebase/kdm/backend/CMakeLists.txt.ORI 2012-09-19 21:39:48.505001985 +0200
++++ kdebase/kdm/backend/CMakeLists.txt 2012-09-19 21:40:08.951005360 +0200
+@@ -14,6 +14,7 @@
+ include_directories(
+ ${CMAKE_CURRENT_BINARY_DIR}
+ ${CMAKE_BINARY_DIR}
++ ${DBUS_INCLUDE_DIRS}
+ ${DBUS_TQT_INCLUDE_DIRS}
+ )
+
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_device_icon_placement.patch b/redhat/tdebase/kdebase-3.5.13-fix_device_icon_placement.patch
new file mode 100644
index 000000000..00bda21c2
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_device_icon_placement.patch
@@ -0,0 +1,30 @@
+commit 5df6c5fca20e917aaa82665131b931a0aa7c8628
+Author: Darrell Anderson <humanreadable@yahoo.com>
+Date: 1332447011 -0500
+
+ Restore code snippet removed with GIT hash
+ 27856879bf962f178d88e79144e37a47e731b122,
+ Sept. 3, 2010, "Massive import of OpenSUSE patches."
+ Restoring this snippet restores the device icon
+ placement and resolves bug report 392.
+
+diff --git a/kdesktop/kdiconview.cc b/kdesktop/kdiconview.cc
+index e2f1c80..3404e4a 100644
+--- a/kdesktop/kdiconview.cc
++++ b/kdesktop/kdiconview.cc
+@@ -1141,6 +1141,15 @@ void KDIconView::slotNewItems( const KFileItemList & entries )
+ kdDebug(1214)<<"Using saved position"<<endl;
+ }
+ }
++ else
++ {
++ // Not found, we'll need to save the new pos
++ kdDebug(1214)<<"slotNewItems(): New item without position information, try to find a sane location"<<endl;
++
++ moveToFreePosition(fileIVI);
++
++ m_bNeedSave = true;
++ }
+ }
+ }
+
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch b/redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch
new file mode 100644
index 000000000..793334e24
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_fancy_logout.patch
@@ -0,0 +1,162 @@
+commit d2f8fca98e6d276f442f90dee48164be15d8e287
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1337223371 -0500
+
+ Fix fancy logout not allowing interaction with save dialogs
+ This closes Bug 922
+ Fix desktop wallpaper export failing when triggered by krootbacking or ksmserver and konsole or kdesktop_lock not previously loaded
+
+diff --git a/krootbacking/krootbacking.cpp b/krootbacking/krootbacking.cpp
+index 8e41b50..fe8574a 100644
+--- a/krootbacking/krootbacking.cpp
++++ b/krootbacking/krootbacking.cpp
+@@ -54,6 +54,8 @@ public:
+ KRootBacking::KRootBacking()
+ : TQObject(KApplication::desktop(), "KRootBacking" ), m_Desk(0), m_timeout(0)
+ {
++ enableExports();
++
+ init();
+ }
+
+diff --git a/ksmserver/shutdown.cpp b/ksmserver/shutdown.cpp
+index a4ca020..09cb2d7 100644
+--- a/ksmserver/shutdown.cpp
++++ b/ksmserver/shutdown.cpp
+@@ -189,24 +189,6 @@ void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm,
+ // shall we save the session on logout?
+ saveSession = ( config->readEntry( "loginMode", "restorePreviousLogout" ) == "restorePreviousLogout" );
+
+- if (showFancyLogout) {
+- KSMShutdownIPFeedback::showit(); // hide the UGLY logout process from the user
+- shutdownNotifierIPDlg = KSMShutdownIPDlg::showShutdownIP();
+- while (!KSMShutdownIPFeedback::ispainted()) {
+- tqApp->processEvents();
+- }
+- }
+-
+- // synchronize any folders that were requested for shutdown sync
+- if (shutdownNotifierIPDlg) {
+- static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Synchronizing remote folders").append("..."));
+- }
+- KRsync krs(this, "");
+- krs.executeLogoutAutoSync();
+- if (shutdownNotifierIPDlg) {
+- static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Saving your settings..."));
+- }
+-
+ if ( saveSession )
+ sessionGroup = TQString("Session: ") + SESSION_PREVIOUS_LOGOUT;
+
+@@ -252,9 +234,9 @@ void KSMServer::shutdownInternal( KApplication::ShutdownConfirm confirm,
+ completeShutdownOrCheckpoint();
+ }
+ else {
+- if (showFancyLogout) {
+- KSMShutdownIPFeedback::stop();
+- }
++ if (showFancyLogout) {
++ KSMShutdownIPFeedback::stop();
++ }
+ }
+ dialogActive = false;
+ }
+@@ -502,6 +484,25 @@ void KSMServer::completeShutdownOrCheckpoint()
+ if ( waitForPhase2 )
+ return;
+
++ bool showFancyLogout = KConfigGroup(KGlobal::config(), "Logout").readBoolEntry("showFancyLogout", true);
++ if (showFancyLogout) {
++ KSMShutdownIPFeedback::showit(); // hide the UGLY logout process from the user
++ shutdownNotifierIPDlg = KSMShutdownIPDlg::showShutdownIP();
++ while (!KSMShutdownIPFeedback::ispainted()) {
++ tqApp->processEvents();
++ }
++ }
++
++ // synchronize any folders that were requested for shutdown sync
++ if (shutdownNotifierIPDlg) {
++ static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Synchronizing remote folders").append("..."));
++ }
++ KRsync krs(this, "");
++ krs.executeLogoutAutoSync();
++ if (shutdownNotifierIPDlg) {
++ static_cast<KSMShutdownIPDlg*>(shutdownNotifierIPDlg)->setStatusMessage(i18n("Saving your settings..."));
++ }
++
+ if ( saveSession )
+ storeSession();
+ else
+diff --git a/ksmserver/shutdowndlg.cpp b/ksmserver/shutdowndlg.cpp
+index 163352a..35cae65 100644
+--- a/ksmserver/shutdowndlg.cpp
++++ b/ksmserver/shutdowndlg.cpp
+@@ -528,6 +528,11 @@ KSMShutdownIPFeedback::KSMShutdownIPFeedback()
+ : TQWidget( 0L, "systemmodaldialogclass", Qt::WStyle_Customize | Qt::WStyle_NoBorder | Qt::WStyle_StaysOnTop ), m_timeout(0), m_isPainted(false), m_sharedRootPixmap(NULL), mPixmapTimeout(0)
+
+ {
++ setShown(false);
++ hide();
++
++ enableExports();
++
+ m_sharedRootPixmap = new KRootPixmap(this);
+ m_sharedRootPixmap->setCustomPainting(true);
+ connect(m_sharedRootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotSetBackgroundPixmap(const TQPixmap &)));
+@@ -554,15 +559,36 @@ KSMShutdownIPFeedback::KSMShutdownIPFeedback()
+ setBackgroundPixmap( m_root );
+ setGeometry( TQApplication::desktop()->geometry() );
+ setBackgroundMode( TQWidget::NoBackground );
+-
+- setShown(true);
+ }
+
+ void KSMShutdownIPFeedback::showNow()
+ {
++ setShown(true);
++
+ TQTimer::singleShot( 0, this, SLOT(slotPaintEffect()) );
+ }
+
++void KSMShutdownIPFeedback::enableExports()
++{
++#ifdef Q_WS_X11
++ kdDebug(270) << k_lineinfo << "activating background exports.\n";
++ DCOPClient *client = kapp->dcopClient();
++ if (!client->isAttached()) {
++ client->attach();
++ }
++ TQByteArray data;
++ TQDataStream args( data, IO_WriteOnly );
++ args << 1;
++
++ TQCString appname( "kdesktop" );
++ int screen_number = DefaultScreen(qt_xdisplay());
++ if ( screen_number )
++ appname.sprintf("kdesktop-screen-%d", screen_number );
++
++ client->send( appname, "KBackgroundIface", "setExport(int)", data );
++#endif
++}
++
+ KSMShutdownIPFeedback::~KSMShutdownIPFeedback()
+ {
+ if (m_sharedRootPixmap) {
+diff --git a/ksmserver/shutdowndlg.h b/ksmserver/shutdowndlg.h
+index db66c55..05ca991 100644
+--- a/ksmserver/shutdowndlg.h
++++ b/ksmserver/shutdowndlg.h
+@@ -97,6 +97,13 @@
+ void slotSetBackgroundPixmap(const TQPixmap &);
+
+ private:
++ /**
++ * Asks KDesktop to export the desktop background as a KSharedPixmap.
++ * This method uses DCOP to call KBackgroundIface/setExport(int).
++ */
++ void enableExports();
++
++private:
+ static KSMShutdownIPFeedback * s_pSelf;
+ KSMShutdownIPFeedback();
+ int m_currentY;
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_fqdn_in_title.patch b/redhat/tdebase/kdebase-3.5.13-fix_fqdn_in_title.patch
new file mode 100644
index 000000000..74122ec46
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_fqdn_in_title.patch
@@ -0,0 +1,46 @@
+commit d409abdbef8dd8b72bb2f311fcaa7456bdc2404b
+Author: Luboš Luňák <l.lunak@suse.cz>
+Date: Fri Mar 4 16:22:23 2011 +0100
+
+ do not show hostname in titlebar if it's FQDN of localhost
+
+diff --git a/kwin/utils.cpp b/kwin/utils.cpp
+--- a/kwin/utils.cpp
++++ b/kwin/utils.cpp
+@@ -18,6 +18,8 @@
+ #include "utils.h"
+
+ #include <unistd.h>
++#include <string.h>
++#include <netdb.h>
+
+ #ifndef KCMRULES
+
+@@ -323,6 +325,27 @@ bool isLocalMachine( const TQCString& host )
+ if( host == hostnamebuf )
+ return true;
+ }
++ else
++ { // e.g. LibreOffice likes to give FQDN, even if gethostname() doesn't include domain
++ struct addrinfo hints, *res, *addr;
++ bool is_local = false;
++
++ memset (&hints, 0, sizeof (hints));
++ hints.ai_family = PF_UNSPEC;
++ hints.ai_socktype = SOCK_STREAM;
++ hints.ai_flags |= AI_CANONNAME;
++
++ if( getaddrinfo( host, NULL, &hints, &res ) != 0)
++ return false;
++ for(addr = res; !is_local && addr; addr = addr->ai_next)
++ {
++ if( res->ai_canonname &&
++ host == TQCString( res->ai_canonname ))
++ is_local = true;
++ }
++ freeaddrinfo(res);
++ return is_local;
++ }
+ }
+ return false;
+ }
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_kdesktop_lock_security_issue.patch b/redhat/tdebase/kdebase-3.5.13-fix_kdesktop_lock_security_issue.patch
new file mode 100644
index 000000000..1660d03f2
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_kdesktop_lock_security_issue.patch
@@ -0,0 +1,157 @@
+commit f05f9dc7532ea41c49b3e9385165d942dfab5d0e
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1327036924 -0600
+
+ If someone manages to close down kdesktop_lock through an undiscovered security vulnerability such as http://security-tracker.debian.org/tracker/CVE-2012-0064, immediately terminate the compromised TDE session
+
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 6bd18f7..2588bbf 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -326,10 +326,8 @@ static int signal_pipe[2];
+ static void sigterm_handler(int)
+ {
+ if (!trinity_desktop_lock_in_sec_dlg) {
+- char tmp = 'T';
+- if (::write( signal_pipe[1], &tmp, 1) == -1) {
+- // Error handler to shut up gcc warnings
+- }
++ // Exit uncleanly
++ exit(1);
+ }
+ }
+
+@@ -522,7 +520,7 @@ void LockProcess::setupSignals()
+ sigaddset(&(act.sa_mask), SIGQUIT);
+ act.sa_flags = 0;
+ sigaction(SIGQUIT, &act, 0L);
+- // exit cleanly on SIGTERM
++ // exit uncleanly on SIGTERM
+ act.sa_handler= sigterm_handler;
+ sigemptyset(&(act.sa_mask));
+ sigaddset(&(act.sa_mask), SIGTERM);
+diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
+index b957218..c5306e9 100644
+--- a/kdesktop/lockeng.cc
++++ b/kdesktop/lockeng.cc
+@@ -36,10 +36,11 @@ bool trinity_lockeng_sak_available = TRUE;
+ // a newly started process.
+ //
+ SaverEngine::SaverEngine()
+- : KScreensaverIface(),
+- TQWidget(),
++ : TQWidget(),
++ KScreensaverIface(),
+ mBlankOnly(false),
+- mSAKProcess(NULL)
++ mSAKProcess(NULL),
++ mTerminationRequested(false)
+ {
+ // Save X screensaver parameters
+ XGetScreenSaver(qt_xdisplay(), &mXTimeout, &mXInterval,
+@@ -340,6 +341,7 @@ void SaverEngine::stopLockProcess()
+ kdDebug(1204) << "SaverEngine: stopping lock" << endl;
+ emitDCOPSignal("KDE_stop_screensaver()", TQByteArray());
+
++ mTerminationRequested=true;
+ mLockProcess.kill();
+
+ if (mEnabled)
+@@ -357,7 +359,33 @@ void SaverEngine::stopLockProcess()
+
+ void SaverEngine::lockProcessExited()
+ {
++printf("Lock process exited\n\r"); fflush(stdout);
++ bool abnormalExit = false;
+ kdDebug(1204) << "SaverEngine: lock exited" << endl;
++ if (mLockProcess.normalExit() == false) {
++ abnormalExit = true;
++ }
++ else {
++ if (mLockProcess.exitStatus() != 0) {
++ abnormalExit = true;
++ }
++ }
++ if (mTerminationRequested == true) {
++ abnormalExit = false;
++ }
++ if (abnormalExit == true) {
++ // PROBABLE HACKING ATTEMPT DETECTED
++ // Terminate the TDE session ASAP!
++ // Values are explained at http://lists.kde.org/?l=kde-linux&m=115770988603387
++ TQByteArray data;
++ TQDataStream arg(data, IO_WriteOnly);
++ arg << (int)0 << (int)0 << (int)2;
++ if ( ! kapp->dcopClient()->send("ksmserver", "default", "logout(int,int,int)", data) ) {
++ // Someone got to DCOP before we did
++ // Try an emergency system logout
++ system("logout");
++ }
++ }
+ if (trinity_lockeng_sak_available == TRUE) {
+ handleSecureDialog();
+ }
+diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h
+index b1e31bd..ae81f90 100644
+--- a/kdesktop/lockeng.h
++++ b/kdesktop/lockeng.h
+@@ -114,6 +114,7 @@ protected:
+
+ private:
+ KProcess* mSAKProcess;
++ bool mTerminationRequested;
+ };
+
+ #endif
+commit 5f8d730703882e1335305a2c43a378f0c4b96e8e
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1327216641 -0600
+
+ Fix desktop lock
+
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 2588bbf..5acc96e 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -630,6 +630,8 @@ void LockProcess::startSecureDialog()
+ return;
+ }
+
++ setGeometry(0, 0, mRootWidth, mRootHeight);
++
+ int ret;
+ SecureDlg inDlg( this );
+ inDlg.setRetInt(&ret);
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index 2711c36..c0b8e24 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -181,14 +181,14 @@ int main( int argc, char **argv )
+ rt = process.runSecureDialog();
+ }
+ else {
+- return 1;
++ return 0;
+ }
+ }
+ else {
+ rt = process.defaultSave();
+ }
+ if (!rt) {
+- return 1;
++ return 0;
+ }
+
+ if( sig )
+diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
+index fb0f754..5307c5c 100644
+--- a/kdesktop/lockeng.cc
++++ b/kdesktop/lockeng.cc
+@@ -372,6 +372,7 @@ printf("Lock process exited\n\r"); fflush(stdout);
+ }
+ if (mTerminationRequested == true) {
+ abnormalExit = false;
++ mTerminationRequested = false;
+ }
+ if (abnormalExit == true) {
+ // PROBABLE HACKING ATTEMPT DETECTED
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_kdesu_kdesudo_argument_compatibility.patch b/redhat/tdebase/kdebase-3.5.13-fix_kdesu_kdesudo_argument_compatibility.patch
new file mode 100644
index 000000000..9dd7d7935
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_kdesu_kdesudo_argument_compatibility.patch
@@ -0,0 +1,18 @@
+commit 59ee4f6630e6ed6b2712600a88d3ba9ce383620b
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1339467335 -0500
+
+ Fix tdesu/tdesudo argument compatibility problem
+
+diff --git a/kdesu/kdesu/kdesu.cpp b/kdesu/kdesu/kdesu.cpp
+index 3511b1f..8ea82fb 100644
+--- a/kdesu/kdesu/kdesu.cpp
++++ b/kdesu/kdesu/kdesu.cpp
+@@ -63,6 +63,7 @@ static KCmdLineOptions options[] = {
+ { "p <prio>", I18N_NOOP("Set priority value: 0 <= prio <= 100, 0 is lowest"), "50" },
+ { "r", I18N_NOOP("Use realtime scheduling"), 0 },
+ { "nonewdcop", I18N_NOOP("Let command use existing dcopserver"), 0 },
++ { "comment <comment>", I18N_NOOP("Ignored"), "" },
+ { "noignorebutton", I18N_NOOP("Do not display ignore button"), 0 },
+ { "i <icon name>", I18N_NOOP("Specify icon to use in the password dialog"), 0},
+ { "d", I18N_NOOP("Do not show the command to be run in the dialog"), 0},
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch b/redhat/tdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch
new file mode 100644
index 000000000..1a80c00f1
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_kdm_cpu_usage.patch
@@ -0,0 +1,47 @@
+commit 1e2983ad0107fb1d26e3e9931528701f30632c6d
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1326856834 -0600
+
+ Fix kdm_greet high CPU usage
+ Clean up a few build warnings
+
+diff --git a/kdm/kfrontend/kgreeter.cpp b/kdm/kfrontend/kgreeter.cpp
+index 9b974cc..5877cb6 100644
+--- a/kdm/kfrontend/kgreeter.cpp
++++ b/kdm/kfrontend/kgreeter.cpp
+@@ -273,6 +273,9 @@ void KGreeter::handleInputPipe(void) {
+ readbuf[numread] = 0;
+ readbuf[2047] = 0;
+ inputcommand += readbuf;
++ if (!tqApp->hasPendingEvents()) {
++ usleep(500);
++ }
+ tqApp->processEvents();
+ }
+ if (closingDown) {
+@@ -508,11 +511,11 @@ KGreeter::insertUsers(int limit_users)
+ int count = 0;
+ for (setpwent(); (ps = getpwent()) != 0;) {
+ if (*ps->pw_dir && *ps->pw_shell &&
+- (ps->pw_uid >= (unsigned)_lowUserId ||
+- !ps->pw_uid && _showRoot) &&
+- ps->pw_uid <= (unsigned)_highUserId &&
+- !noUsers.hasUser( ps->pw_name ) &&
+- !noUsers.hasGroup( ps->pw_gid ))
++ ((ps->pw_uid >= (unsigned)_lowUserId) ||
++ ((!ps->pw_uid) && _showRoot)) &&
++ (ps->pw_uid <= (unsigned)_highUserId) &&
++ (!noUsers.hasUser( ps->pw_name )) &&
++ (!noUsers.hasGroup( ps->pw_gid )))
+ {
+ TQString username( TQFile::decodeName( ps->pw_name ) );
+ if (!dupes.find( username )) {
+@@ -574,7 +577,7 @@ KGreeter::insertUsers(int limit_users)
+ for (setpwent(); (ps = getpwent()) != 0;) {
+ if (*ps->pw_dir && *ps->pw_shell &&
+ (ps->pw_uid >= (unsigned)_lowUserId ||
+- !ps->pw_uid && _showRoot) &&
++ ((!ps->pw_uid) && _showRoot)) &&
+ ps->pw_uid <= (unsigned)_highUserId &&
+ (users.hasUser( ps->pw_name ) ||
+ users.hasGroup( ps->pw_gid )))
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_khtml_smooth_scrolling.patch b/redhat/tdebase/kdebase-3.5.13-fix_khtml_smooth_scrolling.patch
new file mode 100644
index 000000000..99256971b
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_khtml_smooth_scrolling.patch
@@ -0,0 +1,38 @@
+commit b45b4bd730da3196a4658773f7eef46e004a39d6
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1337063762 -0500
+
+ Fix KHTML smooth scrolling control center option
+ This closes Bug 1001
+ Thanks to Roman Savochenko for the patch!
+
+diff --git a/kcontrol/konqhtml/htmlopts.cpp b/kcontrol/konqhtml/htmlopts.cpp
+index 0b81421..9e199cb 100644
+--- a/kcontrol/konqhtml/htmlopts.cpp
++++ b/kcontrol/konqhtml/htmlopts.cpp
+@@ -299,7 +299,7 @@ void KMiscHTMLOptions::load( bool useDefaults )
+ KConfig kdeglobals("kdeglobals", true, false);
+ kdeglobals.setReadDefaults( useDefaults );
+ kdeglobals.setGroup("KDE");
+- bool smoothScrolling = kdeglobals.readBoolEntry("SmoothScroll", DEFAULT_SMOOTHSCROLL);
++ bool smoothScrolling = kdeglobals.readBoolEntry("SmoothScrolling", DEFAULT_SMOOTHSCROLL);
+ if (smoothScrolling)
+ m_pSmoothScrollingCombo->setCurrentItem( SmoothScrollingAlways );
+ else
+@@ -374,13 +374,13 @@ void KMiscHTMLOptions::save()
+ switch(m_pSmoothScrollingCombo->currentItem())
+ {
+ case SmoothScrollingAlways:
+- kdeglobals.writeEntry( "SmoothScroll", true );
++ kdeglobals.writeEntry( "SmoothScrolling", true );
+ break;
+ case SmoothScrollingNever:
+- kdeglobals.writeEntry( "SmoothScroll", false );
++ kdeglobals.writeEntry( "SmoothScrolling", false );
+ break;
+ // case SmoothScrollingWhenEfficient:
+- // kdeglobals.writeEntry( "SmoothScroll", somethingelse );
++ // kdeglobals.writeEntry( "SmoothScrolling", somethingelse );
+ // break;
+ }
+ kdeglobals.sync();
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_kio_sftp.patch b/redhat/tdebase/kdebase-3.5.13-fix_kio_sftp.patch
new file mode 100644
index 000000000..64dfa8e21
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_kio_sftp.patch
@@ -0,0 +1,57 @@
+commit e72f4926c094b2bd94501518fbcd2a3e66a74f6a
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1335166907 -0500
+
+ Fix sftp failure on newer systems
+ This closes Bug 897
+
+diff --git a/kioslave/sftp/ksshprocess.cpp b/kioslave/sftp/ksshprocess.cpp
+index 2ccab59..3393f89 100644
+--- a/kioslave/sftp/ksshprocess.cpp
++++ b/kioslave/sftp/ksshprocess.cpp
+@@ -569,7 +569,9 @@ TQString KSshProcess::getLine() {
+ // If we still don't have anything in our buffer so there must
+ // not be anything on the pty or stderr. Setup a select()
+ // to wait for some data from SSH.
+- if( buffer.empty() ) {
++ // Hack around select() failure on newer systems
++ unsigned long milliseconds = 0;
++ while ((buffer.size() == 0) && (milliseconds < (60*1000))) {
+ //kdDebug(KSSHPROC) << "KSshProcess::getLine(): " <<
+ // "Line buffer empty, calling select() to wait for data." << endl;
+ int errfd = ssh.stderrFd();
+@@ -616,14 +618,18 @@ TQString KSshProcess::getLine() {
+ // had data on it first.
+ if( FD_ISSET(ptyfd, &rfds) ) {
+ ptyLine = ssh.readLineFromPty(false);
+- buffer.prepend(TQString(ptyLine));
++ if (ptyLine.size() > 0) {
++ buffer.prepend(TQString(ptyLine));
++ }
+ //kdDebug(KSSHPROC) << "KSshProcess::getLine(): "
+ // "line from pty -" << ptyLine << endl;
+ }
+-
++
+ if( FD_ISSET(errfd, &rfds) ) {
+ errLine = ssh.readLineFromStderr(false);
+- buffer.prepend(TQString(errLine));
++ if (errLine.size() > 0) {
++ buffer.prepend(TQString(errLine));
++ }
+ //kdDebug(KSSHPROC) << "KSshProcess::getLine(): "
+ // "line from err -" << errLine << endl;
+ }
+@@ -637,7 +643,11 @@ TQString KSshProcess::getLine() {
+ kdDebug(KSSHPROC) << "KSshProcess::getLine(): "
+ "Exception on std err file descriptor." << endl;
+ }
+-
++
++ if (buffer.size() == 0) {
++ milliseconds++;
++ usleep(1000);
++ }
+ }
+ }
+
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_kio_sftp_nonstandard_ports.patch b/redhat/tdebase/kdebase-3.5.13-fix_kio_sftp_nonstandard_ports.patch
new file mode 100644
index 000000000..00d3eea50
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_kio_sftp_nonstandard_ports.patch
@@ -0,0 +1,23 @@
+commit 073dc86aceaa060597d7653747c3c6c14d0ed59d
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1335311121 -0500
+
+ Fix sftp when nonstandard port is specified in ssh config
+
+diff --git a/kioslave/sftp/kio_sftp.cpp b/kioslave/sftp/kio_sftp.cpp
+index 2316c8c..04a2b33 100644
+--- a/kioslave/sftp/kio_sftp.cpp
++++ b/kioslave/sftp/kio_sftp.cpp
+@@ -481,11 +481,7 @@ void sftpProtocol::setHost (const TQString& h, int port, const TQString& user, c
+ if( port > 0 )
+ mPort = port;
+ else {
+- struct servent *pse;
+- if( (pse = getservbyname("ssh", "tcp") ) == NULL )
+- mPort = 22;
+- else
+- mPort = ntohs(pse->s_port);
++ mPort = -1;
+ }
+
+ mUsername = user;
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_kxdglauncher_document.patch b/redhat/tdebase/kdebase-3.5.13-fix_kxdglauncher_document.patch
new file mode 100644
index 000000000..015270759
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_kxdglauncher_document.patch
@@ -0,0 +1,18 @@
+commit f752bcbf6585c61f414963ad83e1300a1da08504
+Author: Darrell Anderson <humanreadable@yahoo.com>
+Date: 1333232616 -0500
+
+ Fix "Malformed URL $( kxdglauncher --getpath xdgname DOCUMENTS )" error dialog.
+
+diff --git a/kioslave/system/entries/documents.desktop b/kioslave/system/entries/documents.desktop
+index e5fc3d1..d65cc3d 100644
+--- a/kioslave/system/entries/documents.desktop
++++ b/kioslave/system/entries/documents.desktop
+@@ -1,6 +1,6 @@
+ [Desktop Entry]
+ Type=Link
+-Path=$( kxdglauncher --getpath --xdgname DOCUMENTS )
++URL=$( kxdglauncher --getpath --xdgname DOCUMENTS )
+ Icon=folder_man
+ Name=Documents Folder
+ Name[af]=Dokument Gids
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_lib_detection.patch b/redhat/tdebase/kdebase-3.5.13-fix_lib_detection.patch
new file mode 100644
index 000000000..15092a8c4
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_lib_detection.patch
@@ -0,0 +1,102 @@
+--- kdebase/ConfigureChecks.cmake.libdetect 2012-09-06 20:55:39.679897201 +0200
++++ kdebase/ConfigureChecks.cmake 2012-09-06 21:06:41.454048511 +0200
+@@ -100,22 +100,26 @@
+ # xext (kwin/kompmgr)
+ if( WITH_XEXT )
+ pkg_search_module( XEXT xext )
+- if( XEXT_FOUND )
+- set( HAVE_XEXT 1 )
+- else( XEXT_FOUND )
+- tde_message_fatal( "xext is requested, but was not found on your system" )
++ if( NOT XEXT_FOUND )
++ find_path( XEXT_INCLUDE_DIR "X11/extensions/Xext.h" )
++ if ( NOT XEXT_INCLUDE_DIR )
++ tde_message_fatal( "xext is requested, but was not found on your system" )
++ endif( )
+ endif( )
++ set( HAVE_XEXT 1 )
+ endif( )
+
+
+ # xtest (kxkb)
+ if( WITH_XTEST )
+ pkg_search_module( XTEST xtst )
+- if( XTEST_FOUND )
+- set( HAVE_XTEST 1 )
+- else( XTEST_FOUND )
+- tde_message_fatal( "xtest is requested, but was not found on your system" )
++ if( NOT XTEST_FOUND )
++ find_path ( XTEST_INCLUDE_DIR "X11/extensions/XTest.h" )
++ if( NOT XTEST_INCLUDE_DIR )
++ tde_message_fatal( "xtest is requested, but was not found on your system" )
++ endif( )
+ endif( )
++ set( HAVE_XTEST 1 )
+ endif( )
+
+
+@@ -125,12 +129,20 @@
+ if( HAVE_XSSLIB )
+ pkg_search_module( XSS xscrnsaver )
+ else( )
+- check_library_exists( Xext XScreenSaverQueryInfo "" HAVE_XSSLIB )
+- if( HAVE_XSSLIB )
+- pkg_search_module( XSS xext )
++ find_path( XSS_LIBRARY_DIR "libXss.so" )
++ if( XSS_LIBRARY_DIR )
++ set( HAVE_XSSLIB 1 )
++ else( )
++ check_library_exists( Xext XScreenSaverQueryInfo "" HAVE_XSSLIB )
++ if( HAVE_XSSLIB )
++ pkg_search_module( XSS xext )
++ endif( )
+ endif( )
+ endif( )
+- check_include_file( X11/extensions/scrnsaver.h HAVE_XSCREENSAVER_H )
++ find_path( XSCREENSAVER_INCLUDE_DIR "X11/extensions/scrnsaver.h" )
++ if( XSCREENSAVER_INCLUDE_DIR )
++ set( HAVE_XSCREENSAVER_H 1 )
++ endif( )
+ if( HAVE_XSSLIB AND HAVE_XSCREENSAVER_H )
+ set( HAVE_XSCREENSAVER 1 )
+ else( )
+--- kdebase/kcontrol/ConfigureChecks.cmake.ORI 2012-09-06 21:14:07.070747861 +0200
++++ kdebase/kcontrol/ConfigureChecks.cmake 2012-09-06 21:18:33.159501490 +0200
+@@ -59,10 +59,13 @@
+
+ if( WITH_LIBUSB )
+ pkg_search_module( LIBUSB libusb )
+- if( LIBUSB_FOUND )
+- set( HAVE_LIBUSB 1 CACHE INTERNAL "" FORCE )
+- else( )
+- tde_message_fatal( "libusb are requested, but not found on your system" )
++ if( NOT LIBUSB_FOUND )
++ find_path( LIBUSB_LIBRARY_DIR libusb.so )
++ if( LIBUSB_LIBRARY_DIR )
++ set( HAVE_LIBUSB 1 CACHE INTERNAL "" FORCE )
++ else( )
++ #tde_message_fatal( "libusb are requested, but not found on your system" )
++ endif( )
+ endif( )
+ endif( )
+
+--- kdebase/kdm/ConfigureChecks.cmake.ORI 2012-09-06 21:43:53.814013510 +0200
++++ kdebase/kdm/ConfigureChecks.cmake 2012-09-06 21:44:10.768708628 +0200
+@@ -112,7 +112,7 @@
+ # Xau
+ pkg_search_module( XAU xau )
+ if( NOT XAU_FOUND )
+- tde_message_fatal( "Xau are required, but not found on your system" )
++ set( XAU_LIBRARIES "-lXau" )
+ endif()
+
+
+@@ -122,7 +122,7 @@
+ if( XDMCP_FOUND )
+ set( XDMCP 1 CACHE INTERNAL "" FORCE )
+ else()
+- tde_message_fatal( "xdmcp is requested, but was not found on your system" )
++ set( XDMCP_LIBRARIES "-lXdmcp" )
+ endif()
+ endif()
+
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_lock_failure.patch b/redhat/tdebase/kdebase-3.5.13-fix_lock_failure.patch
new file mode 100644
index 000000000..6cb257d9b
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_lock_failure.patch
@@ -0,0 +1,84 @@
+commit 67a3a8f34892a6491ba0073a3f583503b44e58e7
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1335211141 -0500
+
+ Fix desktop lock failure due to race condition within signal handler between qt and xcb
+
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index c0050d3..3c67ac0 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -659,6 +659,7 @@ void LockProcess::startSecureDialog()
+ mBusy = false;
+ trinity_desktop_lock_in_sec_dlg = false;
+ if (ret == 0) {
++ trinity_desktop_lock_closing_windows = 1;
+ kapp->quit();
+ }
+ if (ret == 1) {
+@@ -687,6 +688,7 @@ void LockProcess::startSecureDialog()
+ mBusy = false;
+ }
+ if (ret == 2) {
++ trinity_desktop_lock_closing_windows = 1;
+ if (system("ksysguard &") == -1) {
+ // Error handler to shut up gcc warnings
+ }
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index 5853da1..225d9c5 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -260,7 +260,7 @@ int main( int argc, char **argv )
+
+ bool rt;
+ bool sig = false;
+- if( !child && (args->isSet( "forcelock" ) || (signalled_forcelock == TRUE)))
++ if( (((!child) && (args->isSet( "forcelock" ))) || (signalled_forcelock == TRUE)))
+ {
+ rt = process.lock();
+ sig = true;
+diff --git a/kdesktop/lockeng.cc b/kdesktop/lockeng.cc
+index 9eb88e1..f24d02f 100644
+--- a/kdesktop/lockeng.cc
++++ b/kdesktop/lockeng.cc
+@@ -34,7 +34,7 @@ SaverEngine* m_masterSaverEngine = NULL;
+ static void sigusr1_handler(int)
+ {
+ if (m_masterSaverEngine) {
+- m_masterSaverEngine->lockProcessWaiting();
++ m_masterSaverEngine->slotLockProcessWaiting();
+ }
+ }
+
+@@ -445,6 +445,13 @@ void SaverEngine::lockProcessExited()
+ }
+ }
+
++void SaverEngine::slotLockProcessWaiting()
++{
++ // lockProcessWaiting cannot be called directly from a signal handler, as it will hang in certain obscure circumstances
++ // Instead we use a single-shot timer to immediately call lockProcessWaiting once control has returned to the Qt main loop
++ TQTimer::singleShot(0, this, SLOT(lockProcessWaiting()));
++}
++
+ void SaverEngine::lockProcessWaiting()
+ {
+ kdDebug(1204) << "SaverEngine: lock exited" << endl;
+diff --git a/kdesktop/lockeng.h b/kdesktop/lockeng.h
+index ae08e9a..e42a048 100644
+--- a/kdesktop/lockeng.h
++++ b/kdesktop/lockeng.h
+@@ -79,11 +79,12 @@ public:
+ virtual void saverLockReady();
+
+ public slots:
+- void lockProcessWaiting();
++ void slotLockProcessWaiting();
+
+ protected slots:
+ void idleTimeout();
+ void lockProcessExited();
++ void lockProcessWaiting();
+
+ private slots:
+ void handleSecureDialog();
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_menu_crash_with_disabled_search.patch b/redhat/tdebase/kdebase-3.5.13-fix_menu_crash_with_disabled_search.patch
new file mode 100644
index 000000000..b52e51188
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_menu_crash_with_disabled_search.patch
@@ -0,0 +1,20 @@
+commit 0afb2d8a78d212568f6836dd0e7d41382cfb991d
+Author: Slávek Banko <slavek.banko@axis.cz>
+Date: 1341682699 +0200
+
+ Fix menu crash with disabled search field
+ This resolves Bug 1081
+
+diff --git a/kicker/kicker/ui/k_mnu.cpp b/kicker/kicker/ui/k_mnu.cpp
+index b7cfe8f..702c921 100644
+--- a/kicker/kicker/ui/k_mnu.cpp
++++ b/kicker/kicker/ui/k_mnu.cpp
+@@ -273,6 +273,8 @@ void PanelKMenu::initialize()
+ connect(searchEdit, TQT_SIGNAL(textChanged(const TQString&)),
+ this, TQT_SLOT( slotUpdateSearch( const TQString&)));
+ insertItem(hbox, searchLineID, 0);
++ } else {
++ searchEdit = NULL;
+ }
+
+ //TQToolTip::add(clearButton, i18n("Clear Search"));
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_multihead_desktop_lock.patch b/redhat/tdebase/kdebase-3.5.13-fix_multihead_desktop_lock.patch
new file mode 100644
index 000000000..f2aed5a2d
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_multihead_desktop_lock.patch
@@ -0,0 +1,297 @@
+Index: kdesktop/lock/lockdlg.cc
+===================================================================
+--- kdesktop/lock/lockdlg.cc (revision 1261452)
++++ kdesktop/lock/lockdlg.cc (working copy)
+@@ -115,7 +115,7 @@
+ frame->setFrameStyle( TQFrame::Panel | TQFrame::Raised );
+ frame->setLineWidth( 2 );
+
+- TQLabel *pixLabel;
++ TQLabel *pixLabel = NULL;
+ if (!trinity_desktop_lock_use_system_modal_dialogs) {
+ pixLabel = new TQLabel( frame, "pixlabel" );
+ pixLabel->setPixmap(DesktopIcon("lock"));
+@@ -134,7 +134,7 @@
+ i18n("<nobr><b>The session was locked by %1</b><br>").arg( user.fullName() ), frame );
+ }
+
+- TQLabel *lockDTLabel;
++ TQLabel *lockDTLabel = NULL;
+ if ((trinity_desktop_lock_use_system_modal_dialogs) && (!m_lockStartDT.isNull())) {
+ lockDTLabel = new TQLabel(i18n("This session has been locked since %1").arg(m_lockStartDT.toString()), frame);
+ }
+Index: kdesktop/lock/lockprocess.cc
+===================================================================
+--- kdesktop/lock/lockprocess.cc (revision 1261452)
++++ kdesktop/lock/lockprocess.cc (working copy)
+@@ -173,6 +173,7 @@
+ mDialogControlLock(false),
+ mForceReject(false),
+ currentDialog(NULL),
++ mEnsureScreenHiddenTimer(NULL),
+ mForceContinualLockDisplayTimer(NULL),
+ mEnsureVRootWindowSecurityTimer(NULL),
+ mHackDelayStartupTimer(NULL),
+@@ -288,6 +289,10 @@
+ hackResumeTimer->stop();
+ delete hackResumeTimer;
+ }
++ if (mEnsureScreenHiddenTimer != NULL) {
++ mEnsureScreenHiddenTimer->stop();
++ delete mEnsureScreenHiddenTimer;
++ }
+ if (mForceContinualLockDisplayTimer != NULL) {
+ mForceContinualLockDisplayTimer->stop();
+ delete mForceContinualLockDisplayTimer;
+@@ -410,7 +415,7 @@
+ if (numread > 0) {
+ if (readbuf[0] == 'C') {
+ mInfoMessageDisplayed=false;
+- while (mDialogControlLock == true) sleep(1);
++ while (mDialogControlLock == true) usleep(100000);
+ mDialogControlLock = true;
+ if (currentDialog != NULL) {
+ mForceReject = true;
+@@ -423,7 +428,7 @@
+ to_display = to_display.remove(0,1);
+ // Lock out password dialogs and close any active dialog
+ mInfoMessageDisplayed=true;
+- while (mDialogControlLock == true) sleep(1);
++ while (mDialogControlLock == true) usleep(100000);
+ mDialogControlLock = true;
+ if (currentDialog != NULL) {
+ mForceReject = true;
+@@ -444,7 +449,7 @@
+ to_display = to_display.remove(0,1);
+ // Lock out password dialogs and close any active dialog
+ mInfoMessageDisplayed=true;
+- while (mDialogControlLock == true) sleep(1);
++ while (mDialogControlLock == true) usleep(100000);
+ mDialogControlLock = true;
+ if (currentDialog != NULL) {
+ mForceReject = true;
+@@ -468,7 +473,7 @@
+ to_display = to_display.remove(0,1);
+ // Lock out password dialogs and close any active dialog
+ mInfoMessageDisplayed=true;
+- while (mDialogControlLock == true) sleep(1);
++ while (mDialogControlLock == true) usleep(100000);
+ mDialogControlLock = true;
+ if (currentDialog != NULL) {
+ mForceReject = true;
+@@ -887,8 +892,13 @@
+ mRootWidth = rootAttr.width;
+ mRootHeight = rootAttr.height;
+
++ // Resize the background widget
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+
++ // Black out the background widget to hide ugly resize tiling artifacts
++ setBackgroundColor(black);
++ erase();
++
+ // This slot needs to be able to execute very rapidly so as to prevent the user's desktop from ever
+ // being displayed, so we finish the hack restarting/display prettying operations in a separate timed slot
+ if (resizeTimer == NULL) {
+@@ -902,7 +912,7 @@
+ {
+ stopHack();
+
+- while (mDialogControlLock == true) sleep(1);
++ while (mDialogControlLock == true) usleep(100000);
+ mDialogControlLock = true;
+ if (closeCurrentWindow()) {
+ TQTimer::singleShot( 0, this, SLOT(doDesktopResizeFinish()) );
+@@ -911,7 +921,13 @@
+ mDialogControlLock = false;
+
+ // Restart the hack as the window size is now different
+- startHack();
++ if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced && trinity_desktop_lock_use_system_modal_dialogs) {
++ ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
++ if (mHackStartupEnabled) mHackDelayStartupTimer->start(mHackDelayStartupTimeout, TRUE);
++ }
++ else {
++ startHack();
++ }
+
+ mBusy = false;
+ }
+@@ -1064,7 +1080,7 @@
+
+ if (!grabKeyboard())
+ {
+- sleep(1);
++ usleep(100000);
+ if (!grabKeyboard())
+ {
+ return false;
+@@ -1073,7 +1089,7 @@
+
+ if (!grabMouse())
+ {
+- sleep(1);
++ usleep(100000);
+ if (!grabMouse())
+ {
+ XUngrabKeyboard(qt_xdisplay(), CurrentTime);
+@@ -1117,7 +1133,7 @@
+ m_grayImage.fill(0); // Set the alpha buffer to 0 (fully transparent)
+ m_grayImage.setAlphaBuffer(true);
+ TQPixmap m_root;
+- m_root.resize( TQApplication::desktop()->geometry().width(), TQApplication::desktop()->geometry().height() );
++ m_root.resize(mRootWidth, mRootHeight);
+ TQPainter p;
+ p.begin( &m_root );
+ m_grayImage.setAlphaBuffer(false);
+@@ -1144,14 +1160,21 @@
+ setBackgroundColor(black);
+ else
+ setBackgroundPixmap(backingPixmap);
++ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ }
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
+ // Try to get the root pixmap
+- m_rootPixmap = new KRootPixmap(this);
++ if (!m_rootPixmap) m_rootPixmap = new KRootPixmap(this);
+ m_rootPixmap->setCustomPainting(true);
+ connect(m_rootPixmap, TQT_SIGNAL(backgroundUpdated(const TQPixmap &)), this, TQT_SLOT(slotPaintBackground(const TQPixmap &)));
+ m_rootPixmap->start();
++ // Sometimes KRootPixmap fails...make sure the desktop is hidden regardless
++ if (!mEnsureScreenHiddenTimer) {
++ mEnsureScreenHiddenTimer = new TQTimer( this );
++ connect( mEnsureScreenHiddenTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(slotForcePaintBackground()) );
++ }
++ mEnsureScreenHiddenTimer->start(2000, true);
+ }
+
+ if (trinity_desktop_lock_in_sec_dlg == FALSE) {
+@@ -1275,6 +1298,7 @@
+ if (!mHackProc.isRunning()) {
+ if (backingPixmap.isNull()) {
+ setBackgroundColor(black);
++ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ }
+ else {
+@@ -1298,6 +1322,7 @@
+ setBackgroundColor(black);
+ else
+ setBackgroundPixmap(backingPixmap);
++ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ return false;
+ }
+@@ -1344,6 +1369,7 @@
+ setBackgroundColor(black);
+ else
+ setBackgroundPixmap(backingPixmap);
++ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ mSuspended = false;
+ }
+@@ -1377,7 +1403,10 @@
+ else
+ setBackgroundPixmap(backingPixmap);
+ }
+- if (backingPixmap.isNull()) erase();
++ if (backingPixmap.isNull()) {
++ setGeometry(0, 0, mRootWidth, mRootHeight);
++ erase();
++ }
+ else bitBlt(this, 0, 0, &backingPixmap);
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
+ ENABLE_CONTINUOUS_LOCKDLG_DISPLAY
+@@ -1416,7 +1445,10 @@
+ else
+ setBackgroundPixmap(backingPixmap);
+ }
+- if (backingPixmap.isNull()) erase();
++ if (backingPixmap.isNull()) {
++ setGeometry(0, 0, mRootWidth, mRootHeight);
++ erase();
++ }
+ else bitBlt(this, 0, 0, &backingPixmap);
+ if (!mSuspended) {
+ if (trinity_desktop_lock_use_system_modal_dialogs) {
+@@ -1492,6 +1524,7 @@
+ setBackgroundColor(black);
+ else
+ setBackgroundPixmap(backingPixmap);
++ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ return;
+ }
+@@ -1597,10 +1630,13 @@
+ }
+ mDialogs.prepend( dlg );
+ fakeFocusIn( dlg->winId());
+- if (backingPixmap.isNull() && trinity_desktop_lock_use_system_modal_dialogs) erase();
++ if (backingPixmap.isNull() && trinity_desktop_lock_use_system_modal_dialogs) {
++ setGeometry(0, 0, mRootWidth, mRootHeight);
++ erase();
++ }
+ else bitBlt(this, 0, 0, &backingPixmap);
+ int rt = dlg->exec();
+- while (mDialogControlLock == true) sleep(1);
++ while (mDialogControlLock == true) usleep(100000);
+ currentDialog = NULL;
+ mDialogs.remove( dlg );
+ if( mDialogs.isEmpty() ) {
+@@ -1624,8 +1660,18 @@
+ return rt;
+ }
+
++void LockProcess::slotForcePaintBackground()
++{
++ TQPixmap blankPixmap(mRootWidth, mRootHeight);
++ blankPixmap.fill(Qt::black);
++ slotPaintBackground(blankPixmap);
++ printf("[WARNING] Unable to obtain desktop wallpaper in a timely manner. High system load or possibly a TDE bug!\n\r"); fflush(stdout);
++}
++
+ void LockProcess::slotPaintBackground(const TQPixmap &rpm)
+ {
++ mEnsureScreenHiddenTimer->stop();
++
+ TQPixmap pm = rpm;
+
+ if (TQPaintDevice::x11AppDepth() == 32) {
+@@ -1652,6 +1698,7 @@
+ backingPixmap = pm;
+ if (trinity_desktop_lock_delay_screensaver_start && trinity_desktop_lock_forced) {
+ setBackgroundPixmap(backingPixmap);
++ setGeometry(0, 0, mRootWidth, mRootHeight);
+ erase();
+ }
+ }
+@@ -1677,7 +1724,7 @@
+ mBusy=true;
+ TQTimer::singleShot(1000, this, TQT_SLOT(slotDeadTimePassed()));
+ if (mkeyCode == XKeysymToKeycode(qt_xdisplay(), XF86XK_Display)) {
+- while (mDialogControlLock == true) sleep(1);
++ while (mDialogControlLock == true) usleep(100000);
+ mDialogControlLock = true;
+ currentDialog->close(); // DO NOT use closeCurrentWindow() here!
+ mDialogControlLock = false;
+Index: kdesktop/lock/lockprocess.h
+===================================================================
+--- kdesktop/lock/lockprocess.h (revision 1261452)
++++ kdesktop/lock/lockprocess.h (working copy)
+@@ -74,6 +74,7 @@
+ void doDesktopResizeFinish();
+ void doFunctionKeyBroadcast();
+ void slotPaintBackground(const TQPixmap &pm);
++ void slotForcePaintBackground();
+
+ protected:
+ virtual bool x11Event(XEvent *);
+@@ -181,6 +182,7 @@
+ bool mForceReject;
+ TQDialog *currentDialog;
+
++ TQTimer* mEnsureScreenHiddenTimer;
+ TQTimer* mForceContinualLockDisplayTimer;
+ TQTimer* mEnsureVRootWindowSecurityTimer;
+ TQTimer* mHackDelayStartupTimer;
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_potential_ABI_compat_problem.patch b/redhat/tdebase/kdebase-3.5.13-fix_potential_ABI_compat_problem.patch
new file mode 100644
index 000000000..ce8b23182
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_potential_ABI_compat_problem.patch
@@ -0,0 +1,24 @@
+commit 77041d785dbbede734f8dc44aa454d07d14f0317
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1329161441 -0600
+
+ Clean up 9cc1e2c1 changes to enum
+ This corrects a potential ABI compat problem noted by Martin Gräßlin
+
+diff --git a/twin/lib/kdecoration.h b/twin/lib/kdecoration.h
+index 19fe494..f18f970 100644
+--- a/kwin/lib/kdecoration.h
++++ b/kwin/lib/kdecoration.h
+@@ -97,10 +97,10 @@ public:
+ LowerOp,
+ FullScreenOp,
+ NoBorderOp,
+- ShadowOp,
+ NoOp,
+ SetupWindowShortcutOp,
+- ApplicationRulesOp ///< @since 3.5
++ ApplicationRulesOp, ///< @since 3.5
++ ShadowOp ///< @since 3.5.12
+ };
+ /**
+ * Basic color types that should be recognized by all decoration styles.
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_race_condition.patch b/redhat/tdebase/kdebase-3.5.13-fix_race_condition.patch
new file mode 100644
index 000000000..868c8c3cb
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_race_condition.patch
@@ -0,0 +1,22 @@
+commit 9e172fa7a1e93cc77e09616eb793b823d29ebaec
+Author: Darrell Anderson <humanreadable@yahoo.com>
+Date: 1333594438 -0500
+
+ Temporary fix for a probable race condition on some systems.
+ Still needs to be resolved by determining the root cause.
+ Partially resolves bug report 760.
+
+diff --git a/kioslave/system/kdedmodule/systemdirnotify.cpp b/kioslave/system/kdedmodule/systemdirnotify.cpp
+index 162d966..99b9ac7 100644
+--- a/kioslave/system/kdedmodule/systemdirnotify.cpp
++++ b/kioslave/system/kdedmodule/systemdirnotify.cpp
+@@ -36,6 +36,9 @@ SystemDirNotify::SystemDirNotify()
+ void SystemDirNotify::init()
+ {
+ if( mInited )
++ // FIXME Work around a race condition by inserting kdDebug delay before following
++ // code is executed -- the root cause of the race should be investigated and fixed.
++ kdDebug() << "SystemDirNotify::init(" << mInited << ")" << endl;
+ return;
+ mInited = true;
+ KGlobal::dirs()->addResourceType("system_entries",
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_rhel4_compilation.patch b/redhat/tdebase/kdebase-3.5.13-fix_rhel4_compilation.patch
new file mode 100644
index 000000000..21ee6a4bf
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_rhel4_compilation.patch
@@ -0,0 +1,152 @@
+--- kdebase/kwin/kompmgr/kompmgr.c.rhel4 2012-09-06 22:02:37.201586743 +0200
++++ kdebase/kwin/kompmgr/kompmgr.c 2012-09-06 22:04:39.529337359 +0200
+@@ -89,6 +89,8 @@
+ #include <pwd.h>
+ #endif
+
++#define ShapeInput 2
++
+ typedef enum {
+ WINTYPE_DESKTOP,
+ WINTYPE_DOCK,
+@@ -403,6 +405,70 @@
+ #endif
+ }
+
++void
++loadConfig(char *filename){
++ FILE *file = NULL;
++ char line[ 1024 ];
++ size_t length = 0;
++ Bool wasNull = False;
++ Bool section = False;
++
++ if( filename == NULL ){
++#ifdef USE_ENV_HOME
++ const char *home = getenv("HOME");
++#else
++ const char *home;
++ struct passwd *p;
++ p = getpwuid(getuid());
++ if (p)
++ home = p->pw_dir;
++ else
++ home = getenv("HOME");
++#endif
++ const char *configfile = "/.xcompmgrrc";
++ int n = strlen(home)+strlen(configfile)+1;
++ filename = (char*)malloc(n*sizeof(char));
++ memset(filename,0,n);
++ wasNull = True;
++
++ strcat(filename, home);
++ strcat(filename, configfile);
++ }
++
++ printf("trying '%s' as configfile\n\n", filename);
++
++ if( (file = fopen(filename, "r")) == NULL ){
++ printf("failed to open config file. does it exist?\n");
++ if( wasNull ){
++ free(filename);
++ filename = NULL;
++ }
++ return;
++ }
++
++ /*find section*/
++ while( !section && fgets(line, 1023, file) != NULL ){
++ if( strcmp(line, "[xcompmgr]\n") == 0 )
++ section = True;
++ }
++ /*read and set values*/
++ while( section && fgets(line, 1023, file) != NULL ){
++ int ret = strlen( line );
++ if( ret > 1 ){
++ if( *line == '[' )/*found new section - maybe check for '\n'?*/
++ break;
++ *(line+ret-1) = '\0';
++ setParameter(line);
++ }
++ }
++ printf("\nfinished parsing the config file\n");
++ fclose(file);
++ if( wasNull ){
++ free(filename);
++ filename = NULL;
++ }
++}
++
+ void handle_siguser (int sig)
+ {
+ int uidnum;
+@@ -2992,69 +3058,6 @@
+ return 0;
+ }
+
+-void
+-loadConfig(char *filename){
+- FILE *file = NULL;
+- char line[ 1024 ];
+- size_t length = 0;
+- Bool wasNull = False;
+- Bool section = False;
+-
+- if( filename == NULL ){
+-#ifdef USE_ENV_HOME
+- const char *home = getenv("HOME");
+-#else
+- const char *home;
+- struct passwd *p;
+- p = getpwuid(getuid());
+- if (p)
+- home = p->pw_dir;
+- else
+- home = getenv("HOME");
+-#endif
+- const char *configfile = "/.xcompmgrrc";
+- int n = strlen(home)+strlen(configfile)+1;
+- filename = (char*)malloc(n*sizeof(char));
+- memset(filename,0,n);
+- wasNull = True;
+-
+- strcat(filename, home);
+- strcat(filename, configfile);
+- }
+-
+- printf("trying '%s' as configfile\n\n", filename);
+-
+- if( (file = fopen(filename, "r")) == NULL ){
+- printf("failed to open config file. does it exist?\n");
+- if( wasNull ){
+- free(filename);
+- filename = NULL;
+- }
+- return;
+- }
+-
+- /*find section*/
+- while( !section && fgets(line, 1023, file) != NULL ){
+- if( strcmp(line, "[xcompmgr]\n") == 0 )
+- section = True;
+- }
+- /*read and set values*/
+- while( section && fgets(line, 1023, file) != NULL ){
+- int ret = strlen( line );
+- if( ret > 1 ){
+- if( *line == '[' )/*found new section - maybe check for '\n'?*/
+- break;
+- *(line+ret-1) = '\0';
+- setParameter(line);
+- }
+- }
+- printf("\nfinished parsing the config file\n");
+- fclose(file);
+- if( wasNull ){
+- free(filename);
+- filename = NULL;
+- }
+-}
+
+ void
+ usage (char *program)
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_tooltip_lock.patch b/redhat/tdebase/kdebase-3.5.13-fix_tooltip_lock.patch
new file mode 100644
index 000000000..6fc4d2e5e
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_tooltip_lock.patch
@@ -0,0 +1,29 @@
+--- kdebase/kdesktop/lock/lockprocess.cc.tooltips 2012-08-10 15:16:14.047229047 +0200
++++ kdebase/kdesktop/lock/lockprocess.cc 2012-08-10 15:41:08.433645385 +0200
+@@ -960,6 +960,26 @@
+
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+
++ // Hack to close all tooltips on screen
++ Window rootWindow = RootWindow(x11Display(), x11Screen());
++ Window parent;
++ Window* children = NULL;
++ Window* child = NULL;
++ unsigned int noOfChildren = 0;
++ XWindowAttributes childAttr;
++ Window childTransient;
++
++ if(XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) {
++ for (unsigned int i=0; i<noOfChildren; i++) {
++ if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
++ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
++ XUnmapWindow(x11Display(), children[i]);
++ }
++ }
++ }
++ }
++
++
+ kdDebug(1204) << "Saver window Id: " << winId() << endl;
+ }
+
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_translations_in_desktop_files.patch b/redhat/tdebase/kdebase-3.5.13-fix_translations_in_desktop_files.patch
new file mode 100644
index 000000000..3bf1c1fbe
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_translations_in_desktop_files.patch
@@ -0,0 +1,105 @@
+--- a/kdesktop/init/My_Documents 2011-10-24 00:31:04.000000000 +0200
++++ b/kdesktop/init/My_Documents 2012-02-15 19:03:22.830485960 +0100
+@@ -3,12 +3,10 @@
+ Icon=folder_wordprocessing
+ Name=My Documents
+ Name[af]=Dokument Gids
+-Name[ar]=مستنداتي
++Name[ar]=مستنداتي
+ Name[be]=Тэчка для дакументаў
+ Name[bg]=Директория с документи
+ Name[bn]=ডকুমেন্ট ফোল্ডার
+-Name[br]=Renkell an teulioù
+-Name[ar]=مستنداتي
+ Name[br]=Renkell an teulioù
+ Name[bs]=Direktorij dokumenata
+ Name[ca]=Carpeta de documents
+--- a/kioslave/system/entries/documents.desktop 2010-09-24 08:36:47.000000000 +0200
++++ b/kioslave/system/entries/documents.desktop 2012-02-15 19:02:55.094464303 +0100
+@@ -4,66 +4,55 @@
+ Icon=folder_man
+ Name=Documents Folder
+ Name[af]=Dokument Gids
+-Name[ar]=مستنداتي
++Name[ar]=مستنداتي
+ Name[be]=Тэчка для дакументаў
+ Name[bg]=Директория с документи
+ Name[bn]=ডকুমেন্ট ফোল্ডার
+-Name[br]=Renkell an teulioù
++Name[br]=Renkell an teulioù
+ Name[bs]=Direktorij dokumenata
+ Name[ca]=Carpeta de documents
+-Name[cs]=Složka s dokumenty
+-Name[csb]=Katalog dokùmentów
++Name[cs]=Složka s dokumenty
++Name[csb]=Katalog dokùmentów
+ Name[da]=Dokumentmappe
+ Name[de]=Dokumente
+-Name[el]=Φάκελος εγγράφων
+ Name[eo]=Dokumenta dosierujo
+ Name[es]=Carpeta de documentos
+ Name[et]=Dokumentide kataloog
+ Name[eu]=Dokumentuen karpeta
+-Name[fa]=پوشۀ مستندات
++Name[fa]=پوشۀ مستندات
+ Name[fi]=Asiakirjakansio
+ Name[fr]=Dossier des documents
+ Name[fy]=Ofkeppele kamera
+-Name[ga]=Fillteán na gCáipéisí
++Name[ga]=Fillteán na gCáipéisí
+ Name[gl]=Cartafol de Documentos
+-Name[he]=תיקיית מסמכים
+ Name[hr]=Mapa dokumenata
+-Name[hu]=Dokumentumok könyvtár
++Name[hu]=Dokumentumok könyvtár
+ Name[is]=Skjalamappa
+ Name[it]=Cartella documenti
+-Name[ja]=ドキュメントフォルダ
+-Name[ka]=დოკუმენტების დასტა
+-Name[kk]=Құжаттар қапшығы
+-Name[km]=ថត​ឯកសារ
+-Name[ko]=문서 탐색기
+-Name[lt]=Dokumentų aplankai
+-Name[mk]=Папка со документи
++Name[ja]=ドキュメントフォルダ
++Name[kk]=Құжаттар қапшығы
++Name[lt]=Dokumentų aplankai
+ Name[nb]=Dokumentmappe
+ Name[nds]=Dokmenten-Orner
+-Name[ne]=कागजात फोल्डर
+ Name[nl]=Documenten
+ Name[nn]=Dokumentmappe
+-Name[pa]=ਦਸਤਾਵੇਜ਼ ਫੋਲਡਰ
+-Name[pl]=Katalog dokumentów
++Name[pa]=ਦਸਤਾਵੇਜ਼ ਫੋਲਡਰ
++Name[pl]=Katalog dokumentów
+ Name[pt]=Pasta de Documentos
+ Name[pt_BR]=Pasta de Documentos
+ Name[ro]=Folder documente
+-Name[ru]=Документы
+-Name[se]=Dokumeantamáhppa
+-Name[sk]=Priečinok dokumentov
++Name[ru]=Документы
++Name[se]=Dokumeantamáhppa
+ Name[sl]=Mapa z dokumenti
+-Name[sr]=Фасцикла са документима
+ Name[sr@Latn]=Fascikla sa dokumentima
+ Name[sv]=Dokumentkatalog
+-Name[te]=పత్రాల ఫొల్డర్
+-Name[tg]=Ҳуҷҷатҳо
+-Name[th]=โฟลเดอร์เอกสาร
++Name[tg]=Ҳуҷҷатҳо
+ Name[tr]=Belgeler Dizini
+-Name[uk]=Тека документів
++Name[uk]=Тека документів
+ Name[uz]=Hujjatlar jildi
+-Name[uz@cyrillic]=Ҳужжатлар жилди
+-Name[vi]=Thư mục Tà i liệu
++Name[uz@cyrillic]=Ҳужжатлар жилди
++Name[vi]=Thư mục T� i liệu
+ Name[wa]=Ridant documints
+-Name[zh_CN]=文档文件夹
+-Name[zh_TW]=文件目錄
++Name[zh_CN]=文档文件夹
++Name[zh_TW]=文件目錄
+
diff --git a/redhat/tdebase/kdebase-3.5.13-fix_tsak_ftbfs.patch b/redhat/tdebase/kdebase-3.5.13-fix_tsak_ftbfs.patch
new file mode 100644
index 000000000..d5b978458
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-fix_tsak_ftbfs.patch
@@ -0,0 +1,12 @@
+--- kdebase/tsak/main.cpp.tsak 2012-08-20 18:12:34.000000000 -0400
++++ kdebase/tsak/main.cpp 2012-08-20 18:13:16.748272246 -0400
+@@ -35,7 +35,9 @@
+ #include <sys/time.h>
+ #include <termios.h>
+ #include <signal.h>
++extern "C" {
+ #include <libudev.h>
++}
+ #include <libgen.h>
+
+ #define FIFO_DIR "/tmp/ksocket-global"
diff --git a/redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location.patch b/redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location.patch
new file mode 100644
index 000000000..d0efe3ef8
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location.patch
@@ -0,0 +1,11 @@
+--- kdebase/kdm/kfrontend/genkdmconf.c.ORI 2011-11-01 21:59:14.450046357 +0100
++++ kdebase/kdm/kfrontend/genkdmconf.c 2011-11-01 21:59:34.449045801 +0100
+@@ -676,7 +676,7 @@
+ " ;;\n"
+ "esac\n"
+ "# invoke global X session script\n"
+-". /etc/X11/Xsession\n";
++". /etc/X11/xinit/Xsession\n";
+
+ static const char def_background[] =
+ "[Desktop0]\n"
diff --git a/redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location_xdm.patch b/redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location_xdm.patch
new file mode 100644
index 000000000..82b9c0d89
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-genkdmconf_Xsession_location_xdm.patch
@@ -0,0 +1,11 @@
+--- kdebase/kdm/kfrontend/genkdmconf.c.ORI 2011-11-01 21:59:14.450046357 +0100
++++ kdebase/kdm/kfrontend/genkdmconf.c 2011-11-01 21:59:34.449045801 +0100
+@@ -676,7 +676,7 @@
+ " ;;\n"
+ "esac\n"
+ "# invoke global X session script\n"
+-". /etc/X11/Xsession\n";
++". /etc/X11/xdm/Xsession\n";
+
+ static const char def_background[] =
+ "[Desktop0]\n"
diff --git a/redhat/tdebase/kdebase-3.5.13-kate_focus_fix.patch b/redhat/tdebase/kdebase-3.5.13-kate_focus_fix.patch
new file mode 100644
index 000000000..589341f29
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kate_focus_fix.patch
@@ -0,0 +1,133 @@
+--- kdebase.o/kate/app/kateconfigdialog.cpp.orig 2012-04-01 18:22:50.732901887 +0200
++++ kdebase/kate/app/kateconfigdialog.cpp 2012-04-01 18:25:01.100327408 +0200
+@@ -138,6 +138,16 @@
+ TQWhatsThis::add( sb_numRecentFiles, youwouldnotbelieveit );
+ connect( sb_numRecentFiles, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( slotChanged() ) );
+
++ // Use only one instance of kate (MDI) ?
++ cb_useInstance = new TQCheckBox(bgStartup);
++ cb_useInstance->setText(i18n("Always use the current instance of kate to open new files"));
++ cb_useInstance->setChecked(parent->useInstance);
++ TQWhatsThis::add( cb_useInstance, i18n(
++ "When checked, all files opened from outside of Kate will only use the "
++ "currently opened instance of Kate.") );
++ connect( cb_useInstance, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotChanged() ) );
++
++
+ // sync the konsole ?
+ cb_syncKonsole = new TQCheckBox(bgStartup);
+ cb_syncKonsole->setText(i18n("Sync &terminal emulator with active document"));
+@@ -161,7 +171,7 @@
+ this, TQT_SLOT( slotChanged() ) );
+
+ // GROUP with the one below: "Meta-informations"
+- bgStartup = new TQButtonGroup( 1, Qt::Horizontal, i18n("Meta-Information"), frGeneral );
++ bgStartup = new TQButtonGroup( 2, Qt::Horizontal, i18n("Meta-Information"), frGeneral );
+ lo->addWidget( bgStartup );
+
+ // save meta infos
+@@ -409,6 +419,7 @@
+ mainWindow->modNotification = cb_modNotifications->isChecked();
+
+ mainWindow->syncKonsole = cb_syncKonsole->isChecked();
++ mainWindow->useInstance = cb_useInstance->isChecked();
+
+ mainWindow->filelist->setSortType(cb_sortFiles->isChecked() ? KateFileList::sortByName : KateFileList::sortByID);
+
+diff -urN tdebase/kate/app/kateconfigdialog.h tdebase.new/kate/app/kateconfigdialog.h
+--- tdebase/kate/app/kateconfigdialog.h 2012-01-08 18:00:01.000000000 -0600
++++ tdebase.new/kate/app/kateconfigdialog.h 2012-03-11 00:05:03.000000000 -0600
+@@ -66,6 +66,7 @@
+
+ TQCheckBox *cb_fullPath;
+ TQCheckBox *cb_syncKonsole;
++ TQCheckBox *cb_useInstance;
+ TQCheckBox *cb_sortFiles;
+ TQSpinBox *sb_numRecentFiles;
+ TQCheckBox *cb_modNotifications;
+diff -urN tdebase/kate/app/katemain.cpp tdebase.new/kate/app/katemain.cpp
+--- tdebase/kate/app/katemain.cpp 2011-12-25 00:52:38.000000000 -0600
++++ tdebase.new/kate/app/katemain.cpp 2012-03-11 00:05:03.000000000 -0600
+@@ -41,6 +41,8 @@
+ { "start <name>", I18N_NOOP("Start Kate with a given session"), 0 },
+ { "u", 0, 0 },
+ { "use", I18N_NOOP("Use a already running kate instance (if possible)"), 0 },
++ { "f", 0, 0 },
++ { "force-sdi", I18N_NOOP("Force single document mode if the MDI setting is enabled."), 0 },
+ { "p", 0, 0 },
+ { "pid <pid>", I18N_NOOP("Only try to reuse kate instance with this pid"), 0 },
+ { "e", 0, 0 },
+@@ -57,9 +59,13 @@
+
+ extern "C" KDE_EXPORT int kdemain( int argc, char **argv )
+ {
++ KConfig * config = NULL;
++ bool alwaysUseInstance;
+ // here we go, construct the Kate version
+ TQString kateVersion = KateApp::kateVersion();
+
++ KInstance instance( "kate" );
++
+ KAboutData aboutData ("kate", I18N_NOOP("Kate"), kateVersion.latin1(),
+ I18N_NOOP( "Kate - Advanced Text Editor" ), KAboutData::License_LGPL_V2,
+ I18N_NOOP( "(c) 2000-2005 The Kate Authors" ), 0, "http://kate.kde.org");
+@@ -107,8 +113,13 @@
+ // get our command line args ;)
+ KCmdLineArgs* args = KCmdLineArgs::parsedArgs();
+
+- // now, first try to contact running kate instance if needed
+- if ( args->isSet("use") || (::getenv("KATE_PID")!=0) )
++ config = KGlobal::config();
++ config->setGroup("General");
++ alwaysUseInstance = config->readBoolEntry("UseInstance");
++
++// now, first try to contact running kate instance if needed
++ if ( ((args->isSet("use") || alwaysUseInstance) &&
++ !(args->isSet("force-sdi"))) || (::getenv("KATE_PID")!=0) )
+ {
+ DCOPClient client;
+ client.attach ();
+diff -urN tdebase/kate/app/katemainwindow.cpp tdebase.new/kate/app/katemainwindow.cpp
+--- tdebase/kate/app/katemainwindow.cpp 2012-01-08 18:00:01.000000000 -0600
++++ tdebase.new/kate/app/katemainwindow.cpp 2012-03-11 01:18:48.000000000 -0600
+@@ -406,6 +406,7 @@
+
+ config->setGroup("General");
+ syncKonsole = config->readBoolEntry("Sync Konsole", true);
++ useInstance = config->readBoolEntry("UseInstance", false);
+ modNotification = config->readBoolEntry("Modified Notification", false);
+ KateDocManager::self()->setSaveMetaInfos(config->readBoolEntry("Save Meta Infos", true));
+ KateDocManager::self()->setDaysMetaInfos(config->readNumEntry("Days Meta Infos", 30));
+@@ -437,6 +438,8 @@
+
+ config->writeEntry("Sync Konsole", syncKonsole);
+
++ config->writeEntry("UseInstance", useInstance);
++
+ fileOpenRecent->saveEntries(config, "Recent Files");
+
+ fileselector->writeConfig(config, "fileselector");
+diff -urN tdebase/kate/app/katemainwindow.h tdebase.new/kate/app/katemainwindow.h
+--- tdebase/kate/app/katemainwindow.h 2011-12-25 00:52:38.000000000 -0600
++++ tdebase.new/kate/app/katemainwindow.h 2012-03-11 00:05:03.000000000 -0600
+@@ -182,6 +182,7 @@
+ Kate::ToolViewManager *m_toolViewManager;
+
+ bool syncKonsole;
++ bool useInstance;
+ bool modNotification;
+
+ DCOPObject *m_dcop;
+diff -urN tdebase/kate/app/katemain.cpp tdebase.new/kate/app/katemain.cpp
+--- tdebase/kate/app/katemain.cpp 2011-12-25 00:52:38.000000000 -0600
++++ tdebase.new/kate/app/katemain.cpp 2012-03-11 13:32:05.000000000 -0500
+@@ -231,7 +231,9 @@
+ else
+ wRef.call("restore");
+ }
++ wRef.call( "hide" );
+ wRef.call( "raise" );
++ wRef.call( "show" );
+
+ // stop startup notification
+ KStartupInfo::appStarted( );
diff --git a/redhat/tdebase/kdebase-3.5.13-kate_mru.patch b/redhat/tdebase/kdebase-3.5.13-kate_mru.patch
new file mode 100644
index 000000000..232835f9e
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kate_mru.patch
@@ -0,0 +1,71 @@
+diff -urN /dev/shm/kdebase/kate/app/kateconfigdialog.cpp /dev/shm/kdebase.new/kate/app/kateconfigdialog.cpp
+--- /dev/shm/kdebase/kate/app/kateconfigdialog.cpp 2011-07-09 01:16:52.000000000 -0500
++++ /dev/shm/kdebase.new/kate/app/kateconfigdialog.cpp 2011-11-29 11:06:22.000000000 -0600
+@@ -112,11 +112,32 @@
+ TQWhatsThis::add(cb_fullPath,i18n("If this option is checked, the full document path will be shown in the window caption."));
+ connect( cb_fullPath, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotChanged() ) );
+
++ // sort filelist ? ### remove
++ cb_sortFiles = new TQCheckBox(bgStartup);
++ cb_sortFiles->setText(i18n("Sort &files alphabetically in the file list"));
++ cb_sortFiles->setChecked(parent->filelist->sortType() == KateFileList::sortByName);
++ TQWhatsThis::add( cb_sortFiles, i18n(
++ "If this is checked, the files in the file list will be sorted alphabetically.") );
++ connect( cb_sortFiles, TQT_SIGNAL( toggled( bool ) ), this, TQT_SLOT( slotChanged() ) );
+
+ // GROUP with the one below: "Behavior"
+ bgStartup = new TQButtonGroup( 1, Qt::Horizontal, i18n("&Behavior"), frGeneral );
+ lo->addWidget( bgStartup );
+
++ // number of recent files
++ TQHBox *hbNrf = new TQHBox( bgStartup );
++ TQLabel *lNrf = new TQLabel( i18n("&Number of recent files:"), hbNrf );
++ sb_numRecentFiles = new TQSpinBox( 0, 1000, 1, hbNrf );
++ sb_numRecentFiles->setValue( mainWindow->fileOpenRecent->maxItems() );
++ lNrf->setBuddy( sb_numRecentFiles );
++ TQString youwouldnotbelieveit ( i18n(
++ "<qt>Sets the number of recent files remembered by Kate.<p><strong>NOTE: </strong>"
++ "If you set this lower than the current value, the list will be truncated and "
++ "some items forgotten.</qt>") );
++ TQWhatsThis::add( lNrf, youwouldnotbelieveit );
++ TQWhatsThis::add( sb_numRecentFiles, youwouldnotbelieveit );
++ connect( sb_numRecentFiles, TQT_SIGNAL( valueChanged ( int ) ), this, TQT_SLOT( slotChanged() ) );
++
+ // sync the konsole ?
+ cb_syncKonsole = new TQCheckBox(bgStartup);
+ cb_syncKonsole->setText(i18n("Sync &terminal emulator with active document"));
+@@ -389,6 +403,11 @@
+
+ mainWindow->syncKonsole = cb_syncKonsole->isChecked();
+
++ mainWindow->filelist->setSortType(cb_sortFiles->isChecked() ? KateFileList::sortByName : KateFileList::sortByID);
++
++ config->writeEntry( "Number of recent files", sb_numRecentFiles->value() );
++ mainWindow->fileOpenRecent->setMaxItems( sb_numRecentFiles->value() );
++
+ fileSelConfigPage->apply();
+
+ filelistConfigPage->apply();
+diff -urN /dev/shm/kdebase/kate/app/kateconfigdialog.h /dev/shm/kdebase.new/kate/app/kateconfigdialog.h
+--- /dev/shm/kdebase/kate/app/kateconfigdialog.h 2010-08-12 17:35:39.000000000 -0500
++++ /dev/shm/kdebase.new/kate/app/kateconfigdialog.h 2011-11-29 11:09:03.000000000 -0600
+@@ -66,6 +66,8 @@
+
+ TQCheckBox *cb_fullPath;
+ TQCheckBox *cb_syncKonsole;
++ TQCheckBox *cb_sortFiles;
++ TQSpinBox *sb_numRecentFiles;
+ TQCheckBox *cb_modNotifications;
+ TQCheckBox *cb_saveMetaInfos;
+ TQSpinBox *sb_daysMetaInfos;
+diff -urN /dev/shm/kdebase/kate/app/katemainwindow.cpp /dev/shm/kdebase.new/kate/app/katemainwindow.cpp
+--- /dev/shm/kdebase/kate/app/katemainwindow.cpp 2011-07-09 01:16:52.000000000 -0500
++++ /dev/shm/kdebase.new/kate/app/katemainwindow.cpp 2011-11-29 11:10:05.000000000 -0600
+@@ -412,6 +412,7 @@
+
+ m_viewManager->setShowFullPath(config->readBoolEntry("Show Full Path in Title", false));
+
++ fileOpenRecent->setMaxItems( config->readNumEntry("Number of recent files", fileOpenRecent->maxItems() ) );
+ fileOpenRecent->loadEntries(config, "Recent Files");
+
+ fileselector->readConfig(config, "fileselector");
diff --git a/redhat/tdebase/kdebase-3.5.13-kdesu-noignorebutton.patch b/redhat/tdebase/kdebase-3.5.13-kdesu-noignorebutton.patch
new file mode 100644
index 000000000..f941cc20a
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kdesu-noignorebutton.patch
@@ -0,0 +1,45 @@
+diff -rcb kdebase.ORI/kdesu/kdesu/sudlg.cpp kdebase/kdesu/kdesu/sudlg.cpp
+*** kdebase.ORI/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:07.725798945 +0100
+--- kdebase/kdesu/kdesu/sudlg.cpp 2010-12-17 22:55:49.378797283 +0100
+***************
+*** 15,21 ****
+ #include "sudlg.h"
+
+ KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
+! : KPasswordDialog(Password, enableKeep, (withIgnoreButton ? User1:NoDefault), icon)
+ {
+ KConfig* config = KGlobal::config();
+ config->setGroup("super-user-command");
+--- 15,21 ----
+ #include "sudlg.h"
+
+ KDEsuDialog::KDEsuDialog(TQCString user, TQCString auth_user, bool enableKeep,const TQString& icon, bool withIgnoreButton)
+! : KPasswordDialog(Password, enableKeep, 0, icon)
+ {
+ KConfig* config = KGlobal::config();
+ config->setGroup("super-user-command");
+***************
+*** 34,45 ****
+ } else {
+ if (m_User == "root") {
+ prompt = i18n("The action you requested needs root privileges. "
+! "Please enter root's password below or click "
+! "Ignore to continue with your current privileges.");
+ } else {
+ prompt = i18n("The action you requested needs additional privileges. "
+! "Please enter the password for \"%1\" below or click "
+! "Ignore to continue with your current privileges.").arg(static_cast<const char *>(m_User));
+ }
+ }
+ setPrompt(prompt);
+--- 34,43 ----
+ } else {
+ if (m_User == "root") {
+ prompt = i18n("The action you requested needs root privileges. "
+! "Please enter root's password below.");
+ } else {
+ prompt = i18n("The action you requested needs additional privileges. "
+! "Please enter the password for \"%1\" below.").arg(static_cast<const char *>(m_User));
+ }
+ }
+ setPrompt(prompt);
diff --git a/redhat/tdebase/kdebase-3.5.13-kdesu_showkeeppassword.patch b/redhat/tdebase/kdebase-3.5.13-kdesu_showkeeppassword.patch
new file mode 100644
index 000000000..565e1790d
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kdesu_showkeeppassword.patch
@@ -0,0 +1,11 @@
+--- kdebase/kdesu/kdesu/kdesu.cpp.orig 2011-10-26 21:06:48.000000000 +0200
++++ kdebase/kdesu/kdesu/kdesu.cpp 2012-01-01 16:54:11.468303046 +0100
+@@ -274,7 +274,7 @@
+
+ // Try to exec the command with kdesud.
+ bool keep = !args->isSet("n") && have_daemon;
+- bool terminal = true;
++ bool terminal = args->isSet("t");
+ bool new_dcop = args->isSet("newdcop");
+ bool withIgnoreButton = args->isSet("ignorebutton");
+
diff --git a/redhat/tdebase/kdebase-3.5.13-kdm-crypt.patch b/redhat/tdebase/kdebase-3.5.13-kdm-crypt.patch
new file mode 100644
index 000000000..772d95f0e
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kdm-crypt.patch
@@ -0,0 +1,43 @@
+diff -u -r kdebase.orig/config.h.cmake kdebase/config.h.cmake
+--- kdebase.orig/config.h.cmake 2011-10-30 00:02:15.000000000 +0300
++++ kdebase/config.h.cmake 2011-11-19 00:59:26.088061733 +0200
+@@ -114,6 +114,7 @@
+ #cmakedefine HAVE_SYSINFO 1
+ #cmakedefine HAVE_STRNLEN 1
+ #cmakedefine HAVE_GETIFADDRS 1
++#cmakedefine HAVE_CRYPT 1
+
+ #cmakedefine HAVE_SETUSERCONTEXT 1
+ #cmakedefine HAVE_GETUSERSHELL 1
+diff -u -r kdebase.orig/kdm/backend/CMakeLists.txt kdebase/kdm/backend/CMakeLists.txt
+--- kdebase.orig/kdm/backend/CMakeLists.txt 2011-09-03 22:32:00.000000000 +0300
++++ kdebase/kdm/backend/CMakeLists.txt 2011-11-19 01:05:03.820839491 +0200
+@@ -43,6 +43,6 @@
+ process.c protodpy.c reset.c resource.c rpcauth.c
+ server.c session.c sessreg.c socket.c streams.c
+ util.c xdmauth.c xdmcp.c
+- LINK X11 ${XAU_LIBRARIES} ${DBUS_TQT_LIBRARIES} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
++ LINK X11 ${XAU_LIBRARIES} ${DBUS_TQT_LIBRARIES} ${CRYPT_LIBRARY} ${PAM_LIBRARY} ${XDMCP_LIBRARIES}
+ DESTINATION ${BIN_INSTALL_DIR}
+ )
+diff -u -r kdebase.orig/kdm/ConfigureChecks.cmake kdebase/kdm/ConfigureChecks.cmake
+--- kdebase.orig/kdm/ConfigureChecks.cmake 2011-03-16 22:49:38.000000000 +0200
++++ kdebase/kdm/ConfigureChecks.cmake 2011-11-19 01:05:40.426381860 +0200
+@@ -27,6 +27,16 @@
+ check_function_exists( auth_timeok HAVE_AUTH_TIMEOK )
+ tde_restore( CMAKE_REQUIRED_LIBRARIES )
+
++check_function_exists( crypt LIBC_HAVE_CRYPT )
++if( LIBC_HAVE_CRYPT )
++ set( HAVE_CRYPT 1 CACHE INTERNAL "" FORCE )
++else( )
++ check_library_exists( crypt crypt "" HAVE_CRYPT )
++ if( HAVE_CRYPT )
++ set( CRYPT_LIBRARY crypt )
++ endif( )
++endif( )
++
+ check_include_file( lastlog.h HAVE_LASTLOG_H )
+ check_include_file( termio.h HAVE_TERMIO_H )
+
+
diff --git a/redhat/tdebase/kdebase-3.5.13-kicker-easyvector.patch b/redhat/tdebase/kdebase-3.5.13-kicker-easyvector.patch
new file mode 100644
index 000000000..b90f83a41
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kicker-easyvector.patch
@@ -0,0 +1,29 @@
+--- kicker/applets/launcher/easyvector.h
++++ kicker/applets/launcher/easyvector.h 2012-04-05 17:33:50.320708865 -0500
+@@ -87,7 +87,7 @@
+ template < class VALUE, bool CHECKINDEX >
+ void EasyVector< VALUE, CHECKINDEX >::eraseAt(Index index)
+ { _checkIndex(index);
+- erase(this->begin()+index);
++ this->erase(this->begin()+index);
+ }
+
+
+@@ -108,7 +108,7 @@
+ this->push_back(value);
+ return;
+ }
+- insert(this->begin()+index,value);
++ this->insert(this->begin()+index,value);
+ }
+
+
+@@ -116,7 +116,7 @@
+ void EasyVector< VALUE, CHECKINDEX >::insertAt(EasyVector< VALUE, CHECKINDEX >::Index index,const EasyVector< VALUE, CHECKINDEX > &v)
+ { index=_convertInsertIndex(index);
+ _checkInsertIndex(index);
+- insert(this->begin()+index,v.begin(),v.end());
++ this->insert(this->begin()+index,v.begin(),v.end());
+ }
+
+
diff --git a/redhat/tdebase/kdebase-3.5.13-kickoff_unstable.patch b/redhat/tdebase/kdebase-3.5.13-kickoff_unstable.patch
new file mode 100644
index 000000000..00a0d4b64
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kickoff_unstable.patch
@@ -0,0 +1,442 @@
+diff -ur kdebase/kicker/kicker/buttons/knewbutton.cpp kdebase1/kicker/kicker/buttons/knewbutton.cpp
+--- kdebase/kicker/kicker/buttons/knewbutton.cpp 2011-08-11 01:25:50.000000000 -0400
++++ kdebase1/kicker/kicker/buttons/knewbutton.cpp 2011-11-18 12:54:22.380404540 -0500
+@@ -55,26 +55,28 @@
+ : KButton( parent ),
+ m_oldPos(0,0)
+ {
++
++ setTitle(i18n("K Menu"));
+ Q_ASSERT( !m_self );
+ m_self = this;
+- m_hoverTimer = -1;
+ m_openTimer = -1;
+- m_active = false;
++ m_hoverTimer = -1;
+ m_mouseInside = false;
+ m_drag = false;
+-
+- setIconAlignment((TQ_Alignment)(AlignTop|AlignRight));
+- setAcceptDrops(true);
+- setIcon("kmenu-suse");
+- setDrawArrow(false);
+-
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
+- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
+- m_movie->connectStatus(TQT_TQOBJECT(this), TQT_SLOT(slotStatus(int)));
+- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
+-
++
++ setIcon("kmenu");
++ setIcon(KickerSettings::customKMenuIcon());
++
+ TQApplication::desktop()->screen()->installEventFilter(this);
+- setMouseTracking(true);
++
++ if (KickerSettings::showKMenuText())
++ {
++ setButtonText(KickerSettings::kMenuText());
++ setFont(KickerSettings::buttonFont());
++ setTextColor(KickerSettings::buttonTextColor());
++ }
++
++ tqrepaint();
+ }
+
+ KNewButton::~KNewButton()
+@@ -82,28 +84,15 @@
+ if ( m_self == this )
+ m_self = 0;
+ setMouseTracking(false);
+- delete m_movie;
+ }
+
+-void KNewButton::slotStatus(int status)
+-{
+- if(status == TQMovie::EndOfLoop)
+- slotStopAnimation();
+-}
+
+-TQColor KNewButton::borderColor() const
++void KNewButton::drawButton(TQPainter *p)
+ {
+- TQImage img = m_active_pixmap.convertToImage();
+-
+- for (int i = 0; i < img.width(); ++i) {
+- QRgb rgb = img.pixel(orientation() == Qt::Horizontal ? img.width() - i - 1 :
+- i, 2);
+-
+- if (tqGreen(rgb) > 0x50)
+- return rgb;
+- }
+-
+- return img.pixel( orientation() == Qt::Horizontal ? img.width() - 2 : 2, 2);
++ if (KickerSettings::showDeepButtons())
++ PanelPopupButton::drawDeepButton(p);
++ else
++ PanelPopupButton::drawButton(p);
+ }
+
+ void KNewButton::show()
+@@ -111,103 +100,12 @@
+ KButton::show();
+
+ if (KickerSettings::firstRun()) {
+- TQTimer::singleShot(500,this,TQT_SLOT(slotExecMenu()));
++ TQTimer::singleShot(0,this,TQT_SLOT(slotExecMenu()));
+ KickerSettings::setFirstRun(false);
+ KickerSettings::writeConfig();
+ }
+ }
+
+-void KNewButton::updateMovie()
+-{
+- m_oldPos = TQPoint( -1, -1 );
+- drawEye();
+-
+- if (!m_active && m_movie->running())
+- m_movie->pause();
+-}
+-
+-void KNewButton::setPopupDirection(KPanelApplet::Direction d)
+-{
+- KButton::setPopupDirection(d);
+-
+- delete m_movie;
+-
+- switch (d) {
+- case KPanelApplet::Left:
+- setIconAlignment((TQ_Alignment)(AlignTop|AlignLeft));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
+- break;
+- case KPanelApplet::Right:
+- setIconAlignment((TQ_Alignment)(AlignTop|AlignRight));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_vertical.mng"));
+- break;
+- case KPanelApplet::Up:
+- setIconAlignment((TQ_Alignment)(AlignTop|AlignHCenter));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_basic.mng"));
+- break;
+- case KPanelApplet::Down:
+- setIconAlignment((TQ_Alignment)(AlignBottom|AlignHCenter));
+- m_movie = new TQMovie(locate("data", "kicker/pics/kmenu_flipped.mng"));
+- }
+-
+- m_movie->connectUpdate(this, TQT_SLOT(updateMovie()));
+- m_movie->connectStatus(TQT_TQOBJECT(this), TQT_SLOT(slotStatus(int)));
+- m_movie->connectResize(this, TQT_SLOT(slotSetSize(const TQSize&)));
+-}
+-
+-void KNewButton::slotSetSize(const TQSize& s)
+-{
+- m_iconSize = s;
+-}
+-
+-double KNewButton::buttonScaleFactor(const TQSize& s) const
+-{
+- double sf = 1.0;
+-
+- switch (popupDirection()) {
+- case KPanelApplet::Left:
+- case KPanelApplet::Right:
+-// sf = kMin(double(s.width()) / m_iconSize.height(), double(s.height()) / m_iconSize.width());
+-// break;
+- case KPanelApplet::Up:
+- case KPanelApplet::Down:
+- sf = kMin(double(s.width()) / m_iconSize.width(), double(s.height()) / m_iconSize.height());
+- break;
+- }
+-
+- if (sf > 0.8) sf = 1.0;
+- return sf;
+-}
+-
+-int KNewButton::widthForHeight(int height) const
+-{
+- int r = m_iconSize.width() * buttonScaleFactor(TQSize(m_iconSize.width(), height));
+-
+- if (!m_movie->running() && height != m_active_pixmap.height())
+- {
+- KNewButton* that = const_cast<KNewButton*>(this);
+- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
+- }
+-
+- return r;
+-}
+-
+-int KNewButton::preferredDimension(int panelDim) const
+-{
+- return kMax(m_icon.width(), m_icon.height());
+-}
+-
+-int KNewButton::heightForWidth(int width) const
+-{
+- int r = m_iconSize.width() * buttonScaleFactor(TQSize(width, m_iconSize.height()));
+- if (!m_movie->running() && width != m_active_pixmap.width())
+- {
+- KNewButton* that = const_cast<KNewButton*>(this);
+- TQTimer::singleShot(0, that, TQT_SLOT(slotStopAnimation()));
+- }
+- return r;
+-}
+-
+ bool KNewButton::eventFilter(TQObject *o, TQEvent *e)
+ {
+ if (e->type() == TQEvent::MouseButtonRelease ||
+@@ -223,75 +121,9 @@
+ }
+ }
+
+- if (KickerSettings::kickoffDrawGeekoEye() && e->type() == TQEvent::MouseMove)
+- {
+- TQMouseEvent *me = TQT_TQMOUSEEVENT(e);
+- if ((me->state() & Qt::MouseButtonMask) == Qt::NoButton)
+- drawEye();
+- }
+-
+ return KButton::eventFilter(o, e);
+ }
+
+-void KNewButton::drawEye()
+-{
+-#define eye_x 62
+-#define eye_y 13
+- TQPoint mouse = TQCursor::pos();
+- TQPoint me = mapToGlobal(TQPoint(eye_x, eye_y));
+- double a = atan2(mouse.y() - me.y(), mouse.x() - me.x());
+- int dx = int(2.1 * cos(a));
+- int dy = int(2.1 * sin(a));
+-
+- TQPoint newpos(eye_x+dx,eye_y+dy);
+- if (newpos!=m_oldPos) {
+- m_oldPos = newpos;
+- TQPixmap pixmap = m_active_pixmap;
+-
+- double sf = 1.0;
+-
+- if(!m_movie->framePixmap().isNull())
+- {
+- pixmap = m_movie->framePixmap();
+- pixmap.detach();
+- m_iconSize = pixmap.size();
+- sf = buttonScaleFactor(size());
+-
+- if (KickerSettings::kickoffDrawGeekoEye()) {
+- TQPainter p(&pixmap);
+- p.setPen(white);
+- p.setBrush(white);
+- // p.setPen(TQColor(110,185,55));
+- p.drawRect(eye_x+dx, eye_y+dy, 2, 2);
+- p. end();
+- }
+- }
+-
+- TQWMatrix matrix;
+- switch (popupDirection()) {
+- case KPanelApplet::Left:
+- matrix.scale(sf, -sf);
+- matrix.rotate(90);
+- break;
+- case KPanelApplet::Up:
+- matrix.scale(sf, sf);
+- break;
+- case KPanelApplet::Right:
+- matrix.scale(sf, -sf);
+- matrix.rotate(90);
+- break;
+- case KPanelApplet::Down:
+- matrix.scale(sf, sf);
+- break;
+- }
+- m_active_pixmap = pixmap.xForm(matrix);
+-
+- tqrepaint(false);
+- }
+-#undef eye_x
+-#undef eye_y
+-}
+-
+ void KNewButton::enterEvent(TQEvent* e)
+ {
+ KButton::enterEvent(e);
+@@ -315,15 +147,8 @@
+ }
+
+ m_active = true;
+- m_movie->unpause();
+- m_movie->restart();
+ }
+
+-void KNewButton::rewindMovie()
+-{
+- m_oldPos = TQPoint( -1, -1 );
+- m_movie->unpause();
+-}
+
+ void KNewButton::dragEnterEvent(TQDragEnterEvent* /*e*/)
+ {
+@@ -369,31 +194,12 @@
+ }
+ }
+
+-void KNewButton::slotStopAnimation()
+-{
+- m_active = false;
+- m_movie->pause();
+- m_movie->restart();
+- TQTimer::singleShot(200, this, TQT_SLOT(rewindMovie()));
+-}
+-
+-const TQPixmap& KNewButton::labelIcon() const
+-{
+- return m_active_pixmap;
+-}
+-
+ void KNewButton::slotExecMenu()
+ {
+- if (m_openTimer != -1)
+- killTimer(m_openTimer);
+-
+- m_openTimer = startTimer(TQApplication::doubleClickInterval() * 3);
+
+ if (m_active)
+ {
+ m_active = false;
+- m_movie->pause();
+- m_movie->restart();
+ }
+
+ KButton::slotExecMenu();
+@@ -401,40 +207,12 @@
+ assert(!KickerTip::tippingEnabled());
+ assert(dynamic_cast<KMenu*>(m_popup));
+
+- disconnect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()), this,
+- TQT_SLOT(slotStopAnimation()));
+- connect(dynamic_cast<KMenu*>(m_popup), TQT_SIGNAL(aboutToHide()),
+- TQT_SLOT(slotStopAnimation()));
+-
+ m_popup->move(KickerLib::popupPosition(popupDirection(), m_popup, this));
+ // I wish KMenu would properly done itself when it closes. But it doesn't.
+
+- bool useEffect = true; // could be TQApplication::isEffectEnabled()
+- useEffect = false; // too many TQt bugs to be useful
+- if (m_drag)
+- useEffect = false;
+-
+ m_drag = false; // once is enough
+
+- if (useEffect)
+- {
+- switch (popupDirection()) {
+- case KPanelApplet::Left:
+- qScrollEffect(m_popup, TQEffects::LeftScroll);
+- break;
+- case KPanelApplet::Up:
+- qScrollEffect(m_popup, TQEffects::UpScroll);
+- break;
+- case KPanelApplet::Right:
+- qScrollEffect(m_popup, TQEffects::RightScroll);
+- break;
+- case KPanelApplet::Down:
+- qScrollEffect(m_popup, TQEffects::DownScroll);
+- break;
+- }
+- }
+- else
+- static_cast<KMenu*>(m_popup)->show();
++ static_cast<KMenu*>(m_popup)->show();
+ }
+
+ void KNewButton::timerEvent(TQTimerEvent* e)
+@@ -447,9 +225,4 @@
+ killTimer(m_hoverTimer);
+ m_hoverTimer = -1;
+ }
+- if (e->timerId() == m_openTimer)
+- {
+- killTimer(m_openTimer);
+- m_openTimer = -1;
+- }
+ }
+diff -ur kdebase/kicker/kicker/buttons/knewbutton.h kdebase1/kicker/kicker/buttons/knewbutton.h
+--- kdebase/kicker/kicker/buttons/knewbutton.h 2011-03-12 01:58:13.000000000 -0500
++++ kdebase1/kicker/kicker/buttons/knewbutton.h 2011-11-18 09:31:03.163665964 -0500
+@@ -28,7 +28,6 @@
+
+ #include "kbutton.h"
+
+-#include <tqmovie.h>
+ #include <tqpoint.h>
+
+ /**
+@@ -43,25 +42,10 @@
+ ~KNewButton();
+
+ static KNewButton *self() { return m_self; }
+-
+ void loadConfig( const KConfigGroup& config );
+-
+- virtual const TQPixmap& labelIcon() const;
+-
+- virtual int widthForHeight(int height) const;
+- virtual int preferredDimension(int panelDim) const;
+- virtual int heightForWidth(int width) const;
+-
+ TQColor borderColor() const;
++ //virtual void setPopupDirection(KPanelApplet::Direction d);
+
+- virtual void setPopupDirection(KPanelApplet::Direction d);
+-
+-private slots:
+- void slotStatus(int);
+- void slotSetSize(const TQSize&);
+- void slotStopAnimation();
+- void rewindMovie();
+- void updateMovie();
+
+ protected:
+ virtual void show();
+@@ -78,17 +62,15 @@
+ void timerEvent(TQTimerEvent*);
+
+ private:
+- void drawEye();
+- double buttonScaleFactor(const TQSize& s) const;
+
+- TQMovie* m_movie;
++ void drawButton(TQPainter *p);
+ TQPixmap m_active_pixmap;
+ TQPoint m_oldPos;
+ TQSize m_iconSize;
+ TQRect m_sloppyRegion;
+- int m_hoverTimer;
+ int m_openTimer;
+- bool m_active;
++ int m_hoverTimer;
++ bool m_active;
+ bool m_mouseInside;
+ bool m_drag;
+
+diff -ur kdebase/kicker/kicker/ui/k_new_mnu.cpp kdebase1/kicker/kicker/ui/k_new_mnu.cpp
+--- kdebase/kicker/kicker/ui/k_new_mnu.cpp 2011-08-11 01:25:49.000000000 -0400
++++ kdebase1/kicker/kicker/ui/k_new_mnu.cpp 2011-11-18 15:02:51.565689119 -0500
+@@ -1700,8 +1700,6 @@
+ TQPixmap pix( 64, footer->height() );
+ TQPainter p( &pix );
+ p.fillRect( 0, 0, 64, footer->height(), m_branding->tqcolorGroup().brush( TQColorGroup::Base ) );
+- p.fillRect( 0, m_orientation == BottomUp ? footer->height() - 2 : 0,
+- 64, 3, KNewButton::self()->borderColor() );
+ p.end();
+ footer->setPaletteBackgroundPixmap( pix );
+ }
+@@ -3500,7 +3498,8 @@
+ }
+ m_systemView->insertItem( iconName, userLabel.isEmpty() ? label : userLabel,
+ descr, "system:/media/" + name, nId++, -1 );
+-
++ ++it;
++ ++it;
+ ++it; // skip separator
+ }
+ }
diff --git a/redhat/tdebase/kdebase-3.5.13-kio_man_utf8.patch b/redhat/tdebase/kdebase-3.5.13-kio_man_utf8.patch
new file mode 100644
index 000000000..dfe65563a
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kio_man_utf8.patch
@@ -0,0 +1,40 @@
+--- kdebase/kioslave/man/kio_man.cpp.ORI 2011-12-03 00:22:28.400423296 +0100
++++ kdebase/kioslave/man/kio_man.cpp 2011-12-03 00:25:59.127173102 +0100
+@@ -569,20 +569,24 @@
+ }
+ lastdir = filename.left(filename.findRev('/'));
+
+- myStdStream = TQString::null;
+- KProcess proc;
+- /* TODO: detect availability of 'man --recode' so that this can go
+- * upstream */
+- proc << "man" << "--recode" << "UTF-8" << filename;
+-
+- TQApplication::connect(&proc, TQT_SIGNAL(receivedStdout (KProcess *, char *, int)),
+- this, TQT_SLOT(slotGetStdOutputUtf8(KProcess *, char *, int)));
+- proc.start(KProcess::Block, KProcess::All);
+-
+- const TQCString cstr=myStdStream.utf8();
+- const int len = cstr.size()-1;
++ TQIODevice *fd= KFilterDev::deviceForFile(filename);
++
++ if ( !fd || !fd->open(IO_ReadOnly))
++ {
++ delete fd;
++ return 0;
++ }
++ TQByteArray array(fd->readAll());
++ kdDebug(7107) << "read " << array.size() << endl;
++ fd->close();
++ delete fd;
++
++ if (array.isEmpty())
++ return 0;
++
++ const int len = array.size();
+ buf = new char[len + 4];
+- tqmemmove(buf + 1, cstr.data(), len);
++ tqmemmove(buf + 1, array.data(), len);
+ buf[0]=buf[len]='\n'; // Start and end with a end of line
+ buf[len+1]=buf[len+2]='\0'; // Two NUL characters at end
+ }
diff --git a/redhat/tdebase/kdebase-3.5.13-konq_icon_effect.patch b/redhat/tdebase/kdebase-3.5.13-konq_icon_effect.patch
new file mode 100644
index 000000000..3ac7144e2
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-konq_icon_effect.patch
@@ -0,0 +1,19 @@
+diff -urN /dev/shm/kdebase/konqueror/listview/konq_listviewwidget.cc /dev/shm/kdebase.new/konqueror/listview/konq_listviewwidget.cc
+--- /dev/shm/kdebase/konqueror/listview/konq_listviewwidget.cc 2011-08-11 00:25:51.000000000 -0500
++++ /dev/shm/kdebase.new/konqueror/listview/konq_listviewwidget.cc 2011-12-03 20:55:00.000000000 -0600
+@@ -1009,10 +1009,11 @@
+ // gather pixmap
+ TQPixmap *pix = new TQPixmap(*(_item->pixmap(0)));
+
+- // call the icon effect
+- KIconEffect::visualActivate(viewport(), rect, pix);
+-
+- delete(pix);
++ // call the icon effect if enabled
++ if (KGlobalSettings::showKonqIconActivationEffect() == true) {
++ KIconEffect::visualActivate(viewport(), rect, pix);
++ delete(pix);
++ }
+ }
+ }
+ else
diff --git a/redhat/tdebase/kdebase-3.5.13-konq_menu_tab_background.patch b/redhat/tdebase/kdebase-3.5.13-konq_menu_tab_background.patch
new file mode 100644
index 000000000..483b259c1
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-konq_menu_tab_background.patch
@@ -0,0 +1,160 @@
+diff -urN /dev/shm/kdebase/kcontrol/konqhtml/advancedTabDialog.cpp /dev/shm/kdebase.new/kcontrol/konqhtml/advancedTabDialog.cpp
+--- kdebase/kcontrol/konqhtml/advancedTabDialog.cpp 2011-03-12 00:57:45.000000000 -0600
++++ kdebase.new/kcontrol/konqhtml/advancedTabDialog.cpp 2011-12-03 17:25:40.297586593 -0600
+@@ -58,7 +58,6 @@
+ layout->addSpacing( 20 );
+ layout->addStretch();
+
+- connect(m_advancedWidget->m_pNewTabsInBackground, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+ connect(m_advancedWidget->m_pOpenAfterCurrentPage, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+ connect(m_advancedWidget->m_pTabConfirm, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+ connect(m_advancedWidget->m_pTabCloseActivatePrevious, TQT_SIGNAL(clicked()), this, TQT_SLOT(changed()));
+@@ -76,7 +75,6 @@
+ void advancedTabDialog::load()
+ {
+ m_pConfig->setGroup("FMSettings");
+- m_advancedWidget->m_pNewTabsInBackground->setChecked( ! (m_pConfig->readBoolEntry( "NewTabsInFront", false )) );
+ m_advancedWidget->m_pOpenAfterCurrentPage->setChecked( m_pConfig->readBoolEntry( "OpenAfterCurrentPage", false ) );
+ m_advancedWidget->m_pPermanentCloseButton->setChecked( m_pConfig->readBoolEntry( "PermanentCloseButton", false ) );
+ m_advancedWidget->m_pKonquerorTabforExternalURL->setChecked( m_pConfig->readBoolEntry( "KonquerorTabforExternalURL", false ) );
+@@ -92,7 +90,6 @@
+ void advancedTabDialog::save()
+ {
+ m_pConfig->setGroup("FMSettings");
+- m_pConfig->writeEntry( "NewTabsInFront", !(m_advancedWidget->m_pNewTabsInBackground->isChecked()) );
+ m_pConfig->writeEntry( "OpenAfterCurrentPage", m_advancedWidget->m_pOpenAfterCurrentPage->isChecked() );
+ m_pConfig->writeEntry( "PermanentCloseButton", m_advancedWidget->m_pPermanentCloseButton->isChecked() );
+ m_pConfig->writeEntry( "KonquerorTabforExternalURL", m_advancedWidget->m_pKonquerorTabforExternalURL->isChecked() );
+diff -urN /dev/shm/kdebase/kcontrol/konqhtml/advancedTabOptions.ui /dev/shm/kdebase.new/kcontrol/konqhtml/advancedTabOptions.ui
+--- kdebase/kcontrol/konqhtml/advancedTabOptions.ui 2011-03-12 00:57:45.000000000 -0600
++++ kdebase.new/kcontrol/konqhtml/advancedTabOptions.ui 2011-12-03 17:24:25.987334444 -0600
+@@ -51,17 +51,6 @@
+ </property>
+ <widget class="TQCheckBox">
+ <property name="name">
+- <cstring>m_pNewTabsInBackground</cstring>
+- </property>
+- <property name="text">
+- <string>O&amp;pen new tabs in the background</string>
+- </property>
+- <property name="whatsThis" stdset="0">
+- <string>This will open a new tab in the background, instead of in the foreground.</string>
+- </property>
+- </widget>
+- <widget class="TQCheckBox">
+- <property name="name">
+ <cstring>m_pOpenAfterCurrentPage</cstring>
+ </property>
+ <property name="text">
+diff -urN /dev/shm/kdebase/konqueror/konq_guiclients.cc /dev/shm/kdebase.new/konqueror/konq_guiclients.cc
+--- kdebase/konqueror/konq_guiclients.cc 2011-08-11 00:25:53.000000000 -0500
++++ kdebase.new/konqueror/konq_guiclients.cc 2011-12-03 17:24:25.987334444 -0600
+@@ -104,8 +104,8 @@
+ openInSameWindow.setAttribute( "name", "sameview" );
+ openInSameWindow.setAttribute( "group", "tabhandling" );
+ menu.appendChild( openInSameWindow );
+-
+- TQDomElement openInWindow = m_doc.createElement( "action" );
++
++ TQDomElement openInWindow = m_doc.createElement( "action" );
+ openInWindow.setAttribute( "name", "newview" );
+ openInWindow.setAttribute( "group", "tabhandling" );
+ menu.appendChild( openInWindow );
+@@ -115,6 +115,11 @@
+ openInTabElement.setAttribute( "group", "tabhandling" );
+ menu.appendChild( openInTabElement );
+
++ TQDomElement openInTabFrontElement = m_doc.createElement( "action" );
++ openInTabFrontElement.setAttribute( "name", "openintabfront" );
++ openInTabFrontElement.setAttribute( "group", "tabhandling" );
++ menu.appendChild( openInTabFrontElement );
++
+ TQDomElement separatorElement = m_doc.createElement( "separator" );
+ separatorElement.setAttribute( "group", "tabhandling" );
+ menu.appendChild( separatorElement );
+diff -urN /dev/shm/kdebase/konqueror/konq_mainwindow.cc /dev/shm/kdebase.new/konqueror/konq_mainwindow.cc
+--- kdebase/konqueror/konq_mainwindow.cc 2011-08-20 02:14:06.000000000 -0500
++++ kdebase.new/konqueror/konq_mainwindow.cc 2011-12-03 17:24:25.994334609 -0600
+@@ -2726,15 +2726,23 @@
+ openURL( 0L, popupItems.getFirst()->url() );
+ }
+
++void KonqMainWindow::slotPopupNewTabAtFront()
++{
++ KConfig *config = KGlobal::config();
++ KConfigGroupSaver cs( config, TQString::fromLatin1("FMSettings") );
++ bool openAfterCurrentPage = config->readBoolEntry( "OpenAfterCurrentPage", false );
++ popupNewTab(true, openAfterCurrentPage);
++}
++
+ void KonqMainWindow::slotPopupNewTab()
+ {
+ bool openAfterCurrentPage = KonqSettings::openAfterCurrentPage();
+ bool newTabsInFront = KonqSettings::newTabsInFront();
+
+- if (KApplication::keyboardMouseState() & TQt::ShiftButton)
++ if (KApplication::keyboardMouseState() & ShiftButton)
+ newTabsInFront = !newTabsInFront;
+
+- popupNewTab(newTabsInFront, openAfterCurrentPage);
++ popupNewTab(false, openAfterCurrentPage);
+ }
+
+ void KonqMainWindow::slotPopupNewTabRight()
+@@ -2754,17 +2762,13 @@
+ KFileItemListIterator it ( popupItems );
+ KonqOpenURLRequest req;
+ req.newTab = true;
+- req.newTabInFront = false;
++ req.newTabInFront = infront;
+ req.openAfterCurrentPage = openAfterCurrentPage;
+ req.args = popupUrlArgs;
+
+ for ( ; it.current(); ++it )
+ {
+- if ( infront && it.atLast() )
+- {
+- req.newTabInFront = true;
+- }
+- openURL( 0L, (*it)->url(), TQString::null, req );
++ openURL( 0L, (*it)->url(), QString::null, req );
+ }
+ }
+
+@@ -3926,7 +3930,7 @@
+ reloadShortcut.append(KKey(CTRL + Key_R));
+ m_paReload = new KAction( i18n( "&Reload" ), "reload", reloadShortcut, TQT_TQOBJECT(this), TQT_SLOT( slotReload() ), actionCollection(), "reload" );
+ m_paReloadAllTabs = new KAction( i18n( "&Reload All Tabs" ), "reload_all_tabs", SHIFT+Key_F5, TQT_TQOBJECT(this), TQT_SLOT( slotReloadAllTabs() ), actionCollection(), "reload_all_tabs" );
+-
++
+ m_paReloadStop = new KAction( i18n( "&Reload/Stop" ), "reload", 0, TQT_TQOBJECT(this), TQT_SLOT( slotReloadStop() ), actionCollection(), "reload_stop" );
+
+ m_paUndo = KStdAction::undo( KonqUndoManager::self(), TQT_SLOT( undo() ), actionCollection(), "undo" );
+@@ -4782,8 +4786,14 @@
+ else
+ tab_new_x = "tab_new_bg" ;
+
+- actNewTab = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
+- actNewTab->setToolTip( i18n( "Open the document in a new tab" ) );
++ KAction *actNewTab = new KAction( i18n( "Open in &Background Tab" ), "tab_new_bg", 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTab() ), actionCollection(), "openintab" );
++ actNewTab->setStatusText( i18n( "Open the document in a new background tab" ) );
++ KAction *actNewTabFront = new KAction( i18n( "Open in &New Tab" ), "tab_new", 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTabAtFront() ), actionCollection(), "openintabfront" );
++ actNewTabFront->setStatusText( i18n( "Open the document in a new foreground tab" ) );
++ actNewTab = new KAction( i18n( "Open in &Background Tab" ), tab_new_x, 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTab() ), konqyMenuClient->actionCollection(), "openintab" );
++ actNewTabFront = new KAction( i18n( "Open in &New Tab" ), tab_new_x, 0, TQT_TQOBJECT(this), TQT_SLOT( slotPopupNewTabAtFront() ), konqyMenuClient->actionCollection(), "openintabfront" );
++ actNewTab->setToolTip( i18n( "Open the document in a new background tab" ) );
++ actNewTabFront->setToolTip( i18n( "Open the document in a new foreground tab" ) );
+ doTabHandling = true;
+ }
+
+diff -urN /dev/shm/kdebase/konqueror/konq_mainwindow.h /dev/shm/kdebase.new/konqueror/konq_mainwindow.h
+--- kdebase/konqueror/konq_mainwindow.h 2011-03-12 00:58:18.000000000 -0600
++++ kdebase.new/konqueror/konq_mainwindow.h 2011-12-03 17:24:25.995334564 -0600
+@@ -444,6 +444,7 @@
+ void slotPopupNewWindow();
+ void slotPopupThisWindow();
+ void slotPopupNewTab();
++ void slotPopupNewTabAtFront();
+ void slotPopupNewTabRight();
+ void slotPopupPasteTo();
+ void slotRemoveView();
diff --git a/redhat/tdebase/kdebase-3.5.13-konqsidebar_documents.patch b/redhat/tdebase/kdebase-3.5.13-konqsidebar_documents.patch
new file mode 100644
index 000000000..e6076a12e
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-konqsidebar_documents.patch
@@ -0,0 +1,11 @@
+--- kdebase/konqueror/sidebar/trees/dirtree_module/dirtree_module.cpp.ORI 2011-12-10 15:07:43.171011925 +0100
++++ kdebase/konqueror/sidebar/trees/dirtree_module/dirtree_module.cpp 2011-12-10 15:07:48.000797355 +0100
+@@ -400,7 +400,7 @@
+ kdDebug(1201) << this << " KonqSidebarDirTreeModule::slotNewItems " << entries.count() << endl;
+
+ Q_ASSERT(entries.count());
+- KFileItem * firstItem = const_cast<KFileItemList&>(entries).first(); // qlist sucks for constness
++ KFileItem * firstItem = const_cast<KFileItemList&>(entries).last(); // qlist sucks for constness
+
+ // Find parent item - it's the same for all the items
+ KURL dir( firstItem->url().url(-1) );
diff --git a/redhat/tdebase/kdebase-3.5.13-kpersonalizer_default_doubleclick.patch b/redhat/tdebase/kdebase-3.5.13-kpersonalizer_default_doubleclick.patch
new file mode 100644
index 000000000..e2ece8166
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kpersonalizer_default_doubleclick.patch
@@ -0,0 +1,41 @@
+diff -urN kdebase/kpersonalizer/kospage.cpp kdebase.new2/kpersonalizer/kospage.cpp
+--- kdebase/kpersonalizer/kospage.cpp 2011-08-21 02:08:16.000000000 -0500
++++ kdebase.new2/kpersonalizer/kospage.cpp 2011-12-22 09:27:39.000000000 -0600
+@@ -142,7 +142,7 @@
+ ckcmdisplay->writeEntry("macStyle", false, true, true);
+
+ cglobal->setGroup("KDE");
+- cglobal->writeEntry("SingleClick", true, true, true);
++ cglobal->writeEntry("SingleClick", false, true, true);
+
+ claunch->setGroup("FeedbackStyle");
+ claunch->writeEntry("BusyCursor", false);
+@@ -351,8 +351,8 @@
+ textview_ospage->setText(i18n(
+ "<b>Window activation:</b> <i>Focus on click</i><br>"
+ "<b>Titlebar double-click:</b> <i>Shade window</i><br>"
+- "<b>Mouse selection:</b> <i>Single click</i><br>"
+- "<b>Application startup notification:</b> <i>busy cursor</i><br>"
++ "<b>Mouse selection:</b> <i>Double click</i><br>"
++ "<b>Application startup notification:</b> <i>none</i><br>"
+ "<b>Keyboard scheme:</b> <i>Trinity default</i><br>"
+ ));
+ }
+@@ -376,7 +376,7 @@
+ "<b>Window activation:</b> <i>Focus on click</i><br>"
+ "<b>Titlebar double-click:</b> <i>Maximize window</i><br>"
+ "<b>Mouse selection:</b> <i>Double click</i><br>"
+- "<b>Application startup notification:</b> <i>busy cursor</i><br>"
++ "<b>Application startup notification:</b> <i>none</i><br>"
+ "<b>Keyboard scheme:</b> <i>Windows</i><br>"
+ ));
+ }
+@@ -400,7 +400,7 @@
+ b_MacMenuBar = ckcmdisplay->readBoolEntry("macStyle", false);
+
+ cglobal->setGroup("KDE");
+- b_SingleClick = cglobal->readBoolEntry("SingleClick", true);
++ b_SingleClick = cglobal->readBoolEntry("SingleClick", false);
+
+ claunch->setGroup("FeedbackStyle");
+ b_BusyCursor = claunch->readBoolEntry("BusyCursor", false);
diff --git a/redhat/tdebase/kdebase-3.5.13-kwin-keramic-pics-emb.patch b/redhat/tdebase/kdebase-3.5.13-kwin-keramic-pics-emb.patch
new file mode 100644
index 000000000..50768f626
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-kwin-keramic-pics-emb.patch
@@ -0,0 +1,62 @@
+diff -uNr kdebase-3.5.13.orig/kwin/clients/keramik/CMakeLists.txt kdebase-3.5.13/kwin/clients/keramik/CMakeLists.txt
+--- kdebase-3.5.13.orig/kwin/clients/keramik/CMakeLists.txt 2012-03-14 12:56:02.567586872 +0200
++++ kdebase-3.5.13/kwin/clients/keramik/CMakeLists.txt 2012-03-14 12:50:07.000000000 +0200
+@@ -42,22 +42,11 @@
+
+ ##### tiles.h (header) ##########################
+
+-set( pics
+- pics/caption-large-left.png pics/caption-small-right.png
+- pics/titlebar-center.png pics/titlebutton-square.png
+- pics/border-left.png pics/caption-large-right.png
+- pics/grabbar-center.png pics/titlebar-left.png
+- pics/border-right.png pics/caption-small-center.png
+- pics/grabbar-left.png pics/titlebar-right.png
+- pics/caption-large-center.png pics/caption-small-left.png
+- pics/grabbar-right.png pics/titlebutton-round.png
+- pics/bottom-left.png pics/bottom-right.png pics/bottom-center.png
+- pics/titlebutton-square-large.png pics/titlebutton-square-huge.png
+- pics/titlebutton-round-large.png pics/titlebutton-round-huge.png )
++file(GLOB _pics "${CMAKE_CURRENT_SOURCE_DIR}/pics/*.png" )
+
+ add_custom_command( OUTPUT tiles.h
+- COMMAND ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${pics}
+- DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${pics} )
++ COMMAND ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${_pics}
++ DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/embedtool ${_pics} )
+
+ tde_add_executable( embedtool
+ SOURCES embedtool.cpp
+diff -Naur tdebase-master-orig/CMakeLists.txt tdebase-master/CMakeLists.txt
+--- tdebase-master-orig/CMakeLists.txt 2012-03-28 09:07:30.000000000 +0200
++++ tdebase-master/CMakeLists.txt 2012-04-01 11:41:49.000000000 +0200
+@@ -27,6 +27,7 @@
+ include( CheckLibraryExists )
+ include( CheckFunctionExists )
+ include( CheckStructHasMember )
++include( CheckTypeSize )
+
+
+ ##### include our cmake modules #################
+@@ -150,6 +151,8 @@
+ set( CMAKE_SHARED_LINKER_FLAGS "-Wl,--no-undefined" )
+ set( CMAKE_MODULE_LINKER_FLAGS "-Wl,--no-undefined" )
+
++check_type_size( "long long" LONG_LONG )
++
+
+ ##### kdebase directories #######################
+
+diff -Naur tdebase-master-orig/config.h.cmake tdebase-master/config.h.cmake
+--- tdebase-master-orig/config.h.cmake 2012-03-28 09:07:30.000000000 +0200
++++ tdebase-master/config.h.cmake 2012-04-01 11:45:21.000000000 +0200
+@@ -3,6 +3,9 @@
+ // konsole
+ #cmakedefine HAVE_PROC_CWD 1
+
++// Defined if compiler supports long long type.
++#cmakedefine HAVE_LONG_LONG 1
++
+ // kdesktop, konsole, kcontrol, kicker
+ #cmakedefine HAVE_XRENDER 1
+
diff --git a/redhat/tdebase/kdebase-3.5.13-mediamanager_ftbfs.patch b/redhat/tdebase/kdebase-3.5.13-mediamanager_ftbfs.patch
new file mode 100644
index 000000000..1d72b2378
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-mediamanager_ftbfs.patch
@@ -0,0 +1,10 @@
+--- kdebase/kioslave/media/mediamanager/CMakeLists.txt.ORI 2011-11-08 15:00:40.248406596 -0500
++++ kdebase/kioslave/media/mediamanager/CMakeLists.txt 2011-11-08 15:00:56.417996538 -0500
+@@ -20,6 +20,7 @@
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
+ ${HAL_INCLUDE_DIRS}
++ ${DBUS_TQT_INCLUDE_DIRS}
+ )
+
+ link_directories(
diff --git a/redhat/tdebase/kdebase-3.5.13-option_to_disable_scroll_desktop.patch b/redhat/tdebase/kdebase-3.5.13-option_to_disable_scroll_desktop.patch
new file mode 100644
index 000000000..732619ff5
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-option_to_disable_scroll_desktop.patch
@@ -0,0 +1,101 @@
+Index: pagerapplet.cpp
+===================================================================
+--- kdebase.ori/kicker/applets/minipager/pagerapplet.cpp (revision 1287351)
++++ kdebase/kicker/applets/minipager/pagerapplet.cpp (working copy)
+@@ -442,6 +442,10 @@
+ {
+ int newDesk;
+ int desktops = KWin::numberOfDesktops();
++
++
++ if(cycleWindow()){
++
+ if (m_kwin->numberOfViewports(0).width() * m_kwin->numberOfViewports(0).height() > 1 )
+ desktops = m_kwin->numberOfViewports(0).width() * m_kwin->numberOfViewports(0).height();
+ if (e->delta() < 0)
+@@ -452,8 +456,9 @@
+ {
+ newDesk = (desktops + m_curDesk - 2) % desktops + 1;
+ }
+-
++
+ slotButtonSelected(newDesk);
++ }
+ }
+
+ void KMiniPager::drawButtons()
+@@ -729,6 +734,7 @@
+
+ showMenu->insertItem(i18n("&Window Thumbnails"), WindowThumbnails);
+ showMenu->insertItem(i18n("&Window Icons"), WindowIcons);
++ showMenu->insertItem(i18n("&Cycle on Wheel"), Cycle);
+
+ showMenu->insertTitle(i18n("Text Label"));
+ showMenu->insertItem(i18n("Desktop N&umber"),
+@@ -760,6 +766,7 @@
+
+ m_contextMenu->setItemChecked(WindowThumbnails, m_settings->preview());
+ m_contextMenu->setItemChecked(WindowIcons, m_settings->icons());
++ m_contextMenu->setItemChecked(Cycle, m_settings->cycle());
+ m_contextMenu->setItemEnabled(WindowIcons, m_settings->preview());
+ m_contextMenu->setItemEnabled(RenameDesktop,
+ m_settings->labelType() ==
+@@ -812,11 +819,12 @@
+ m_settings->setPreview(!m_settings->preview());
+ TaskManager::the()->trackGeometry();
+ break;
+-
++ case Cycle:
++ m_settings->setCycle(!m_settings->cycle());
++ break;
+ case WindowIcons:
+ m_settings->setIcons(!m_settings->icons());
+ break;
+-
+ case PagerSettings::EnumBackgroundType::BgPlain + bgOffset:
+ m_settings->setBackgroundType(PagerSettings::EnumBackgroundType::BgPlain);
+ break;
+Index: pagersettings.kcfg
+===================================================================
+--- kdebase.ori/kicker/applets/minipager/pagersettings.kcfg (revision 1287351)
++++ kdebase/kicker/applets/minipager/pagersettings.kcfg (working copy)
+@@ -49,10 +49,15 @@
+ <label>Show desktop preview?</label>
+ <default>true</default>
+ </entry>
+-
++
+ <entry name="Icons" type="Bool">
+ <label>Show window icons in previews?</label>
+ <default>true</default>
+ </entry>
++
++ <entry name="Cycle" type="Bool">
++ <label>Cycle through desktops with wheel?</label>
++ <default>true</default>
++ </entry>
+ </group>
+ </kcfg>
+Index: pagerapplet.h
+===================================================================
+--- kdebase.ori/kicker/applets/minipager/pagerapplet.h (revision 1287351)
++++ kdebase/kicker/applets/minipager/pagerapplet.h (working copy)
+@@ -64,15 +64,17 @@
+ void setActive( WId active ) { m_activeWindow = active; }
+ WId activeWindow() { return m_activeWindow; }
+
+- enum ConfigOptions { LaunchExtPager = 96, WindowThumbnails,
++ enum ConfigOptions { LaunchExtPager = 96, WindowThumbnails, Cycle,
+ WindowIcons, ConfigureDesktops, RenameDesktop };
+ int labelType() const { return m_settings->labelType(); }
+
+ int bgType() const { return m_settings->backgroundType(); }
+
+ bool desktopPreview() const { return m_settings->preview(); }
++ bool cycleWindow() const { return m_settings->cycle(); }
+ bool windowIcons() const { return m_settings->icons(); }
+
++
+ Orientation orientation() const { return KPanelApplet::orientation(); }
+ Direction popupDirection() { return KPanelApplet::popupDirection(); }
+
diff --git a/redhat/tdebase/kdebase-3.5.13-prevent_tooltip_over_lockscreen.patch b/redhat/tdebase/kdebase-3.5.13-prevent_tooltip_over_lockscreen.patch
new file mode 100644
index 000000000..57e72137f
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-prevent_tooltip_over_lockscreen.patch
@@ -0,0 +1,137 @@
+From 553923b25dc41e2c17ba9038eb225cd3bb9b1770 Mon Sep 17 00:00:00 2001
+From: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: Fri, 21 Sep 2012 23:27:59 +0000
+Subject: Forcibly prevent transient override redirect windows from showing up over the lock screen
+
+This closes Bug 1079
+---
+diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
+index 236bf8a..005ac99 100644
+--- a/kdesktop/lock/lockdlg.cc
++++ b/kdesktop/lock/lockdlg.cc
+@@ -573,9 +573,19 @@ void PasswordDlg::gplugActivity()
+
+ void PasswordDlg::gplugMsgBox( TQMessageBox::Icon type, const TQString &text )
+ {
+- TQDialog dialog( this, 0, true, (WFlags)WX11BypassWM );
++ TQDialog dialog( this, 0, true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
++ if (trinity_desktop_lock_use_system_modal_dialogs) {
++ // Signal that we do not want any window controls to be shown at all
++ Atom kde_wm_system_modal_notification;
++ kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
++ XChangeProperty(tqt_xdisplay(), dialog.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
++ }
++ dialog.setCaption(i18n("Authentication Subsystem Notice"));
+ TQFrame *winFrame = new TQFrame( &dialog );
+- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
++ if (trinity_desktop_lock_use_system_modal_dialogs)
++ winFrame->setFrameStyle( TQFrame::NoFrame );
++ else
++ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ winFrame->setLineWidth( 2 );
+ TQVBoxLayout *vbox = new TQVBoxLayout( &dialog );
+ vbox->addWidget( winFrame );
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 2ce7507..5265bc6 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -960,6 +960,27 @@ void LockProcess::createSaverWindow()
+
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+
++ // HACK
++ // Close all tooltips and notification windows
++ {
++ Window rootWindow = RootWindow(x11Display(), x11Screen());
++ Window parent;
++ Window* children = NULL;
++ unsigned int noOfChildren = 0;
++ XWindowAttributes childAttr;
++ Window childTransient;
++
++ if (XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) {
++ for (unsigned int i=0; i<noOfChildren; i++) {
++ if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
++ if ((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
++ XUnmapWindow(x11Display(), children[i]);
++ }
++ }
++ }
++ }
++ }
++
+ kdDebug(1204) << "Saver window Id: " << winId() << endl;
+ }
+
+@@ -2162,9 +2183,19 @@ void LockProcess::unlockXF86()
+
+ void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt )
+ {
+- TQDialog box( 0, "messagebox", true, (WFlags)WX11BypassWM );
++ TQDialog box( 0, "messagebox", true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
++ if (trinity_desktop_lock_use_system_modal_dialogs) {
++ // Signal that we do not want any window controls to be shown at all
++ Atom kde_wm_system_modal_notification;
++ kde_wm_system_modal_notification = XInternAtom(tqt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
++ XChangeProperty(tqt_xdisplay(), box.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
++ }
++ box.setCaption(i18n("Authentication Subsystem Notice"));
+ TQFrame *winFrame = new TQFrame( &box );
+- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
++ if (trinity_desktop_lock_use_system_modal_dialogs)
++ winFrame->setFrameStyle( TQFrame::NoFrame );
++ else
++ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ winFrame->setLineWidth( 2 );
+ TQLabel *label1 = new TQLabel( winFrame );
+ label1->setPixmap( TQMessageBox::standardIcon( type ) );
+@@ -2264,8 +2295,10 @@ void LockProcess::windowAdded( WId w, bool managed )
+ int y = XDisplayHeight( tqt_xdisplay(), tqt_xscreen()) - attr_geom.height;
+ if( managed ) {
+ XSetWindowAttributes attr;
+- attr.override_redirect = True;
+- XChangeWindowAttributes( tqt_xdisplay(), w, CWOverrideRedirect, &attr );
++ if (!trinity_desktop_lock_use_system_modal_dialogs) {
++ attr.override_redirect = True;
++ XChangeWindowAttributes( tqt_xdisplay(), w, CWOverrideRedirect, &attr );
++ }
+ XReparentWindow( tqt_xdisplay(), w, tqt_xrootwin(), x, y );
+ XMapWindow( tqt_xdisplay(), w );
+ }
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index 56b4b5f..e74d9f9 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -76,6 +76,30 @@ bool MyApp::x11EventFilter( XEvent *ev )
+ emit activity();
+ }
+ }
++ else if (ev->type == MapNotify) {
++ // HACK
++ // Close all tooltips and notification windows
++ XMapEvent map_event = ev->xmap;
++ XWindowAttributes childAttr;
++ Window childTransient;
++ if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) {
++ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
++ XUnmapWindow(map_event.display, map_event.window);
++ }
++ }
++ }
++ else if (ev->type == CreateNotify) {
++ // HACK
++ // Close all tooltips and notification windows
++ XCreateWindowEvent create_event = ev->xcreatewindow;
++ XWindowAttributes childAttr;
++ Window childTransient;
++ if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
++ if ((childAttr.override_redirect) && (childTransient)) {
++ XDestroyWindow(create_event.display, create_event.window);
++ }
++ }
++ }
+ return KApplication::x11EventFilter( ev );
+ }
+
+--
+cgit v0.9.0.2-39-g756e
diff --git a/redhat/tdebase/kdebase-3.5.13-randrtray_merge_x11_reconfig_requests.patch b/redhat/tdebase/kdebase-3.5.13-randrtray_merge_x11_reconfig_requests.patch
new file mode 100644
index 000000000..e17ae11b5
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-randrtray_merge_x11_reconfig_requests.patch
@@ -0,0 +1,51 @@
+Index: krandrapp.cpp
+===================================================================
+--- kcontrol/randr/krandrapp.cpp (revision 1261452)
++++ kcontrol/randr/krandrapp.cpp (working copy)
+@@ -28,13 +28,20 @@
+ KRandRApp::KRandRApp()
+ : m_tray(new KRandRSystemTray(0L, "RANDRTray"))
+ {
++ connect(&m_eventMergingTimer, TQT_SIGNAL(timeout()), this, TQT_SLOT(handleX11ConfigChangeEvent()));
+ m_tray->show();
+ }
+
++void KRandRApp::handleX11ConfigChangeEvent()
++{
++ m_eventMergingTimer.stop();
++ m_tray->configChanged();
++}
++
+ bool KRandRApp::x11EventFilter(XEvent* e)
+ {
+ if (e->type == m_tray->screenChangeNotifyEvent()) {
+- m_tray->configChanged();
++ m_eventMergingTimer.start(1000, TRUE);
+ }
+ return KApplication::x11EventFilter( e );
+ }
+Index: krandrapp.h
+===================================================================
+--- kcontrol/randr/krandrapp.h (revision 1261452)
++++ kcontrol/randr/krandrapp.h (working copy)
+@@ -19,6 +19,7 @@
+ #ifndef KRANDRAPP_H
+ #define KRANDRAPP_H
+
++#include <tqtimer.h>
+ #include <kuniqueapplication.h>
+
+ class KRandRSystemTray;
+@@ -32,8 +33,12 @@
+
+ virtual bool x11EventFilter(XEvent * e);
+
++private slots:
++ void handleX11ConfigChangeEvent();
++
+ private:
+ KRandRSystemTray* m_tray;
++ TQTimer m_eventMergingTimer;
+ };
+
+ #endif
diff --git a/redhat/tdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch b/redhat/tdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch
new file mode 100644
index 000000000..1d3f73ceb
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch
@@ -0,0 +1,95 @@
+commit 8468d9bd5c66fe402acbc06f728b12ea996848de
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1327049889 -0600
+
+ Replicate LED status from virtual keyboards to physical keyboards
+ Fix keyboard attribute cloning
+ This commit closes Bug 561
+
+diff --git a/tsak/main.cpp b/tsak/main.cpp
+index df485a0..26aad00 100644
+--- a/tsak/main.cpp
++++ b/tsak/main.cpp
+@@ -126,22 +126,23 @@ static void copy_features(int devin, int devout)
+ for(i=0;i<EV_MAX;++i) {
+ if (bit_set(i, evtypes)) {
+ switch(i) {
+- case EV_KEY: op = UI_SET_KEYBIT; break;
+- case EV_REL: op = UI_SET_RELBIT; break;
+- case EV_ABS: op = UI_SET_ABSBIT; break;
+- case EV_MSC: op = UI_SET_MSCBIT; break;
+- case EV_LED: op = UI_SET_LEDBIT; break;
+- case EV_SND: op = UI_SET_SNDBIT; break;
+- case EV_SW: op = UI_SET_SWBIT; break;
+- default: op = -1;
++ case EV_KEY: op = UI_SET_KEYBIT; break;
++ case EV_REL: op = UI_SET_RELBIT; break;
++ case EV_ABS: op = UI_SET_ABSBIT; break;
++ case EV_MSC: op = UI_SET_MSCBIT; break;
++ case EV_LED: op = UI_SET_LEDBIT; break;
++ case EV_SND: op = UI_SET_SNDBIT; break;
++ case EV_SW: op = UI_SET_SWBIT; break;
++ default: op = -1;
++ }
+ }
+- }
+- if (op == -1) continue;
+- ioctl(devout, UI_SET_EVBIT, i);
+- memset(codes,0,sizeof(codes));
+- if (ioctl(devin, EVIOCGBIT(i, sizeof(codes)), codes) < 0) return;
+- for(code=0;code<KEY_MAX;code++) {
+- if (bit_set(code, codes)) ioctl(devout, op, code);
++ if (op == -1) continue;
++ ioctl(devout, UI_SET_EVBIT, i);
++ memset(codes,0,sizeof(codes));
++ if (ioctl(devin, EVIOCGBIT(i, sizeof(codes)), codes) >= 0) {
++ for(code=0;code<KEY_MAX;code++) {
++ if (bit_set(code, codes)) ioctl(devout, op, code);
++ }
+ }
+ }
+ }
+@@ -342,6 +343,7 @@ int main (int argc, char *argv[])
+ {
+ struct input_event ev[64];
+ struct input_event event;
++ struct input_event revev;
+ struct uinput_user_dev devinfo={0};
+ int devout[MAX_KEYBOARDS], rd, i, value, size = sizeof (struct input_event);
+ char name[256] = "Unknown";
+@@ -416,9 +418,9 @@ int main (int argc, char *argv[])
+ fprintf(stderr, "Reading from keyboard: (%s)\n", name);
+
+ // Create filtered virtual output device
+- devout[current_keyboard]=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
++ devout[current_keyboard]=open("/dev/misc/uinput",O_RDWR|O_NONBLOCK);
+ if (devout[current_keyboard]<0) {
+- devout[current_keyboard]=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
++ devout[current_keyboard]=open("/dev/uinput",O_RDWR|O_NONBLOCK);
+ if (devout[current_keyboard]<0) {
+ perror("open(\"/dev/misc/uinput\")");
+ }
+@@ -483,6 +485,14 @@ int main (int argc, char *argv[])
+ fprintf(stderr, "Read failed.\n");
+ break;
+ }
++
++ // Replicate LED events from the virtual keyboard to the physical keyboard
++ int rrd = read(devout[current_keyboard], &revev, size);
++ if (rrd >= size) {
++ if (revev.type == EV_LED) {
++ write(keyboard_fds[current_keyboard], &revev, sizeof(revev));
++ }
++ }
+
+ value = ev[0].value;
+
+@@ -506,7 +516,7 @@ int main (int argc, char *argv[])
+ }
+ }
+
+- if (hide_event == false) {
++ if ((hide_event == false) && (ev[0].type != EV_LED) && (ev[1].type != EV_LED)) {
+ // Pass the event on...
+ event = ev[0];
+ write(devout[current_keyboard], &event, sizeof event);
diff --git a/redhat/tdebase/kdebase-3.5.13-restore_kde3_clock.patch b/redhat/tdebase/kdebase-3.5.13-restore_kde3_clock.patch
new file mode 100644
index 000000000..2b697330d
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-restore_kde3_clock.patch
@@ -0,0 +1,104 @@
+Index: kicker/applets/systemtray/systemtrayapplet.cpp
+===================================================================
+--- kicker/applets/systemtray/systemtrayapplet.cpp (revision 1262481)
++++ kicker/applets/systemtray/systemtrayapplet.cpp (working copy)
+@@ -34,6 +34,7 @@
+ #include <tqstyle.h>
+ #include <tqgrid.h>
+ #include <tqpainter.h>
++#include <tqimage.h>
+
+ #include <dcopclient.h>
+ #include <kapplication.h>
+Index: kicker/applets/clock/clock.h
+===================================================================
+--- kicker/applets/clock/clock.h (revision 1262481)
++++ kicker/applets/clock/clock.h (working copy)
+@@ -41,7 +41,6 @@
+
+ #include <kickertip.h>
+ #include "settings.h"
+-#include "kshadowengine.h"
+
+ class TQTimer;
+ class TQBoxLayout;
+@@ -283,8 +282,6 @@
+ TQDate clockGetDate();
+
+ virtual void updateKickerTip(KickerTip::Data&);
+-
+- KTextShadowEngine *shadowEngine();
+
+ k_dcop:
+ void reconfigure();
+@@ -344,7 +341,6 @@
+ TQStringList _remotezonelist;
+ KPopupMenu* menu;
+ ClockAppletToolTip m_tooltip;
+- KTextShadowEngine *m_shadowEngine;
+ };
+
+
+Index: kicker/applets/clock/clock.cpp
+===================================================================
+--- kicker/applets/clock/clock.cpp (revision 1262481)
++++ kicker/applets/clock/clock.cpp (working copy)
+@@ -277,10 +277,7 @@
+ {
+ TQRect tr(0, 0, width(), height());
+
+- if (!KickerSettings::transparent())
+- p->drawText(tr, AlignCenter, _timeStr);
+- else
+- _applet->shadowEngine()->drawText(*p, tr, AlignCenter, _timeStr, size());
++ p->drawText(tr, AlignCenter, _timeStr);
+ }
+
+ //************************************************************
+@@ -862,10 +859,7 @@
+ else
+ tr = TQRect(4, 2, width() - 8, height() - 4);
+
+- if (!KickerSettings::transparent())
+- p->drawText(tr, AlignCenter, _timeStr);
+- else
+- _applet->shadowEngine()->drawText(*p, tr, AlignCenter, _timeStr, size());
++ p->drawText(tr, AlignCenter, _timeStr);
+
+ alreadyDrawing = false;
+ }
+@@ -899,8 +893,7 @@
+ _prefs(new Prefs(sharedConfig())),
+ zone(new Zone(config())),
+ menu(0),
+- m_tooltip(this),
+- m_shadowEngine(0)
++ m_tooltip(this)
+ {
+ DCOPObject::setObjId("ClockApplet");
+ _prefs->readConfig();
+@@ -938,7 +931,6 @@
+
+ ClockApplet::~ClockApplet()
+ {
+- delete m_shadowEngine;
+ //reverse for the moment
+ KGlobal::locale()->removeCatalogue("clockapplet");
+ KGlobal::locale()->removeCatalogue("timezones"); // For time zone translations
+@@ -959,15 +951,7 @@
+ }
+
+
+-KTextShadowEngine *ClockApplet::shadowEngine()
+-{
+- if (!m_shadowEngine)
+- m_shadowEngine = new KTextShadowEngine();
+
+- return m_shadowEngine;
+-}
+-
+-
+ int ClockApplet::widthForHeight(int h) const
+ {
+ if (orientation() == Qt::Vertical)
+
diff --git a/redhat/tdebase/kdebase-3.5.13-start_dcop_in_tdm.patch b/redhat/tdebase/kdebase-3.5.13-start_dcop_in_tdm.patch
new file mode 100644
index 000000000..53d7d6cde
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-start_dcop_in_tdm.patch
@@ -0,0 +1,34 @@
+--- kdebase/kdm/kfrontend/kgapp.cpp.orig 2012-04-27 22:08:53.729331548 +0200
++++ kdebase/kdm/kfrontend/kgapp.cpp 2012-04-27 22:06:29.169359295 +0200
+@@ -190,6 +190,7 @@
+ KProcess *tsak = 0;
+ KProcess *proc = 0;
+ KProcess *comp = 0;
++ KProcess *dcop = 0;
+ KProcess *kwin = 0;
+
+ trinity_desktop_lock_use_sak = _useSAK;
+@@ -310,6 +311,13 @@
+ }
+
+ if (!_windowManager.isEmpty()) {
++ if (_windowManager == "kwin") {
++ // Special case
++ // Start DCOP...
++ dcop = new KProcess;
++ *dcop << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + "dcopserver" << TQCString("--suicide");
++ dcop->start();
++ }
+ kwin = new KProcess;
+ *kwin << TQCString( argv0, strrchr( argv0, '/' ) - argv0 + 2 ) + _windowManager.ascii();
+ kwin->start();
+@@ -453,7 +461,9 @@
+ if (kwin) {
+ kwin->closeStdin();
+ kwin->detach();
++ dcop->detach();
+ delete kwin;
++ delete dcop;
+ }
+ delete proc;
+ UnsecureDisplay( dpy );
diff --git a/redhat/tdebase/kdebase-3.5.13-startkde_directories.patch b/redhat/tdebase/kdebase-3.5.13-startkde_directories.patch
new file mode 100644
index 000000000..0ac005184
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-startkde_directories.patch
@@ -0,0 +1,118 @@
+--- kdebase/startkde.ORI 2011-12-12 20:09:21.984162840 +0100
++++ kdebase/startkde 2011-12-12 20:08:27.922834925 +0100
+@@ -4,6 +4,7 @@
+ #
+
+ echo "[startkde] Starting startkde." 1>&2
++export KDEDIR="/opt/trinity"
+
+ # When the X server dies we get a HUP signal from xinit. We must ignore it
+ # because we still need to do some cleanup.
+@@ -74,39 +75,10 @@
+ echo "[startkde] KDEHOME is preset to $KDEHOME." 1>&2
+ export KDEHOME=$KDEHOME
+ else
+- # $KDEHOME is NOT already preset in the environment. Try to help.
+- # This might be overkill but does provide flexibility.
++ # $KDEHOME is NOT already preset in the environment.
++ # We always use ~/.trinity as default.
+ echo "[startkde] KDEHOME is not set." 1>&2
+- if [ -d $HOME/.trinity ]; then
+- # OK, this one is obvious.
+- export KDEHOME=$HOME/.trinity
+- elif [ -d $HOME/.trinity ]; then
+- # Looks like the user had an old version of Trinity installed at last login
+- echo "[startkde] Migrating old ~/.trinity directory to new ~/.trinity name." 1>&2
+- mv $HOME/.trinity $HOME/.trinity
+- export KDEHOME=$HOME/.trinity
+- elif [ -f /usr/bin/kde4-config ]; then
+- # Looks like KDE4 is installed.
+- if [ -d $HOME/.kde ] && [ ! -d $HOME/.trinity ]; then
+- # Presume $HOME/.kde is being used for KDE4 as it already exists.
+- export KDEHOME=$HOME/.trinity
+- else
+- # Presume $HOME/.kde is being used for KDE4 to be on the safe side.
+- export KDEHOME=$HOME/.trinity
+- fi
+- elif [ -f /opt/trinity/bin/kde-config ]; then
+- # Looks like KDE3 or Trinity is installed and playing second fiddle to KDE4.
+- export KDEHOME=$HOME/.trinity
+- elif [ -f /opt/trinity/bin/kde-config ]; then
+- # Looks like KDE3 or Trinity is installed and playing second fiddle to KDE4.
+- export KDEHOME=$HOME/.trinity
+- elif [ -f /usr/bin/kde-config ] && [ -d $HOME/.kde ]; then
+- # Looks like KDE3 or Trinity is installed and not playing second fiddle to KDE4.
+- export KDEHOME=$HOME/.kde
+- else
+- # Resort to this and hope for the best!
+- export KDEHOME=$HOME/.trinity
+- fi
++ export KDEHOME=$HOME/.trinity
+ echo "[startkde] Set KDEHOME to $KDEHOME." 1>&2
+ fi
+
+@@ -117,51 +89,25 @@
+ fi
+
+ # Modify the following environment variables only as necessary.
+-if [ -d /opt/trinity/games ]; then
+- export PATH=/opt/trinity/games:$PATH
+-fi
+-if [ -d /opt/trinity/bin ]; then
+- export PATH=/opt/trinity/bin:$PATH
+-fi
+-if [ -d /opt/trinity/games ]; then
+- export PATH=/opt/trinity/games:$PATH
+-fi
+-if [ -d /opt/trinity/bin ]; then
+- export PATH=/opt/trinity/bin:$PATH
+-fi
+-if [ -d /opt/trinity/share ]; then
+- export XDG_DATA_DIRS=$XDG_DATA_DIRS:/opt/trinity/share/:/usr/share/
+-fi
+-if [ -d /opt/trinity/share ]; then
+- export XDG_DATA_DIRS=$XDG_DATA_DIRS:/opt/trinity/share/:/usr/share/
++if [ -d ${KDEDIR}/games ]; then
++ export PATH=${KDEDIR}/games:$PATH
+ fi
+-if [ -d /opt/trinity/etc/xdg ]; then
+- export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:/opt/trinity/etc/xdg/:/etc/xdg/
++if [ -d ${KDEDIR}/bin ]; then
++ export PATH=${KDEDIR}/bin:$PATH
+ fi
+-if [ -d /opt/trinity/etc/xdg ]; then
+- export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:/opt/trinity/etc/xdg/:/etc/xdg/
++if [ -d ${KDEDIR}/share ]; then
++ export XDG_DATA_DIRS=$XDG_DATA_DIRS:${KDEDIR}/share/:/usr/share/
+ fi
+-if [ -d /opt/trinity/share/man ]; then
+- export MANPATH=/opt/trinity/share/man:$MANPATH
++if [ -d ${KDEDIR}/etc/xdg ]; then
++ export XDG_CONFIG_DIRS=$XDG_CONFIG_DIRS:${KDEDIR}/etc/xdg/:/etc/xdg/
+ fi
+-if [ -d /opt/trinity/share/man ]; then
+- export MANPATH=/opt/trinity/share/man:$MANPATH
+-fi
+-if [ -d /opt/trinity ]; then
+- if [ -n "$KDEDIRS" ]; then
+- export KDEDIRS=$KDEDIRS:/opt/trinity/:/usr/
+- else
+- export KDEDIRS=/opt/trinity/:/usr/
+- fi
+-fi
+-if [ -d /opt/trinity ]; then
+- if [ -n "$KDEDIRS" ]; then
+- export KDEDIRS=$KDEDIRS:/opt/trinity/:/usr/
+- else
+- export KDEDIRS=/opt/trinity/:/usr/
+- fi
++if [ -d ${KDEDIR}/share/man ]; then
++ export MANPATH=${KDEDIR}/share/man:$MANPATH
+ fi
+
++# The TDE directory must be first in $KDEDIRS
++export KDEDIRS=${KDEDIR}/:$KDEDIRS:/usr/
++
+ test -n "$KDEHOME" && kdehome=`echo "$KDEHOME" | sed "s,^~/,$HOME/,"`
+ echo "[startkde] kdehome: $kdehome" 1>&2
+
diff --git a/redhat/tdebase/kdebase-3.5.13-startkde_icon.patch b/redhat/tdebase/kdebase-3.5.13-startkde_icon.patch
new file mode 100644
index 000000000..166c1b52f
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-startkde_icon.patch
@@ -0,0 +1,19 @@
+--- tdebase/startkde.ORI 2012-07-29 18:23:59.885538470 +0200
++++ tdebase/startkde 2012-07-29 18:26:19.022618054 +0200
+@@ -152,6 +152,16 @@
+ fi
+ fi
+
++# Default Start Button icon for TDE
++if [ ! -e $kdehome/share/config/kickerrc ]; then
++ if [ -r "%{tde_starticon}" ]; then
++ cat <<EOF >$kdehome/share/config/kickerrc
++[KMenu]
++CustomIcon=%{tde_starticon}
++EOF
++ fi
++fi
++
+ # XCursor mouse theme needs to be applied here to work even for kded or ksmserver.
+ if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then
+ kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize"
diff --git a/redhat/tdebase/kdebase-3.5.13-startkde_ldpreload.patch b/redhat/tdebase/kdebase-3.5.13-startkde_ldpreload.patch
new file mode 100644
index 000000000..1b39a59ff
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-startkde_ldpreload.patch
@@ -0,0 +1,13 @@
+--- kdebase/startkde.ORI 2011-11-01 22:17:52.000000000 +0100
++++ kdebase/startkde 2011-11-01 22:18:14.000000000 +0100
+@@ -413,7 +413,9 @@
+ fi
+
+ if [ -n $KGTK_PRELOAD ]; then
+- if [ -e /usr/lib/libnspr4.so ]; then
++ if [ -e /usr/lib64/libnspr4.so ]; then
++ KGTK_NSPR_PRELOAD="/usr/lib64/libnspr4.so:"
++ elif [ -e /usr/lib/libnspr4.so ]; then
+ KGTK_NSPR_PRELOAD="/usr/lib/libnspr4.so:"
+ fi
+ export LD_PRELOAD=$KGTK_PRELOAD:$KGTK_NSPR_PRELOAD$LD_PRELOAD
diff --git a/redhat/tdebase/kdebase-3.5.13-support_hal_04.patch b/redhat/tdebase/kdebase-3.5.13-support_hal_04.patch
new file mode 100644
index 000000000..0a92b6b98
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-support_hal_04.patch
@@ -0,0 +1,1033 @@
+--- kdebase/ksmserver/shutdowndlg.h.rhel4 2012-09-08 05:43:47.950945974 -0400
++++ kdebase/ksmserver/shutdowndlg.h 2012-09-08 05:45:55.807337959 -0400
+@@ -32,6 +32,9 @@
+
+ #include <config.h>
+
++// RHEL 4 dirty hack to remove HAL support in ksmshutdown
++#undef COMPILE_HALBACKEND
++
+ #ifndef NO_QT3_DBUS_SUPPORT
+ /* We acknowledge the the dbus API is unstable */
+ #define DBUS_API_SUBJECT_TO_CHANGE
+--- kdebase/kioslave/media/mediamanager/halbackend.cpp.hal04 2012-09-08 14:15:10.324373357 -0400
++++ kdebase/kioslave/media/mediamanager/halbackend.cpp 2012-09-08 14:26:12.422302958 -0400
+@@ -41,12 +41,10 @@
+ #include <kprocess.h>
+
+ #define MOUNT_SUFFIX ( \
+- (medium->isMounted() ? TQString("_mounted") : TQString("_unmounted")) + \
+- (medium->isEncrypted() ? (halClearVolume ? "_decrypted" : "_encrypted") : "" ) \
++ (medium->isMounted() ? TQString("_mounted") : TQString("_unmounted")) \
+ )
+ #define MOUNT_ICON_SUFFIX ( \
+- (medium->isMounted() ? TQString("_mount") : TQString("_unmount")) + \
+- (medium->isEncrypted() ? (halClearVolume ? "_decrypt" : "_encrypt") : "" ) \
++ (medium->isMounted() ? TQString("_mount") : TQString("_unmount")) \
+ )
+
+ /* Static instance of this class, for static HAL callbacks */
+@@ -57,10 +55,10 @@
+ {
+ char* _ppt_string;
+ TQString _ppt_QString;
+- _ppt_string = libhal_device_get_property_string(ctx, udi, key, NULL);
++ _ppt_string = hal_device_get_property_string(ctx, udi, key);
+ if ( _ppt_string )
+ _ppt_QString = _ppt_string;
+- libhal_free_string(_ppt_string);
++ hal_free_string(_ppt_string);
+ return _ppt_QString;
+ }
+
+@@ -92,7 +90,7 @@
+
+ /* Remove all the registered media first */
+ int numDevices;
+- char** halDeviceList = libhal_get_all_devices( m_halContext, &numDevices, NULL );
++ char** halDeviceList = hal_get_all_devices( m_halContext, &numDevices );
+
+ if ( halDeviceList )
+ {
+@@ -102,70 +100,39 @@
+ }
+ }
+
+- libhal_free_string_array( halDeviceList );
++ hal_free_string_array( halDeviceList );
+
+- DBusError error;
+- dbus_error_init(&error);
+- libhal_ctx_shutdown(m_halContext, &error);
+- libhal_ctx_free(m_halContext);
++ hal_shutdown(m_halContext);
+ }
+
+ if (m_halStoragePolicy)
+- libhal_storage_policy_free(m_halStoragePolicy);
++ hal_storage_policy_free(m_halStoragePolicy);
+ }
+
+ /* Connect to the HAL */
+ bool HALBackend::InitHal()
+ {
+ kdDebug(1219) << "Context new" << endl;
+- m_halContext = libhal_ctx_new();
++
++ /* libhal initialization */
++ m_halFunctions.main_loop_integration = HALBackend::hal_main_loop_integration;
++ m_halFunctions.device_added = HALBackend::hal_device_added;
++ m_halFunctions.device_removed = HALBackend::hal_device_removed;
++ m_halFunctions.device_new_capability = NULL;
++ m_halFunctions.device_lost_capability = NULL;
++ m_halFunctions.device_property_modified = HALBackend::hal_device_property_modified;
++ m_halFunctions.device_condition = HALBackend::hal_device_condition;
++
++ m_halContext = hal_initialize(&m_halFunctions, false);
+ if (!m_halContext)
+ {
+ kdDebug(1219) << "Failed to initialize HAL!" << endl;
+ return false;
+ }
+
+- // Main loop integration
+- kdDebug(1219) << "Main loop integration" << endl;
+- DBusError error;
+- dbus_error_init(&error);
+- dbus_connection = dbus_bus_get_private(DBUS_BUS_SYSTEM, &error);
+-
+- if (!dbus_connection || dbus_error_is_set(&error)) {
+- dbus_error_free(&error);
+- libhal_ctx_free(m_halContext);
+- m_halContext = NULL;
+- return false;
+- }
+-
+- dbus_connection_set_exit_on_disconnect (dbus_connection, FALSE);
+-
+- MainLoopIntegration(dbus_connection);
+- libhal_ctx_set_dbus_connection(m_halContext, dbus_connection);
+-
+- // HAL callback functions
+- kdDebug(1219) << "Callback functions" << endl;
+- libhal_ctx_set_device_added(m_halContext, HALBackend::hal_device_added);
+- libhal_ctx_set_device_removed(m_halContext, HALBackend::hal_device_removed);
+- libhal_ctx_set_device_new_capability (m_halContext, NULL);
+- libhal_ctx_set_device_lost_capability (m_halContext, NULL);
+- libhal_ctx_set_device_property_modified (m_halContext, HALBackend::hal_device_property_modified);
+- libhal_ctx_set_device_condition(m_halContext, HALBackend::hal_device_condition);
+-
+- kdDebug(1219) << "Context Init" << endl;
+- if (!libhal_ctx_init(m_halContext, &error))
+- {
+- if (dbus_error_is_set(&error))
+- dbus_error_free(&error);
+- libhal_ctx_free(m_halContext);
+- m_halContext = NULL;
+- kdDebug(1219) << "Failed to init HAL context!" << endl;
+- return false;
+- }
+-
+ /** @todo customize watch policy */
+ kdDebug(1219) << "Watch properties" << endl;
+- if (!libhal_device_property_watch_all(m_halContext, &error))
++ if (hal_device_property_watch_all(m_halContext))
+ {
+ kdDebug(1219) << "Failed to watch HAL properties!" << endl;
+ return false;
+@@ -173,7 +140,7 @@
+
+ /* libhal-storage initialization */
+ kdDebug(1219) << "Storage Policy" << endl;
+- m_halStoragePolicy = libhal_storage_policy_new();
++ m_halStoragePolicy = hal_storage_policy_new();
+ /** @todo define libhal-storage icon policy */
+
+ /* List devices at startup */
+@@ -186,16 +153,19 @@
+ kdDebug(1219) << "ListDevices" << endl;
+
+ int numDevices;
+- char** halDeviceList = libhal_get_all_devices(m_halContext, &numDevices, NULL);
++ char** halDeviceList = hal_get_all_devices(m_halContext, &numDevices);
+
+ if (!halDeviceList)
+ return false;
+
+ kdDebug(1219) << "HALBackend::ListDevices : " << numDevices << " devices found" << endl;
+- for (int i = 0; i < numDevices; i++)
++ for (int i = 0; i < numDevices; i++) {
++ kdDebug(1219) << "HALBackend::ListDevices : adding device " << i << endl;
+ AddDevice(halDeviceList[i], false);
++ kdDebug(1219) << "HALBackend::ListDevices : end adding device " << i << endl;
++ }
+
+- libhal_free_string_array( halDeviceList );
++ hal_free_string_array( halDeviceList );
+
+ return true;
+ }
+@@ -206,63 +176,54 @@
+ {
+ /* We don't deal with devices that do not expose their capabilities.
+ If we don't check this, we will get a lot of warning messages from libhal */
+- if (!libhal_device_property_exists(m_halContext, udi, "info.capabilities", NULL))
++ if (!hal_device_property_exists(m_halContext, udi, "info.capabilities")) {
++ kdDebug(1219) << "HALBackend::AddDevice : Device does not expose capability. Skipping." << endl;
+ return;
++ }
+
+ /* If the device is already listed, do not process.
+ This should not happen, but who knows... */
+ /** @todo : refresh properties instead ? */
+- if (m_mediaList.findById(udi))
++ if (m_mediaList.findById(udi)) {
++ kdDebug(1219) << "HALBackend::AddDevice : Device is already listed. Skipping." << endl;
+ return;
++ }
+
+- if (libhal_device_get_property_bool(m_halContext, "/org/freedesktop/Hal/devices/computer", "storage.disable_volume_handling", NULL))
++ if (hal_device_get_property_bool(m_halContext, "/org/freedesktop/Hal/devices/computer", "storage.disable_volume_handling"))
+ allowNotification=false;
+
+ /* Add volume block devices */
+- if (libhal_device_query_capability(m_halContext, udi, "volume", NULL))
++ if (hal_device_query_capability(m_halContext, udi, "volume"))
+ {
++ kdDebug(1219) << "HALBackend::AddDevice : Device is a volume." << endl;
+ /* We only list volumes that...
+- * - are encrypted with LUKS or
+ * - have a filesystem or
+ * - have an audio track
+ */
+- if ( ( libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "crypto" ||
+- libhal_device_get_property_QString(m_halContext, udi, "volume.fstype") != "crypto_LUKS"
+- ) &&
+- libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "filesystem" &&
+- !libhal_device_get_property_bool(m_halContext, udi, "volume.disc.has_audio", NULL) &&
+- !libhal_device_get_property_bool(m_halContext, udi, "volume.disc.is_blank", NULL) )
++ if ( (libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") != "filesystem") &&
++ (!hal_device_get_property_bool(m_halContext, udi, "volume.disc.has_audio")) &&
++ (!hal_device_get_property_bool(m_halContext, udi, "volume.disc.is_blank")) ) {
++ kdDebug(1219) << "HALBackend::AddDevice : no filesystem, no audio track on device. Skipping." << endl;
+ return;
++ }
+
+ /* Query drive udi */
+ TQString driveUdi = libhal_device_get_property_QString(m_halContext, udi, "block.storage_device");
+- if ( driveUdi.isNull() ) // no storage - no fun
++ if ( driveUdi.isNull() ) { // no storage - no fun
++ kdDebug(1219) << "HALBackend::AddDevice : UDI is null. Skipping." << endl;
+ return;
++ }
+
+ // if the device is locked do not act upon it
+- if (libhal_device_get_property_bool(m_halContext, driveUdi.ascii(), "info.locked", NULL))
++ if (hal_device_get_property_bool(m_halContext, driveUdi.ascii(), "info.locked"))
+ allowNotification=false;
+
+ // if the device is locked do not act upon it
+- if (libhal_device_get_property_bool(m_halContext, driveUdi.ascii(), "storage.partition_table_changed", NULL))
++ if (hal_device_get_property_bool(m_halContext, driveUdi.ascii(), "storage.partition_table_changed"))
+ allowNotification=false;
+
+ /** @todo check exclusion list **/
+
+- /* Special handling for clear crypto volumes */
+- LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, udi);
+- if (!halVolume)
+- return;
+- const char* backingVolumeUdi = libhal_volume_crypto_get_backing_volume_udi(halVolume);
+- if ( backingVolumeUdi != NULL )
+- {
+- /* The crypto drive was unlocked and may now be mounted... */
+- kdDebug(1219) << "HALBackend::AddDevice : ClearVolume appeared for " << backingVolumeUdi << endl;
+- ResetProperties(backingVolumeUdi, allowNotification);
+- libhal_volume_free(halVolume);
+- return;
+- }
+- libhal_volume_free(halVolume);
+
+ /* Create medium */
+ Medium* medium = new Medium(udi, "");
+@@ -272,18 +233,20 @@
+ {
+ // if it's not mountable by user and not by HAL, don't show it at all
+ if ( ( libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") == "filesystem" &&
+- !libhal_device_get_property_bool(m_halContext, udi, "volume.is_mounted", NULL ) ) &&
+- ( libhal_device_get_property_bool(m_halContext, udi, "volume.ignore", NULL ) ) )
++ !hal_device_get_property_bool(m_halContext, udi, "volume.is_mounted") ) &&
++ ( hal_device_get_property_bool(m_halContext, udi, "volume.ignore") ) )
+ {
++ kdDebug(1219) << "HALBackend::AddDevice : Device is not mountable. Skipping." << endl;
+ delete medium;
+ return;
+ }
+ }
+
+- // instert medium into list
+- m_mediaList.addMedium(medium, allowNotification);
++ // insert medium into list
++ kdDebug(1219) << "HALBackend::AddDevice : Adding medium into list." << endl;
++ m_mediaList.addMedium(medium, allowNotification);
+
+- // finally check for automount
++ // finally check for automount
+ TQMap<TQString,TQString> options = MediaManagerUtils::splitOptions(mountoptions(udi));
+ kdDebug() << "automount " << options["automount"] << endl;
+ if (options["automount"] == "true" && allowNotification ) {
+@@ -294,14 +257,18 @@
+
+ return;
+ }
++ else
++ {
++ kdDebug(1219) << "HALBackend::AddDevice : Device is not a volume." << endl;
++ }
+
+ /* Floppy & zip drives */
+- if (libhal_device_query_capability(m_halContext, udi, "storage", NULL))
++ if (hal_device_query_capability(m_halContext, udi, "storage"))
+ if ((libhal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "floppy") ||
+ (libhal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "zip") ||
+ (libhal_device_get_property_QString(m_halContext, udi, "storage.drive_type") == "jaz"))
+ {
+- if (! libhal_device_get_property_bool(m_halContext, udi, "storage.removable.media_available", NULL) )
++ if (! hal_device_get_property_bool(m_halContext, udi, "storage.removable.media_available") )
+ allowNotification = false;
+ /* Create medium */
+ Medium* medium = new Medium(udi, "");
+@@ -314,11 +281,9 @@
+ }
+
+ /* Camera handled by gphoto2*/
+- if (libhal_device_query_capability(m_halContext, udi, "camera", NULL) &&
+- ((libhal_device_get_property_QString(m_halContext, udi, "camera.access_method")=="ptp") ||
+-
+- (libhal_device_property_exists(m_halContext, udi, "camera.libgphoto2.support", NULL) &&
+- libhal_device_get_property_bool(m_halContext, udi, "camera.libgphoto2.support", NULL)))
++ if (hal_device_query_capability(m_halContext, udi, "camera") &&
++ hal_device_property_exists(m_halContext, udi, "camera.libgphoto2.support") &&
++ hal_device_get_property_bool(m_halContext, udi, "camera.libgphoto3.support")
+ )
+ {
+ /* Create medium */
+@@ -327,6 +292,7 @@
+ m_mediaList.addMedium(medium, allowNotification);
+ return;
+ }
++ kdDebug(1219) << "HALBackend::AddDevice : Device was intentionally not added. Skipping." << endl;
+ }
+
+ void HALBackend::RemoveDevice(const char *udi)
+@@ -348,7 +314,7 @@
+ return;
+ bool allowNotification = false;
+ if (strcmp(key, "storage.removable.media_available") == 0)
+- allowNotification = libhal_device_get_property_bool(m_halContext, udi, key, NULL);
++ allowNotification = hal_device_get_property_bool(m_halContext, udi, key);
+ ResetProperties(mediumUdi, allowNotification);
+ }
+
+@@ -421,19 +387,13 @@
+ return medium->id().ascii();
+
+ /* Hard part : this is a volume whose drive is registered */
+- if (libhal_device_property_exists(m_halContext, udi, "info.capabilities", NULL))
+- if (libhal_device_query_capability(m_halContext, udi, "volume", NULL))
++ if (hal_device_property_exists(m_halContext, udi, "info.capabilities"))
++ if (hal_device_query_capability(m_halContext, udi, "volume"))
+ {
+ /* check if this belongs to an encrypted volume */
+- LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, udi);
++ HalVolume* halVolume = hal_volume_from_udi(m_halContext, udi);
+ if (!halVolume) return NULL;
+- const char* backingUdi = libhal_volume_crypto_get_backing_volume_udi(halVolume);
+- if (backingUdi != NULL) {
+- const char* result = findMediumUdiFromUdi(backingUdi);
+- libhal_volume_free(halVolume);
+- return result;
+- }
+- libhal_volume_free(halVolume);
++ hal_volume_free(halVolume);
+
+ /* this is a volume whose drive is registered */
+ TQString driveUdi = libhal_device_get_property_QString(m_halContext, udi, "block.storage_device");
+@@ -462,11 +422,11 @@
+
+ Medium* m = new Medium(mediumUdi, "");
+
+- if (libhal_device_query_capability(m_halContext, mediumUdi, "volume", NULL))
++ if (hal_device_query_capability(m_halContext, mediumUdi, "volume"))
+ setVolumeProperties(m);
+- if (libhal_device_query_capability(m_halContext, mediumUdi, "storage", NULL))
++ if (hal_device_query_capability(m_halContext, mediumUdi, "storage"))
+ setFloppyProperties(m);
+- if (libhal_device_query_capability(m_halContext, mediumUdi, "camera", NULL))
++ if (hal_device_query_capability(m_halContext, mediumUdi, "camera"))
+ setCameraProperties(m);
+
+ m_mediaList.changeMediumState(*m, allowNotification);
+@@ -480,84 +440,50 @@
+
+ const char* udi = medium->id().ascii();
+ /* Check if the device still exists */
+- if (!libhal_device_exists(m_halContext, udi, NULL))
++ if (!hal_device_exists(m_halContext, udi))
+ return;
+
+ /* Get device information from libhal-storage */
+- LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, udi);
++ HalVolume* halVolume = hal_volume_from_udi(m_halContext, udi);
+ if (!halVolume)
+ return;
+- TQString driveUdi = libhal_volume_get_storage_device_udi(halVolume);
+- LibHalDrive* halDrive = 0;
++ TQString driveUdi = hal_volume_get_storage_device_udi(halVolume);
++ HalDrive* halDrive = 0;
+ if ( !driveUdi.isNull() )
+- halDrive = libhal_drive_from_udi(m_halContext, driveUdi.ascii());
++ halDrive = hal_drive_from_udi(m_halContext, driveUdi.ascii());
+ if (!halDrive) {
+ // at times HAL sends an UnmountForced event before the device is removed
+- libhal_volume_free(halVolume);
++ hal_volume_free(halVolume);
+ return;
+ }
+
+ medium->setName(
+- generateName(libhal_volume_get_device_file(halVolume)) );
+-
+- LibHalVolume* halClearVolume = NULL;
+- if ( libhal_device_get_property_QString(m_halContext, udi, "volume.fsusage") == "crypto" )
+- {
+- kdDebug(1219) << "HALBackend::setVolumeProperties : crypto volume" << endl;
++ generateName(hal_volume_get_device_file(halVolume)) );
+
+- medium->setEncrypted(true);
+- char* clearUdi = libhal_volume_crypto_get_clear_volume_udi(m_halContext, halVolume);
+- TQString clearUdiString;
+- if (clearUdi != NULL) {
+- kdDebug(1219) << "HALBackend::setVolumeProperties : crypto clear volume avail - " << clearUdi << endl;
+- halClearVolume = libhal_volume_from_udi(m_halContext, clearUdi);
+- // ignore if halClearVolume is NULL -> just not decrypted in this case
+- clearUdiString = clearUdi;
+- libhal_free_string(clearUdi);
+- }
+-
+- if (halClearVolume)
+- medium->mountableState(
+- libhal_volume_get_device_file(halVolume), /* Device node */
+- clearUdiString,
+- libhal_volume_get_mount_point(halClearVolume), /* Mount point */
+- libhal_volume_get_fstype(halClearVolume), /* Filesystem type */
+- libhal_volume_is_mounted(halClearVolume) ); /* Mounted ? */
+- else
+- medium->mountableState(
+- libhal_volume_get_device_file(halVolume), /* Device node */
+- TQString::null,
+- TQString::null, /* Mount point */
+- TQString::null, /* Filesystem type */
+- false ); /* Mounted ? */
+- }
+- else
+- {
+- kdDebug(1219) << "HALBackend::setVolumeProperties : normal volume" << endl;
+- medium->mountableState(
+- libhal_volume_get_device_file(halVolume), /* Device node */
+- libhal_volume_get_mount_point(halVolume), /* Mount point */
+- libhal_volume_get_fstype(halVolume), /* Filesystem type */
+- libhal_volume_is_mounted(halVolume) ); /* Mounted ? */
+- }
++ kdDebug(1219) << "HALBackend::setVolumeProperties : normal volume" << endl;
++ medium->mountableState(
++ hal_volume_get_device_file(halVolume), /* Device node */
++ hal_volume_get_mount_point(halVolume), /* Mount point */
++ hal_volume_get_fstype(halVolume), /* Filesystem type */
++ hal_volume_is_mounted(halVolume) ); /* Mounted ? */
+
+
+- char* name = libhal_volume_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy);
++ char* name = hal_volume_policy_compute_display_name(halDrive, halVolume, m_halStoragePolicy);
+ TQString volume_name = TQString::fromUtf8(name);
+ TQString media_name = volume_name;
+ medium->setLabel(media_name);
+ free(name);
+
+ TQString mimeType;
+- if (libhal_volume_is_disc(halVolume))
++ if (hal_volume_is_disc(halVolume))
+ {
+ mimeType = "media/cdrom" + MOUNT_SUFFIX;
+
+- LibHalVolumeDiscType discType = libhal_volume_get_disc_type(halVolume);
+- if ((discType == LIBHAL_VOLUME_DISC_TYPE_CDROM) ||
+- (discType == LIBHAL_VOLUME_DISC_TYPE_CDR) ||
+- (discType == LIBHAL_VOLUME_DISC_TYPE_CDRW))
+- if (libhal_volume_disc_is_blank(halVolume))
++ HalVolumeDiscType discType = hal_volume_get_disc_type(halVolume);
++ if ((discType == HAL_VOLUME_DISC_TYPE_CDROM) ||
++ (discType == HAL_VOLUME_DISC_TYPE_CDR) ||
++ (discType == HAL_VOLUME_DISC_TYPE_CDRW))
++ if (hal_volume_disc_is_blank(halVolume))
+ {
+ mimeType = "media/blankcd";
+ medium->unmountableState("");
+@@ -565,10 +491,10 @@
+ else
+ mimeType = "media/cdwriter" + MOUNT_SUFFIX;
+
+- if ((discType == LIBHAL_VOLUME_DISC_TYPE_DVDROM) || (discType == LIBHAL_VOLUME_DISC_TYPE_DVDRAM) ||
+- (discType == LIBHAL_VOLUME_DISC_TYPE_DVDR) || (discType == LIBHAL_VOLUME_DISC_TYPE_DVDRW) ||
+- (discType == LIBHAL_VOLUME_DISC_TYPE_DVDPLUSR) || (discType == LIBHAL_VOLUME_DISC_TYPE_DVDPLUSRW) )
+- if (libhal_volume_disc_is_blank(halVolume))
++ if ((discType == HAL_VOLUME_DISC_TYPE_DVDROM) || (discType == HAL_VOLUME_DISC_TYPE_DVDRAM) ||
++ (discType == HAL_VOLUME_DISC_TYPE_DVDR) || (discType == HAL_VOLUME_DISC_TYPE_DVDRW) ||
++ (discType == HAL_VOLUME_DISC_TYPE_DVDPLUSR) || (discType == HAL_VOLUME_DISC_TYPE_DVDPLUSRW) )
++ if (hal_volume_disc_is_blank(halVolume))
+ {
+ mimeType = "media/blankdvd";
+ medium->unmountableState("");
+@@ -576,16 +502,16 @@
+ else
+ mimeType = "media/dvd" + MOUNT_SUFFIX;
+
+- if (libhal_volume_disc_has_audio(halVolume) && !libhal_volume_disc_has_data(halVolume))
++ if (hal_volume_disc_has_audio(halVolume) && !hal_volume_disc_has_data(halVolume))
+ {
+ mimeType = "media/audiocd";
+- medium->unmountableState( "audiocd:/?device=" + TQString(libhal_volume_get_device_file(halVolume)) );
++ medium->unmountableState( "audiocd:/?device=" + TQString(hal_volume_get_device_file(halVolume)) );
+ }
+
+ medium->setIconName(TQString::null);
+
+ /* check if the disc id a vcd or a video dvd */
+- DiscType type = LinuxCDPolling::identifyDiscType(libhal_volume_get_device_file(halVolume));
++ DiscType type = LinuxCDPolling::identifyDiscType(hal_volume_get_device_file(halVolume));
+ switch (type)
+ {
+ case DiscType::VCD:
+@@ -603,24 +529,24 @@
+ {
+ mimeType = "media/hdd" + MOUNT_SUFFIX;
+ medium->setIconName(TQString::null); // reset icon
+- if (libhal_drive_is_hotpluggable(halDrive))
++ if (hal_drive_is_hotpluggable(halDrive))
+ {
+ mimeType = "media/removable" + MOUNT_SUFFIX;
+ medium->needMounting();
+- switch (libhal_drive_get_type(halDrive)) {
+- case LIBHAL_DRIVE_TYPE_COMPACT_FLASH:
++ switch (hal_drive_get_type(halDrive)) {
++ case HAL_DRIVE_TYPE_COMPACT_FLASH:
+ medium->setIconName("compact_flash" + MOUNT_ICON_SUFFIX);
+ break;
+- case LIBHAL_DRIVE_TYPE_MEMORY_STICK:
++ case HAL_DRIVE_TYPE_MEMORY_STICK:
+ medium->setIconName("memory_stick" + MOUNT_ICON_SUFFIX);
+ break;
+- case LIBHAL_DRIVE_TYPE_SMART_MEDIA:
++ case HAL_DRIVE_TYPE_SMART_MEDIA:
+ medium->setIconName("smart_media" + MOUNT_ICON_SUFFIX);
+ break;
+- case LIBHAL_DRIVE_TYPE_SD_MMC:
++ case HAL_DRIVE_TYPE_SD_MMC:
+ medium->setIconName("sd_mmc" + MOUNT_ICON_SUFFIX);
+ break;
+- case LIBHAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER:
++ case HAL_DRIVE_TYPE_PORTABLE_AUDIO_PLAYER:
+ {
+ medium->setIconName("ipod" + MOUNT_ICON_SUFFIX);
+
+@@ -628,25 +554,25 @@
+ KProtocolInfo::isKnownProtocol( TQString("ipod") ) )
+ {
+ medium->unmountableState( "ipod:/" );
+- medium->mountableState( libhal_volume_is_mounted(halVolume) );
++ medium->mountableState( hal_volume_is_mounted(halVolume) );
+ }
+ break;
+ }
+- case LIBHAL_DRIVE_TYPE_CAMERA:
++ case HAL_DRIVE_TYPE_CAMERA:
+ {
+ mimeType = "media/camera" + MOUNT_SUFFIX;
+- const char *physdev = libhal_drive_get_physical_device_udi(halDrive);
++ const char *physdev = hal_drive_get_physical_device_udi(halDrive);
+ // get model from camera
+- if (physdev && libhal_device_query_capability(m_halContext, physdev, "camera", NULL))
++ if (physdev && hal_device_query_capability(m_halContext, physdev, "camera"))
+ {
+- if (libhal_device_property_exists(m_halContext, physdev, "usb_device.product", NULL))
++ if (hal_device_property_exists(m_halContext, physdev, "usb_device.product"))
+ medium->setLabel(libhal_device_get_property_QString(m_halContext, physdev, "usb_device.product"));
+- else if (libhal_device_property_exists(m_halContext, physdev, "usb.product", NULL))
++ else if (hal_device_property_exists(m_halContext, physdev, "usb.product"))
+ medium->setLabel(libhal_device_get_property_QString(m_halContext, physdev, "usb.product"));
+ }
+ break;
+ }
+- case LIBHAL_DRIVE_TYPE_TAPE:
++ case HAL_DRIVE_TYPE_TAPE:
+ medium->setIconName(TQString::null); //FIXME need icon
+ break;
+ default:
+@@ -661,8 +587,8 @@
+ }
+ medium->setMimeType(mimeType);
+
+- libhal_drive_free(halDrive);
+- libhal_volume_free(halVolume);
++ hal_drive_free(halDrive);
++ hal_volume_free(halVolume);
+ }
+
+ bool HALBackend::setFstabProperties( Medium *medium )
+@@ -713,10 +639,10 @@
+
+ const char* udi = medium->id().ascii();
+ /* Check if the device still exists */
+- if (!libhal_device_exists(m_halContext, udi, NULL))
++ if (!hal_device_exists(m_halContext, udi))
+ return false;
+
+- LibHalDrive* halDrive = libhal_drive_from_udi(m_halContext, udi);
++ HalDrive* halDrive = hal_drive_from_udi(m_halContext, udi);
+ if (!halDrive)
+ return false;
+
+@@ -724,21 +650,21 @@
+
+ if (drive_type == "zip") {
+ int numVolumes;
+- char** volumes = libhal_drive_find_all_volumes(m_halContext, halDrive, &numVolumes);
+- libhal_free_string_array(volumes);
++ char** volumes = hal_drive_find_all_volumes(m_halContext, halDrive, &numVolumes);
++ hal_free_string_array(volumes);
+ kdDebug(1219) << " found " << numVolumes << " volumes" << endl;
+ if (numVolumes)
+ {
+- libhal_drive_free(halDrive);
++ hal_drive_free(halDrive);
+ return false;
+ }
+ }
+
+- medium->setName( generateName(libhal_drive_get_device_file(halDrive)) );
++ medium->setName( generateName(hal_drive_get_device_file(halDrive)) );
+ medium->setLabel(i18n("Unknown Drive"));
+
+ // HAL hates floppies - so we have to do it twice ;(
+- medium->mountableState(libhal_drive_get_device_file(halDrive), TQString::null, TQString::null, false);
++ medium->mountableState(hal_drive_get_device_file(halDrive), TQString::null, TQString::null, false);
+ setFloppyMountState(medium);
+
+ if (drive_type == "floppy")
+@@ -762,7 +688,7 @@
+
+ medium->setIconName(TQString::null);
+
+- libhal_drive_free(halDrive);
++ hal_drive_free(halDrive);
+
+ return true;
+ }
+@@ -796,7 +722,7 @@
+
+ const char* udi = medium->id().ascii();
+ /* Check if the device still exists */
+- if (!libhal_device_exists(m_halContext, udi, NULL))
++ if (!hal_device_exists(m_halContext, udi))
+ return;
+
+ /** @todo find name */
+@@ -804,25 +730,25 @@
+
+ TQString device = "camera:/";
+
+- char *cam = libhal_device_get_property_string(m_halContext, udi, "camera.libgphoto2.name", NULL);
++ char *cam = hal_device_get_property_string(m_halContext, udi, "camera.libgphoto2.name");
+ DBusError error;
+ dbus_error_init(&error);
+ if (cam &&
+- libhal_device_property_exists(m_halContext, udi, "usb.linux.device_number", NULL) &&
+- libhal_device_property_exists(m_halContext, udi, "usb.bus_number", NULL))
++ hal_device_property_exists(m_halContext, udi, "usb.linux.device_number") &&
++ hal_device_property_exists(m_halContext, udi, "usb.bus_number"))
+ device.sprintf("camera://%s@[usb:%03d,%03d]/", cam,
+- libhal_device_get_property_int(m_halContext, udi, "usb.bus_number", &error),
+- libhal_device_get_property_int(m_halContext, udi, "usb.linux.device_number", &error));
++ hal_device_get_property_int(m_halContext, udi, "usb.bus_number"),
++ hal_device_get_property_int(m_halContext, udi, "usb.linux.device_number"));
+
+- libhal_free_string(cam);
++ hal_free_string(cam);
+
+ /** @todo find the rest of this URL */
+ medium->unmountableState(device);
+ medium->setMimeType("media/gphoto2camera");
+ medium->setIconName(TQString::null);
+- if (libhal_device_property_exists(m_halContext, udi, "usb_device.product", NULL))
++ if (hal_device_property_exists(m_halContext, udi, "usb_device.product"))
+ medium->setLabel(libhal_device_get_property_QString(m_halContext, udi, "usb_device.product"));
+- else if (libhal_device_property_exists(m_halContext, udi, "usb.product", NULL))
++ else if (hal_device_property_exists(m_halContext, udi, "usb.product"))
+ medium->setLabel(libhal_device_get_property_QString(m_halContext, udi, "usb.product"));
+ else
+ medium->setLabel(i18n("Camera"));
+@@ -837,6 +763,14 @@
+ ** HAL CALL-BACKS **
+ ******************************************/
+
++void HALBackend::hal_main_loop_integration(LibHalContext *ctx,
++ DBusConnection *dbus_connection)
++{
++ kdDebug(1219) << "HALBackend::hal_main_loop_integration" << endl;
++ Q_UNUSED(ctx);
++ s_HALBackend->MainLoopIntegration(dbus_connection);
++}
++
+ void HALBackend::hal_device_added(LibHalContext *ctx, const char *udi)
+ {
+ kdDebug(1219) << "HALBackend::hal_device_added " << udi << endl;
+@@ -863,7 +797,7 @@
+
+ void HALBackend::hal_device_condition(LibHalContext *ctx, const char *udi,
+ const char *condition_name,
+- const char* message
++ DBusMessage* message
+ )
+ {
+ kdDebug(1219) << "HALBackend::hal_device_condition " << udi << " -- " << condition_name << endl;
+@@ -875,24 +809,24 @@
+ TQStringList HALBackend::getHALmountoptions(TQString udi)
+ {
+ const char* _ppt_string;
+- LibHalVolume* volume;
+- LibHalDrive* drive;
++ HalVolume* volume;
++ HalDrive* drive;
+
+ TQString _ppt_TQString;
+
+- volume = libhal_volume_from_udi( m_halContext, udi.latin1() );
++ volume = hal_volume_from_udi( m_halContext, udi.latin1() );
+ if( volume )
+- drive = libhal_drive_from_udi( m_halContext, libhal_volume_get_storage_device_udi( volume ) );
++ drive = hal_drive_from_udi( m_halContext, hal_volume_get_storage_device_udi( volume ) );
+ else
+- drive = libhal_drive_from_udi( m_halContext, udi.latin1() );
++ drive = hal_drive_from_udi( m_halContext, udi.latin1() );
+
+ if( !drive )
+ return TQString::null;
+
+ if( volume )
+- _ppt_string = libhal_volume_policy_get_mount_options ( drive, volume, NULL );
++ _ppt_string = hal_volume_policy_get_mount_options ( drive, volume, NULL );
+ else
+- _ppt_string = libhal_drive_policy_get_mount_options ( drive, NULL );
++ _ppt_string = hal_drive_policy_get_mount_options ( drive, NULL );
+
+ _ppt_TQString = TQString(_ppt_string ? _ppt_string : "");
+
+@@ -908,24 +842,6 @@
+ return TQStringList(); // not handled by HAL - fstab entry
+
+ TQString volume_udi = name;
+- if (medium->isEncrypted()) {
+- // see if we have a clear volume
+- LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, medium->id().latin1());
+- if (halVolume) {
+- char* clearUdi = libhal_volume_crypto_get_clear_volume_udi(m_halContext, halVolume);
+- if (clearUdi != NULL) {
+- volume_udi = clearUdi;
+- libhal_free_string(clearUdi);
+- } else {
+- // if not decrypted yet then no mountoptions
+- return TQStringList();
+- }
+- libhal_volume_free(halVolume);
+- } else {
+- // strange...
+- return TQStringList();
+- }
+- }
+
+ KConfig config("mediamanagerrc");
+
+@@ -939,17 +855,7 @@
+ if (use_defaults)
+ config.setGroup("DefaultOptions");
+
+- char ** array = libhal_device_get_property_strlist(m_halContext, volume_udi.latin1(), "volume.mount.valid_options", NULL);
+ TQMap<TQString,bool> valids;
+-
+- for (int index = 0; array && array[index]; ++index) {
+- TQString t = array[index];
+- if (t.endsWith("="))
+- t = t.left(t.length() - 1);
+- valids[t] = true;
+- kdDebug() << "valid " << t << endl;
+- }
+- libhal_free_string_array(array);
+ TQStringList result;
+ TQString tmp;
+
+@@ -963,8 +869,8 @@
+
+ bool removable = false;
+ if ( !drive_udi.isNull() )
+- removable = libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable", NULL)
+- || libhal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable", NULL);
++ removable = hal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.removable")
++ || hal_device_get_property_bool(m_halContext, drive_udi.latin1(), "storage.hotpluggable");
+
+ bool value;
+ if (use_defaults)
+@@ -979,11 +885,11 @@
+ config.setGroup(current_group);
+ }
+
+- if (libhal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_blank", NULL)
+- || libhal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_vcd", NULL)
+- || libhal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_svcd", NULL)
+- || libhal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_videodvd", NULL)
+- || libhal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.has_audio", NULL))
++ if (hal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_blank")
++ || hal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_vcd")
++ || hal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_svcd")
++ || hal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.is_videodvd")
++ || hal_device_get_property_bool(m_halContext, volume_udi.latin1(), "volume.disc.has_audio"))
+ value = false;
+
+ result << TQString("automount=%1").arg(value ? "true" : "false");
+@@ -1540,29 +1446,6 @@
+ }
+ options[noptions] = NULL;
+
+- TQString qerror = i18n("Cannot mount encrypted drives!");
+-
+- if (!medium->isEncrypted()) {
+- // normal volume
+- qerror = mount_priv(medium->id().latin1(), mount_point.utf8(), options, noptions, dbus_connection);
+- } else {
+- // see if we have a clear volume
+- LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, medium->id().latin1());
+- if (halVolume) {
+- char* clearUdi = libhal_volume_crypto_get_clear_volume_udi(m_halContext, halVolume);
+- if (clearUdi != NULL) {
+- qerror = mount_priv(clearUdi, mount_point.utf8(), options, noptions, dbus_connection);
+- libhal_free_string(clearUdi);
+- }
+- libhal_volume_free(halVolume);
+- }
+- }
+-
+- if (!qerror.isEmpty()) {
+- kdError() << "mounting " << medium->id() << " returned " << qerror << endl;
+- return qerror;
+- }
+-
+ medium->setHalMounted(true);
+ ResetProperties(medium->id().latin1());
+
+@@ -1584,11 +1467,11 @@
+ if (!medium)
+ { // now we get fancy: if the udi is no volume, it _might_ be a device with only one
+ // volume on it (think CDs) - so we're so nice to the caller to unmount that volume
+- LibHalDrive* halDrive = libhal_drive_from_udi(m_halContext, _udi.latin1());
++ HalDrive* halDrive = hal_drive_from_udi(m_halContext, _udi.latin1());
+ if (halDrive)
+ {
+ int numVolumes;
+- char** volumes = libhal_drive_find_all_volumes(m_halContext, halDrive, &numVolumes);
++ char** volumes = hal_drive_find_all_volumes(m_halContext, halDrive, &numVolumes);
+ if (numVolumes == 1)
+ medium = m_mediaList.findById( volumes[0] );
+ }
+@@ -1626,19 +1509,8 @@
+ const char *options[2];
+ TQString udi = TQString::null;
+
+- if (!medium->isEncrypted()) {
+- // normal volume
+- udi = medium->id();
+- } else {
+- // see if we have a clear volume
+- LibHalVolume* halVolume = libhal_volume_from_udi(m_halContext, medium->id().latin1());
+- if (halVolume) {
+- char *clearUdi = libhal_volume_crypto_get_clear_volume_udi(m_halContext, halVolume);
+- udi = clearUdi;
+- libhal_free_string(clearUdi);
+- libhal_volume_free(halVolume);
+- }
+- }
++ udi = medium->id();
++
+ if (udi.isNull()) {
+ kdDebug() << "unmount failed: no udi" << endl;
+ return i18n("Internal Error");
+@@ -1748,111 +1620,4 @@
+ return TQString();
+ }
+
+-TQString HALBackend::decrypt(const TQString &_udi, const TQString &password)
+-{
+- const Medium* medium = m_mediaList.findById(_udi);
+- if (!medium)
+- return i18n("No such medium: %1").arg(_udi);
+-
+- if (!medium->isEncrypted() || !medium->clearDeviceUdi().isNull())
+- return TQString();
+-
+- const char *udi = medium->id().latin1();
+- DBusMessage *msg = NULL;
+- DBusMessage *reply = NULL;
+- DBusError error;
+-
+- kdDebug() << "Setting up " << udi << " for crypto\n" <<endl;
+-
+- msg = dbus_message_new_method_call ("org.freedesktop.Hal", udi,
+- "org.freedesktop.Hal.Device.Volume.Crypto",
+- "Setup");
+- if (msg == NULL) {
+- kdDebug() << "decrypt failed for " << udi << ": could not create dbus message\n";
+- return i18n("Internal Error");
+- }
+-
+- TQCString pwdUtf8 = password.utf8();
+- const char *pwd_utf8 = pwdUtf8;
+- if (!dbus_message_append_args (msg, DBUS_TYPE_STRING, &pwd_utf8, DBUS_TYPE_INVALID)) {
+- kdDebug() << "decrypt failed for " << udi << ": could not append args to dbus message\n";
+- dbus_message_unref (msg);
+- return i18n("Internal Error");
+- }
+-
+- dbus_error_init (&error);
+- if (!(reply = dbus_connection_send_with_reply_and_block (dbus_connection, msg, -1, &error)) ||
+- dbus_error_is_set (&error))
+- {
+- TQString qerror = i18n("Internal Error");
+- kdDebug() << "decrypt failed for " << udi << ": " << error.name << " " << error.message << endl;
+- if (strcmp (error.name, "org.freedesktop.Hal.Device.Volume.Crypto.SetupPasswordError") == 0) {
+- qerror = i18n("Wrong password");
+- }
+- dbus_error_free (&error);
+- dbus_message_unref (msg);
+- while (dbus_connection_dispatch(dbus_connection) == DBUS_DISPATCH_DATA_REMAINS) ;
+- return qerror;
+- }
+-
+- dbus_message_unref (msg);
+- dbus_message_unref (reply);
+-
+- while (dbus_connection_dispatch(dbus_connection) == DBUS_DISPATCH_DATA_REMAINS) ;
+-
+- return TQString();
+-}
+-
+-TQString HALBackend::undecrypt(const TQString &_udi)
+-{
+- const Medium* medium = m_mediaList.findById(_udi);
+- if (!medium)
+- return i18n("No such medium: %1").arg(_udi);
+-
+- if (!medium->isEncrypted() || medium->clearDeviceUdi().isNull())
+- return TQString();
+-
+- const char *udi = medium->id().latin1();
+- DBusMessage *msg = NULL;
+- DBusMessage *reply = NULL;
+- DBusError error;
+-
+- kdDebug() << "Tear down " << udi << "\n" <<endl;
+-
+- msg = dbus_message_new_method_call ("org.freedesktop.Hal", udi,
+- "org.freedesktop.Hal.Device.Volume.Crypto",
+- "Teardown");
+- if (msg == NULL) {
+- kdDebug() << "teardown failed for " << udi << ": could not create dbus message\n";
+- return i18n("Internal Error");
+- }
+-
+- if (!dbus_message_append_args (msg, DBUS_TYPE_INVALID)) {
+- kdDebug() << "teardown failed for " << udi << ": could not append args to dbus message\n";
+- dbus_message_unref (msg);
+- return i18n("Internal Error");
+- }
+-
+- dbus_error_init (&error);
+- if (!(reply = dbus_connection_send_with_reply_and_block (dbus_connection, msg, -1, &error)) ||
+- dbus_error_is_set (&error))
+- {
+- TQString qerror = i18n("Internal Error");
+- kdDebug() << "teardown failed for " << udi << ": " << error.name << " " << error.message << endl;
+- dbus_error_free (&error);
+- dbus_message_unref (msg);
+- while (dbus_connection_dispatch(dbus_connection) == DBUS_DISPATCH_DATA_REMAINS) ;
+- return qerror;
+- }
+-
+- dbus_message_unref (msg);
+- dbus_message_unref (reply);
+-
+- ResetProperties(udi);
+-
+- while (dbus_connection_dispatch(dbus_connection) == DBUS_DISPATCH_DATA_REMAINS) ;
+-
+- return TQString();
+-}
+-
+ #include "halbackend.moc"
+--- kdebase/kioslave/media/mediamanager/halbackend.h.hal04 2012-09-08 14:15:10.324373357 -0400
++++ kdebase/kioslave/media/mediamanager/halbackend.h 2012-09-08 14:27:34.564678553 -0400
+@@ -85,8 +85,6 @@
+ TQString mount(const TQString &id);
+ TQString mount(const Medium *medium);
+ TQString unmount(const TQString &id);
+- TQString decrypt(const TQString &id, const TQString &password);
+- TQString undecrypt(const TQString &id);
+
+ private:
+ /**
+@@ -152,6 +150,13 @@
+
+ /* Hal call-backs -- from gvm*/
+ public:
++ /** Invoked by libhal for integration with our mainloop.
++ *
++ * @param ctx LibHal context
++ * @param dbus_connection D-BUS connection to integrate
++ */
++ static void hal_main_loop_integration(LibHalContext *ctx, DBusConnection *dbus_connection);
++
+ /** Invoked when a device is added to the Global Device List.
+ *
+ * @param ctx LibHal context
+@@ -184,7 +189,7 @@
+ */
+ static void hal_device_condition(LibHalContext *ctx, const char *udi,
+ const char *condition_name,
+- const char* message
++ DBusMessage* message
+ );
+
+ TQStringList getHALmountoptions(TQString udi);
+@@ -196,9 +201,14 @@
+ LibHalContext* m_halContext;
+
+ /**
++ * Structure defining the hal callback function for devices events
++ */
++ LibHalFunctions m_halFunctions;
++
++ /**
+ * libhal-storage HAL policy, e.g. for icon names
+ */
+- LibHalStoragePolicy* m_halStoragePolicy;
++ HalStoragePolicy* m_halStoragePolicy;
+
+ /**
+ * The DBus-Qt bindings connection for mainloop integration
diff --git a/redhat/tdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch b/redhat/tdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch
new file mode 100644
index 000000000..8c8ab415f
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-tsak_keyboard_hotplug.patch
@@ -0,0 +1,641 @@
+commit 5f413b26ebaab8a6478427e4125bda628058ff85
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1327015159 -0600
+
+ Add keyboard hotplug (add/remove) support to tsak
+ This closes Bug 587
+ Fix warning in kompmgr
+
+diff --git a/tsak/CMakeLists.txt b/tsak/CMakeLists.txt
+index 6aa5b49..4490636 100644
+--- a/tsak/CMakeLists.txt
++++ b/tsak/CMakeLists.txt
+@@ -23,5 +23,6 @@ link_directories(
+
+ tde_add_executable( tsak
+ SOURCES main.cpp
++ LINK udev
+ DESTINATION ${BIN_INSTALL_DIR}
+ )
+diff --git a/tsak/main.cpp b/tsak/main.cpp
+index 050d6c0..df485a0 100644
+--- a/tsak/main.cpp
++++ b/tsak/main.cpp
+@@ -1,8 +1,8 @@
+ /*
+ Copyright 2010 Adam Marchetti
+-Copyright 2011 Timothy Pearson <kb9vqf@pearsoncomputing.net>
++Copyright 2011-2012 Timothy Pearson <kb9vqf@pearsoncomputing.net>
+
+-This file is part of tsak.
++This file is part of tsak, the TDE Secure Attention Key daemon
+
+ tsak is free software: you can redistribute it and/or modify
+ it under the terms of the GNU General Public License as
+@@ -35,9 +35,15 @@ License along with tsak. If not, see http://www.gnu.org/licenses/.
+ #include <sys/time.h>
+ #include <termios.h>
+ #include <signal.h>
++#include <libudev.h>
++#include <libgen.h>
+
+ #define FIFO_DIR "/tmp/ksocket-global"
+ #define FIFO_FILE_OUT "/tmp/ksocket-global/tsak"
++#define FIFO_LOCKFILE_OUT "/tmp/ksocket-global/tsak.lock"
++
++#define MAX_KEYBOARDS 64
++#define MAX_INPUT_NODE 128
+
+ #define TestBit(bit, array) (array[(bit) / 8] & (1 << ((bit) % 8)))
+
+@@ -46,9 +52,18 @@ typedef unsigned char byte;
+ bool mPipeOpen_out = false;
+ int mPipe_fd_out = -1;
+
++int mPipe_lockfd_out = -1;
++
++char filename[32];
++char key_bitmask[(KEY_MAX + 7) / 8];
++
+ struct sigaction usr_action;
+ sigset_t block_mask;
+
++int keyboard_fd_num;
++int keyboard_fds[MAX_KEYBOARDS];
++int child_pids[MAX_KEYBOARDS];
++
+ const char *keycode[256] =
+ {
+ "", "<esc>", "1", "2", "3", "4", "5", "6", "7", "8",
+@@ -79,6 +94,26 @@ int bit_set(size_t i, const byte* a)
+ return a[i/CHAR_BIT] & (1 << i%CHAR_BIT);
+ }
+
++// --------------------------------------------------------------------------------------
++// Useful function from Stack Overflow
++// http://stackoverflow.com/questions/874134/find-if-string-endswith-another-string-in-c
++// --------------------------------------------------------------------------------------
++/* returns 1 iff str ends with suffix */
++int str_ends_with(const char * str, const char * suffix) {
++
++ if( str == NULL || suffix == NULL )
++ return 0;
++
++ size_t str_len = strlen(str);
++ size_t suffix_len = strlen(suffix);
++
++ if(suffix_len > str_len)
++ return 0;
++
++ return 0 == strncmp( str + str_len - suffix_len, suffix, suffix_len );
++}
++// --------------------------------------------------------------------------------------
++
+ /* Assign features (supported axes and keys) of the physical input device (devin)
+ * to the virtual input device (devout) */
+ static void copy_features(int devin, int devout)
+@@ -111,26 +146,40 @@ static void copy_features(int devin, int devout)
+ }
+ }
+
+-int find_keyboard() {
++int find_keyboards() {
+ int i, j;
+ int fd;
+- char filename[32];
+- char key_bitmask[(KEY_MAX + 7) / 8];
++ char name[256] = "Unknown";
++
++ keyboard_fd_num = 0;
++ for (i=0; i<MAX_KEYBOARDS; i++) {
++ keyboard_fds[i] = 0;
++ }
+
+- for (i=0; i<32; i++) {
++ for (i=0; i<MAX_INPUT_NODE; i++) {
+ snprintf(filename,sizeof(filename), "/dev/input/event%d", i);
+-
++
+ fd = open(filename, O_RDWR|O_SYNC);
+ ioctl(fd, EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask);
+-
+- /* We assume that anything that has an alphabetic key in the
+- QWERTYUIOP range in it is the main keyboard. */
+- for (j = KEY_Q; j <= KEY_P; j++) {
+- if (TestBit(j, key_bitmask))
+- return fd;
++
++ // Ensure that we do not detect our own tsak faked keyboards
++ ioctl (fd, EVIOCGNAME (sizeof (name)), name);
++ if (str_ends_with(name, "+tsak") == 0) {
++ /* We assume that anything that has an alphabetic key in the
++ QWERTYUIOP range in it is the main keyboard. */
++ for (j = KEY_Q; j <= KEY_P; j++) {
++ if (TestBit(j, key_bitmask)) {
++ keyboard_fds[keyboard_fd_num] = fd;
++ }
++ }
++ }
++
++ if (keyboard_fds[keyboard_fd_num] == 0) {
++ close (fd);
++ }
++ else {
++ keyboard_fd_num++;
+ }
+-
+- close (fd);
+ }
+ return 0;
+ }
+@@ -144,6 +193,12 @@ void tearDownPipe()
+ }
+ }
+
++void tearDownLockingPipe()
++{
++ close(mPipe_lockfd_out);
++ unlink(FIFO_LOCKFILE_OUT);
++}
++
+ bool setFileLock(int fd, bool close_on_failure)
+ {
+ struct flock fl;
+@@ -154,8 +209,8 @@ bool setFileLock(int fd, bool close_on_failure)
+ fl.l_len = 1;
+
+ // Set the exclusive file lock
+- if (fcntl(mPipe_fd_out, F_SETLK, &fl) == -1) {
+- close(mPipe_fd_out);
++ if (fcntl(fd, F_SETLK, &fl) == -1) {
++ close(fd);
+ return false;
+ }
+
+@@ -171,7 +226,7 @@ bool checkFileLock()
+ fl.l_whence = SEEK_SET;
+ fl.l_len = 0;
+
+- int fd = open(FIFO_FILE_OUT, O_RDWR | O_NONBLOCK);
++ int fd = open(FIFO_LOCKFILE_OUT, O_RDWR | O_NONBLOCK);
+ fcntl(fd, F_GETLK, &fl); /* Overwrites lock structure with preventors. */
+
+ if (fd > -1) {
+@@ -202,6 +257,71 @@ bool setupPipe()
+ return setFileLock(mPipe_fd_out, true);
+ }
+
++bool setupLockingPipe()
++{
++ /* Create the FIFOs if they do not exist */
++ umask(0);
++ mkdir(FIFO_DIR,0644);
++
++ mknod(FIFO_LOCKFILE_OUT, S_IFIFO|0600, 0);
++ chmod(FIFO_LOCKFILE_OUT, 0600);
++
++ mPipe_lockfd_out = open(FIFO_LOCKFILE_OUT, O_RDWR | O_NONBLOCK);
++ if (mPipe_lockfd_out > -1) {
++ // Set the exclusive file lock
++ return setFileLock(mPipe_lockfd_out, true);
++ }
++
++ return false;
++}
++
++void broadcast_sak()
++{
++ // Let anyone listening to our interface know that an SAK keypress was received
++ // I highly doubt there are more than 255 VTs active at once...
++ int i;
++ for (i=0;i<255;i++) {
++ write(mPipe_fd_out, "SAK\n\r", 6);
++ }
++}
++
++void restart_tsak()
++{
++ int i;
++
++ fprintf(stderr, "Forcibly terminating...\n");
++
++ // Close down all child processes
++ for (i=0; i<MAX_KEYBOARDS; i++) {
++ if (child_pids[i] != 0) {
++ kill(child_pids[i], SIGKILL);
++ }
++ }
++
++ // Wait for process termination
++ sleep(1);
++
++ // Release all exclusive keyboard locks
++ for (int current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
++ if(ioctl(keyboard_fds[current_keyboard], EVIOCGRAB, 0) < 0) {
++ fprintf(stderr, "Failed to release exclusive input device lock");
++ }
++ close(keyboard_fds[current_keyboard]);
++ }
++
++#if 1
++ // Restart now
++ // Note that the execl function never returns
++ char me[2048];
++ int chars = readlink("/proc/self/exe", me, sizeof(me));
++ me[chars] = 0;
++ me[2047] = 0;
++ execl(me, basename(me), (char*)NULL);
++#else
++ _exit(0);
++#endif
++}
++
+ class PipeHandler
+ {
+ public:
+@@ -215,7 +335,7 @@ PipeHandler::PipeHandler()
+
+ PipeHandler::~PipeHandler()
+ {
+- tearDownPipe();
++ tearDownLockingPipe();
+ }
+
+ int main (int argc, char *argv[])
+@@ -223,13 +343,19 @@ int main (int argc, char *argv[])
+ struct input_event ev[64];
+ struct input_event event;
+ struct uinput_user_dev devinfo={0};
+- int fd, devout, rd, value, size = sizeof (struct input_event);
++ int devout[MAX_KEYBOARDS], rd, i, value, size = sizeof (struct input_event);
+ char name[256] = "Unknown";
+ bool ctrl_down = false;
+ bool alt_down = false;
+ bool hide_event = false;
+ bool established = false;
+ bool testrun = false;
++ int current_keyboard;
++ bool can_proceed;
++
++ for (i=0; i<MAX_KEYBOARDS; i++) {
++ child_pids[i] = 0;
++ }
+
+ if (argc == 2) {
+ if (strcmp(argv[1], "checkactive") == 0) {
+@@ -239,7 +365,11 @@ int main (int argc, char *argv[])
+
+ // Check for existing file locks
+ if (!checkFileLock()) {
+- fprintf(stderr, "Another instance of this program is already running\n");
++ fprintf(stderr, "Another instance of this program is already running [1]\n");
++ return 8;
++ }
++ if (!setupLockingPipe()) {
++ fprintf(stderr, "Another instance of this program is already running [2]\n");
+ return 8;
+ }
+
+@@ -256,125 +386,227 @@ int main (int argc, char *argv[])
+ return 5;
+ }
+
+- // Open Device
+- fd = find_keyboard();
+- if (fd == -1) {
+- printf ("Could not find your keyboard!\n");
++ // Find keyboards
++ find_keyboards();
++ if (keyboard_fd_num == 0) {
++ printf ("Could not find any usable keyboard(s)!\n");
++ // Make sure everyone knows we physically can't detect a SAK
++ // Before we do this we broadcast one so that active dialogs are updated appropriately
++ // Also, we keep watching for a keyboard to be added via a forked child process...
++ broadcast_sak();
+ if (established)
+ sleep(1);
+- else
+- return 4;
++ else {
++ int i=fork();
++ if (i<0) return 12; // fork failed
++ if (i>0) {
++ return 4;
++ }
++ sleep(1);
++ restart_tsak();
++ }
+ }
+ else {
+- // Print Device Name
+- ioctl (fd, EVIOCGNAME (sizeof (name)), name);
+- fprintf(stderr, "Reading From : (%s)\n", name);
+-
+- // Create filtered virtual output device
+- devout=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
+- if (devout<0) {
+- perror("open(\"/dev/misc/uinput\")");
+- devout=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
+- }
+- if (devout<0) {
+- fprintf(stderr,"Unable to open /dev/uinput or /dev/misc/uinput (char device 10:223).\nPossible causes:\n 1) Device node does not exist\n 2) Kernel not compiled with evdev [INPUT_EVDEV] and uinput [INPUT_UINPUT] user level driver support\n 3) Permission denied.\n");
+- perror("open(\"/dev/uinput\")");
+- if (established)
+- sleep(1);
+- else
+- return 3;
+- }
+- else {
+- if(ioctl(fd, EVIOCGRAB, 2) < 0) {
+- close(fd);
+- fprintf(stderr, "Failed to grab exclusive input device lock");
++ fprintf(stderr, "Found %d keyboard(s)\n", keyboard_fd_num);
++
++ can_proceed = true;
++ for (current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
++ // Print Device Name
++ ioctl (keyboard_fds[current_keyboard], EVIOCGNAME (sizeof (name)), name);
++ fprintf(stderr, "Reading from keyboard: (%s)\n", name);
++
++ // Create filtered virtual output device
++ devout[current_keyboard]=open("/dev/misc/uinput",O_WRONLY|O_NONBLOCK);
++ if (devout[current_keyboard]<0) {
++ devout[current_keyboard]=open("/dev/uinput",O_WRONLY|O_NONBLOCK);
++ if (devout[current_keyboard]<0) {
++ perror("open(\"/dev/misc/uinput\")");
++ }
++ }
++ if (devout[current_keyboard]<0) {
++ can_proceed = false;
++ fprintf(stderr, "Unable to open /dev/uinput or /dev/misc/uinput (char device 10:223).\nPossible causes:\n 1) Device node does not exist\n 2) Kernel not compiled with evdev [INPUT_EVDEV] and uinput [INPUT_UINPUT] user level driver support\n 3) Permission denied.\n");
++ perror("open(\"/dev/uinput\")");
+ if (established)
+ sleep(1);
+ else
+- return 1;
++ return 3;
+ }
+- else {
+- ioctl(fd, EVIOCGNAME(UINPUT_MAX_NAME_SIZE), devinfo.name);
+- strncat(devinfo.name, "+tsak", UINPUT_MAX_NAME_SIZE-1);
+- fprintf(stderr, "%s\n", devinfo.name);
+- ioctl(fd, EVIOCGID, &devinfo.id);
+-
+- copy_features(fd, devout);
+- write(devout,&devinfo,sizeof(devinfo));
+- if (ioctl(devout,UI_DEV_CREATE)<0) {
+- fprintf(stderr,"Unable to create input device with UI_DEV_CREATE\n");
++ }
++
++ if (can_proceed == true) {
++ for (current_keyboard=0;current_keyboard<keyboard_fd_num;current_keyboard++) {
++ if(ioctl(keyboard_fds[current_keyboard], EVIOCGRAB, 2) < 0) {
++ close(keyboard_fds[current_keyboard]);
++ fprintf(stderr, "Failed to grab exclusive input device lock");
+ if (established)
+ sleep(1);
+ else
+- return 2;
++ return 1;
+ }
+ else {
+- fprintf(stderr,"Device created.\n");
+-
+- if (established == false) {
+- tearDownPipe();
+- int i=fork();
+- if (i<0) return 9; // fork failed
+- if (i>0) {
+- // close parent process
+- close(mPipe_fd_out);
+- return 0;
+- }
+- setupPipe();
++ ioctl(keyboard_fds[current_keyboard], EVIOCGNAME(UINPUT_MAX_NAME_SIZE), devinfo.name);
++ strncat(devinfo.name, "+tsak", UINPUT_MAX_NAME_SIZE-1);
++ fprintf(stderr, "%s\n", devinfo.name);
++ ioctl(keyboard_fds[current_keyboard], EVIOCGID, &devinfo.id);
++
++ copy_features(keyboard_fds[current_keyboard], devout[current_keyboard]);
++ write(devout[current_keyboard],&devinfo,sizeof(devinfo));
++ if (ioctl(devout[current_keyboard],UI_DEV_CREATE)<0) {
++ fprintf(stderr, "Unable to create input device with UI_DEV_CREATE\n");
++ if (established)
++ sleep(1);
++ else
++ return 2;
+ }
+-
+- established = true;
+-
+- if (testrun == true) {
+- return 0;
+- }
+-
+- while (1) {
+- if ((rd = read (fd, ev, size * 2)) < size) {
+- fprintf(stderr,"Read failed.\n");
+- break;
+- }
+-
+- value = ev[0].value;
+-
+- if (value != ' ' && ev[1].value == 0 && ev[1].type == 1){ // Read the key release event
+- if (keycode[(ev[1].code)]) {
+- if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = false;
+- if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = false;
++ else {
++ fprintf(stderr, "Device created.\n");
++
++ if (established == false) {
++ int i=fork();
++ if (i<0) return 9; // fork failed
++ if (i>0) {
++ child_pids[current_keyboard] = i;
++ continue;
+ }
++ setupLockingPipe();
+ }
+- if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Read the key press event
+- if (keycode[(ev[1].code)]) {
+- if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = true;
+- if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = true;
+- }
++
++ established = true;
++
++ if (testrun == true) {
++ return 0;
+ }
+
+- hide_event = false;
+- if (keycode[(ev[1].code)]) {
+- if (alt_down && ctrl_down && (strcmp(keycode[(ev[1].code)], "<del>") == 0)) {
+- hide_event = true;
++ while (1) {
++ if ((rd = read (keyboard_fds[current_keyboard], ev, size * 2)) < size) {
++ fprintf(stderr, "Read failed.\n");
++ break;
++ }
++
++ value = ev[0].value;
++
++ if (value != ' ' && ev[1].value == 0 && ev[1].type == 1){ // Read the key release event
++ if (keycode[(ev[1].code)]) {
++ if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = false;
++ if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = false;
++ }
++ }
++ if (value != ' ' && ev[1].value == 1 && ev[1].type == 1){ // Read the key press event
++ if (keycode[(ev[1].code)]) {
++ if (strcmp(keycode[(ev[1].code)], "<control>") == 0) ctrl_down = true;
++ if (strcmp(keycode[(ev[1].code)], "<alt>") == 0) alt_down = true;
++ }
++ }
++
++ hide_event = false;
++ if (keycode[(ev[1].code)]) {
++ if (alt_down && ctrl_down && (strcmp(keycode[(ev[1].code)], "<del>") == 0)) {
++ hide_event = true;
++ }
++ }
++
++ if (hide_event == false) {
++ // Pass the event on...
++ event = ev[0];
++ write(devout[current_keyboard], &event, sizeof event);
++ event = ev[1];
++ write(devout[current_keyboard], &event, sizeof event);
++ }
++ if (hide_event == true) {
++ // Let anyone listening to our interface know that an SAK keypress was received
++ broadcast_sak();
+ }
+ }
++ }
++ }
++ }
++
++ // fork udev monitor process
++ int i=fork();
++ if (i<0) return 10; // fork failed
++ if (i>0) {
++ // Terminate parent
++ return 0;
++ }
++
++ // Prevent multiple process instances from starting
++ setupLockingPipe();
++
++ // Wait a little bit so that udev hotplug can stabilize before we start monitoring
++ sleep(1);
++
++ fprintf(stderr, "Hotplug monitoring process started\n");
++
++ // Monitor for hotplugged keyboards
++ int j;
++ int hotplug_fd;
++ bool is_new_keyboard;
++ struct udev *udev;
++ struct udev_device *dev;
++ struct udev_monitor *mon;
++
++ // Create the udev object
++ udev = udev_new();
++ if (!udev) {
++ fprintf(stderr, "Cannot connect to udev interface\n");
++ return 11;
++ }
++
++ // Set up a udev monitor to monitor input devices
++ mon = udev_monitor_new_from_netlink(udev, "udev");
++ udev_monitor_filter_add_match_subsystem_devtype(mon, "input", NULL);
++ udev_monitor_enable_receiving(mon);
++
++ while (1) {
++ // Watch for input from the monitoring process
++ dev = udev_monitor_receive_device(mon);
++ if (dev) {
++ // If a keyboard was removed we need to restart...
++ if (strcmp(udev_device_get_action(dev), "remove") == 0) {
++ udev_device_unref(dev);
++ udev_unref(udev);
++ restart_tsak();
++ }
++
++ is_new_keyboard = false;
++ snprintf(filename,sizeof(filename), "%s", udev_device_get_devnode(dev));
++ udev_device_unref(dev);
++
++ // Print name of keyboard
++ hotplug_fd = open(filename, O_RDWR|O_SYNC);
++ ioctl(hotplug_fd, EVIOCGBIT(EV_KEY, sizeof(key_bitmask)), key_bitmask);
+
+- if (hide_event == false) {
+- // Pass the event on...
+- event = ev[0];
+- write(devout, &event, sizeof event);
+- event = ev[1];
+- write(devout, &event, sizeof event);
+- }
+- if (hide_event == true) {
+- // Let anyone listening to our interface know that an SAK keypress was received
+- // I highly doubt there are more than 255 VTs active at once...
+- int i;
+- for (i=0;i<255;i++) {
+- write(mPipe_fd_out, "SAK\n\r", 6);
+- }
++ /* We assume that anything that has an alphabetic key in the
++ QWERTYUIOP range in it is the main keyboard. */
++ for (j = KEY_Q; j <= KEY_P; j++) {
++ if (TestBit(j, key_bitmask)) {
++ is_new_keyboard = true;
+ }
+ }
++ ioctl (hotplug_fd, EVIOCGNAME (sizeof (name)), name);
++ close(hotplug_fd);
++
++ // Ensure that we do not detect our own tsak faked keyboards
++ if (str_ends_with(name, "+tsak") == 1) {
++ is_new_keyboard = false;
++ }
++
++ // If a keyboard was added we need to restart...
++ if (is_new_keyboard == true) {
++ fprintf(stderr, "Hotplugged new keyboard: (%s)\n", name);
++ udev_unref(udev);
++ restart_tsak();
++ }
++ }
++ else {
++ fprintf(stderr, "No Device from receive_device(). An error occured.\n");
+ }
+ }
++
++ udev_unref(udev);
++
++ fprintf(stderr, "Hotplug monitoring process terminated\n");
+ }
+ }
+ }
+diff --git a/twin/kompmgr/kompmgr.c b/twin/kompmgr/kompmgr.c
+index 5daf8c2..8216676 100644
+--- a/kwin/kompmgr/kompmgr.c
++++ b/kwin/kompmgr/kompmgr.c
+@@ -60,6 +60,7 @@ check baghira.sf.net for more infos
+ #include <signal.h>
+ #include <time.h>
+ #include <unistd.h>
++#include <libgen.h>
+ #include <X11/Xlib.h>
+ #include <X11/Xutil.h>
+ #include <X11/Xatom.h>
+@@ -397,7 +398,7 @@ void delete_pid_file()
+ int chars = readlink("/proc/self/exe", me, sizeof(me));
+ me[chars] = 0;
+ me[2047] = 0;
+- execl(me, NULL);
++ execl(me, basename(me), (char*)NULL);
+ }
+ #endif
+ }
diff --git a/redhat/tdebase/kdebase-3.5.13-update_default_konq_max_image_prev_size.patch b/redhat/tdebase/kdebase-3.5.13-update_default_konq_max_image_prev_size.patch
new file mode 100644
index 000000000..b34c98212
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-update_default_konq_max_image_prev_size.patch
@@ -0,0 +1,49 @@
+commit 03e19305ec704b8749bb7564e16ed8d78a80d516
+Author: Darrell Anderson <humanreadable@yahoo.com>
+Date: 1340675585 -0500
+
+ Update default konqueror maximum image preview size to 10MB.
+
+diff --git a/kcontrol/konq/previews.cpp b/kcontrol/konq/previews.cpp
+index cbe4d40..53c16f1 100644
+--- a/kcontrol/konq/previews.cpp
++++ b/kcontrol/konq/previews.cpp
+@@ -67,14 +67,14 @@ KPreviewOptions::KPreviewOptions( TQWidget *parent, const char */*name*/ )
+
+ setQuickHelp( i18n("<h1>Preview Options</h1> Here you can modify the behavior "
+ "of Konqueror when it shows the files in a folder."
+- "<h2>The list of protocols:</h2> check the protocols over which "
++ "<h2>The list of protocols:</h2> Check the protocols over which "
+ "previews should be shown; uncheck those over which they should not. "
+ "For instance, you might want to show previews over SMB if the local "
+ "network is fast enough, but you might disable it for FTP if you often "
+ "visit very slow FTP sites with large images."
+- "<h2>Maximum File Size:</h2> select the maximum file size for which "
+- "previews should be generated. For instance, if set to 1 MB (the default), "
+- "no preview will be generated for files bigger than 1 MB, for speed reasons."));
++ "<h2>Maximum File Size:</h2> Select the maximum file size for which "
++ "previews should be generated. For instance, if set to 10 MB (the default), "
++ "no preview will be generated for files bigger than 10 MB, for speed reasons."));
+
+ // Listview containing checkboxes for all protocols that support listing
+ KListView *listView = new KListView( this, "listView" );
+@@ -152,8 +152,8 @@ KPreviewOptions::KPreviewOptions( TQWidget *parent, const char */*name*/ )
+ load();
+ }
+
+-// Default: 1 MB
+-#define DEFAULT_MAXSIZE (1024*1024)
++// Default: 10 MB
++#define DEFAULT_MAXSIZE (1024*1024*10)
+
+ void KPreviewOptions::load(bool useDefaults)
+ {
+@@ -171,7 +171,7 @@ void KPreviewOptions::load(bool useDefaults)
+ else
+ it.current()->setOn( group.readBoolEntry( protocol, false ) );
+ }
+- // config key is in bytes (default value 1MB), numinput is in MB
++ // config key is in bytes (default value 10MB), numinput is in MB
+ m_maxSize->setValue( ((double)group.readNumEntry( "MaximumSize", DEFAULT_MAXSIZE )) / (1024*1024) );
+
+ m_boostSize->setChecked( group.readBoolEntry( "BoostSize", false /*default*/ ) );
diff --git a/redhat/tdebase/kdebase-3.5.13-upgrade_to_sru_20120806.patch.gz b/redhat/tdebase/kdebase-3.5.13-upgrade_to_sru_20120806.patch.gz
new file mode 100644
index 000000000..780aa8581
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13-upgrade_to_sru_20120806.patch.gz
Binary files differ
diff --git a/redhat/tdebase/kdebase-3.5.13.1-fix_displayconfig_icon.patch b/redhat/tdebase/kdebase-3.5.13.1-fix_displayconfig_icon.patch
new file mode 100644
index 000000000..529824f7f
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13.1-fix_displayconfig_icon.patch
@@ -0,0 +1,20 @@
+--- kdebase-3.5.13.1/kcontrol/displayconfig/displayconfig.desktop.ORI 2012-10-04 23:36:14.085070870 +0200
++++ kdebase-3.5.13.1/kcontrol/displayconfig/displayconfig.desktop 2012-10-04 23:36:23.449879298 +0200
+@@ -3,7 +3,7 @@
+ Comment=Configure display
+ Comment[en_US]=Configure display
+ DocPath=kcontrol/displayconfig.html
+-Exec[$e]=kcmshell displayconfig
++Exec=kcmshell displayconfig
+ GenericName=
+ GenericName[en_US]=
+ Icon=background
+@@ -12,7 +12,7 @@
+ Name=Monitor & Display
+ Name[en_US]=Monitor & Display
+ NoDisplay=false
+-Path[$e]=
++Path=
+ StartupNotify=true
+ Terminal=false
+ TerminalOptions=
diff --git a/redhat/tdebase/kdebase-3.5.13.1-fix_startkde_path.patch b/redhat/tdebase/kdebase-3.5.13.1-fix_startkde_path.patch
new file mode 100644
index 000000000..971daf16f
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13.1-fix_startkde_path.patch
@@ -0,0 +1,107 @@
+--- bin/startkde.ORI 2012-11-16 20:44:01.763131101 +0100
++++ bin/startkde 2012-11-16 21:24:12.865147976 +0100
+@@ -15,6 +15,26 @@
+ source $HOME/.xprofile
+ fi
+
++# Some functions to parse and check path correctly ...
++is_in_path() {
++ search="$1"; ifs="$IFS"; IFS=":"; set $PATH; IFS="$ifs"
++ for i in $*; do
++ [ "${i}" = "${search}" ] && return 0
++ done
++ return 1
++}
++
++# Usage: place_before_in_path /opt/trinity/games /usr/games
++place_before_in_path() {
++ insert="$1"; before="$2"; ifs="$IFS"; IFS=":"; set $PATH; IFS="$ifs"
++ NPATH=""
++ for i in $*; do
++ [ "${i}" = "${before}" ] && NPATH="${NPATH}:${insert}"
++ NPATH="${NPATH}:${i}"
++ done
++ export PATH=${NPATH}
++}
++
+ echo "[startkde] Starting startkde." 1>&2
+ echo "[startkde] This script is $0" 1>&2
+
+@@ -29,7 +49,7 @@
+ # Do not use kde-config to determine the version. That command creates a
+ # profile directory in the root of the file system. Refer to Bug Report 293.
+ if [ -x $BIN_DIR/konqueror ]; then
+- KDE_VERSION="`$BIN_DIR/konqueror --version | grep KDE | awk '{print $2}'`"
++ KDE_VERSION=$($BIN_DIR/konqueror --version | while IFS=: read a b; do [[ "$a" =~ "KDE" ]] && echo $b; done)
+ echo "[startkde] TDE version is $KDE_VERSION" 1>&2
+ export KDEDIR=${BIN_DIR%/bin}
+ echo "[startkde] TDE base directory is $KDEDIR" 1>&2
+@@ -105,27 +125,12 @@
+ # This script and kstandardirs.h and kstandardirs.cpp must match.
+ # The latter two must be edited/patched before compiling.
+ echo "[startkde] KDEHOME is not set." 1>&2
+- if [ -d $HOME/.trinity ]; then
+- # OK, this one is obvious.
+- export KDEHOME=$HOME/.trinity
+- elif [ -f /usr/bin/kde4-config ]; then
+- # Looks like KDE4 is installed.
+- if [ -d $HOME/.kde ] && [ ! -d $HOME/.trinity ]; then
+- # Presume $HOME/.kde is being used for KDE4 as it already exists.
+- export KDEHOME=$HOME/.trinity
+- else
+- # Presume $HOME/.kde is being used for KDE4 to be on the safe side.
+- export KDEHOME=$HOME/.trinity
+- fi
+- elif [ -f /opt/trinity/bin/kde-config ]; then
+- # Looks like Trinity is installed.
+- export KDEHOME=$HOME/.trinity
+- elif [ -f /usr/bin/kde-config ] && [ -d $HOME/.kde ]; then
++ # Default value: $HOME/.trinity. Most users will use this.
++ export KDEHOME=$HOME/.trinity
++
++ if [ ! -d $HOME/.trinity ] && [ ! -f /usr/bin/kde4-config ] && [ -f /usr/bin/kde-config ] && [ -d $HOME/.kde ]; then
+ # Looks like Trinity is installed and not playing second fiddle to KDE4.
+ export KDEHOME=$HOME/.kde
+- else
+- # Resort to this and hope for the best!
+- export KDEHOME=$HOME/.trinity
+ fi
+ echo "[startkde] Set KDEHOME to $KDEHOME." 1>&2
+ fi
+@@ -149,30 +154,30 @@
+
+ # Modify the following environment variables only as necessary.
+ if [ -d $KDEDIR/games ]; then
+- if [ "`echo $PATH | grep \"$KDEDIR/games\"`" = "" ]; then
++ if ! is_in_path "$KDEDIR/games" ; then
+ # Respect the traditional path order. Don't blindly place $KDEDIR/games
+ # first in the path. Only place $KDEDIR/games before /usr/games. If packagers
+ # are adding $KDEDIR/games elsewhere, then they need to ensure the traditional
+ # search patch is respected.
+ # Is there a way we can check that $KDEDIR/games is always placed only just before
+ # /usr/games in the search path?
+- if [ "`echo $PATH | grep \"^\\(.*:\\)\\?/usr/games\\(:.*\\)\\?$\"`" != "" ]; then
+- export PATH="`echo $PATH | sed \"s|^\\(.*:\\)\\?/usr/games\\(:.*\\)\\?$|\\1$KDEDIR/games:/usr/games\\2|\"`"
++ if is_in_path "/usr/games"; then
++ place_before_in_path "$KDEDIR/games" "/usr/games"
+ else
+ export PATH=$KDEDIR/games:$PATH
+ fi
+ fi
+ fi
+ if [ -d $KDEDIR/bin ]; then
+- if [ "`echo $PATH | grep \"$KDEDIR/bin\"`" = "" ]; then
++ if ! is_in_path "$KDEDIR/bin" ]; then
+ # Respect the traditional path order. Don't blindly place $KDEDIR/bin
+ # first in the path. Only place $KDEDIR/bin before /usr/bin. This order is
+ # consistent with kdelibs/kdesu/stub.cpp. If packagers are adding $KDEDIR/bin
+ # elsewhere, then they need to ensure the traditional search patch is respected.
+ # Is there a way we can check that $KDEDIR/bin is always placed only just before
+ # /usr/bin in the search path?
+- if [ "`echo $PATH | grep \"^\\(.*:\\)\\?/usr/bin\\(:.*\\)\\?$\"`" != "" ]; then
+- export PATH="`echo $PATH | sed \"s|^\\(.*:\\)\\?/usr/bin\\(:.*\\)\\?$|\\1$KDEDIR/bin:/usr/bin\\2|\"`"
++ if is_in_path "/usr/bin"; then
++ place_before_in_path "$KDEDIR/bin" "/usr/bin"
+ else
+ export PATH=$KDEDIR/bin:$PATH
+ fi
diff --git a/redhat/tdebase/kdebase-3.5.13.1-fix_tdm_pid_file.patch b/redhat/tdebase/kdebase-3.5.13.1-fix_tdm_pid_file.patch
new file mode 100644
index 000000000..8ddad87e1
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13.1-fix_tdm_pid_file.patch
@@ -0,0 +1,11 @@
+--- kdebase-3.5.13.1/kdm/config.def.ORI 2012-12-01 12:45:04.820426652 +0100
++++ kdebase-3.5.13.1/kdm/config.def 2012-12-01 12:45:16.291197270 +0100
+@@ -883,7 +883,7 @@
+ Type: string
+ Default: ""
+ User: core
+-Instance: "/var/run/kdm.pid"
++Instance: "/var/run/tdm.pid"
+ Merge: xdm
+ Comment:
+ Where &kdm; should store its PID (do not store if empty).
diff --git a/redhat/tdebase/kdebase-3.5.13.1-startkde_icon.patch b/redhat/tdebase/kdebase-3.5.13.1-startkde_icon.patch
new file mode 100644
index 000000000..8b9052e09
--- /dev/null
+++ b/redhat/tdebase/kdebase-3.5.13.1-startkde_icon.patch
@@ -0,0 +1,19 @@
+--- kdebase/startkde.tdeicon 2012-08-09 10:33:24.000000000 +0200
++++ kdebase/startkde 2012-08-09 10:34:11.484608675 +0200
+@@ -302,6 +302,16 @@
+ fi
+ fi
+
++# Default Start Button icon for TDE
++if [ ! -e $kdehome/share/config/kickerrc ]; then
++ if [ -r "%{tde_starticon}" ]; then
++ cat <<EOF >$kdehome/share/config/kickerrc
++[KMenu]
++CustomIcon=%{tde_starticon}
++EOF
++ fi
++fi
++
+ # XCursor mouse theme needs to be applied here to work even for kded or ksmserver.
+ if test -n "$kcminputrc_mouse_cursortheme" -o -n "$kcminputrc_mouse_cursorsize" ; then
+ kapplymousetheme "$kcminputrc_mouse_cursortheme" "$kcminputrc_mouse_cursorsize"
diff --git a/redhat/tdebase/kdebase-bp126-553923b2.diff b/redhat/tdebase/kdebase-bp126-553923b2.diff
new file mode 100644
index 000000000..62a4e20b7
--- /dev/null
+++ b/redhat/tdebase/kdebase-bp126-553923b2.diff
@@ -0,0 +1,135 @@
+commit 553923b25dc41e2c17ba9038eb225cd3bb9b1770
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1348270079 -0500
+
+ Forcibly prevent transient override redirect windows from showing up over the lock screen
+ This closes Bug 1079
+
+diff --git a/kdesktop/lock/lockdlg.cc b/kdesktop/lock/lockdlg.cc
+index 236bf8a..005ac99 100644
+--- a/kdesktop/lock/lockdlg.cc
++++ b/kdesktop/lock/lockdlg.cc
+@@ -573,9 +573,19 @@ void PasswordDlg::gplugActivity()
+
+ void PasswordDlg::gplugMsgBox( TQMessageBox::Icon type, const TQString &text )
+ {
+- TQDialog dialog( this, 0, true, (WFlags)WX11BypassWM );
++ TQDialog dialog( this, 0, true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
++ if (trinity_desktop_lock_use_system_modal_dialogs) {
++ // Signal that we do not want any window controls to be shown at all
++ Atom kde_wm_system_modal_notification;
++ kde_wm_system_modal_notification = XInternAtom(qt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
++ XChangeProperty(qt_xdisplay(), dialog.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
++ }
++ dialog.setCaption(i18n("Authentication Subsystem Notice"));
+ TQFrame *winFrame = new TQFrame( &dialog );
+- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
++ if (trinity_desktop_lock_use_system_modal_dialogs)
++ winFrame->setFrameStyle( TQFrame::NoFrame );
++ else
++ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ winFrame->setLineWidth( 2 );
+ TQVBoxLayout *vbox = new TQVBoxLayout( &dialog );
+ vbox->addWidget( winFrame );
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 2ce7507..5265bc6 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -960,6 +960,27 @@ void LockProcess::createSaverWindow()
+
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+
++ // HACK
++ // Close all tooltips and notification windows
++ {
++ Window rootWindow = RootWindow(x11Display(), x11Screen());
++ Window parent;
++ Window* children = NULL;
++ unsigned int noOfChildren = 0;
++ XWindowAttributes childAttr;
++ Window childTransient;
++
++ if (XQueryTree(x11Display(), rootWindow, &rootWindow, &parent, &children, &noOfChildren) && noOfChildren>0 ) {
++ for (unsigned int i=0; i<noOfChildren; i++) {
++ if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
++ if ((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
++ XUnmapWindow(x11Display(), children[i]);
++ }
++ }
++ }
++ }
++ }
++
+ kdDebug(1204) << "Saver window Id: " << winId() << endl;
+ }
+
+@@ -2162,9 +2183,19 @@ void LockProcess::unlockXF86()
+
+ void LockProcess::msgBox( TQMessageBox::Icon type, const TQString &txt )
+ {
+- TQDialog box( 0, "messagebox", true, (WFlags)WX11BypassWM );
++ TQDialog box( 0, "messagebox", true, (trinity_desktop_lock_use_system_modal_dialogs?((WFlags)WStyle_StaysOnTop):((WFlags)WX11BypassWM)) );
++ if (trinity_desktop_lock_use_system_modal_dialogs) {
++ // Signal that we do not want any window controls to be shown at all
++ Atom kde_wm_system_modal_notification;
++ kde_wm_system_modal_notification = XInternAtom(qt_xdisplay(), "_KDE_WM_MODAL_SYS_NOTIFICATION", False);
++ XChangeProperty(qt_xdisplay(), box.winId(), kde_wm_system_modal_notification, XA_INTEGER, 32, PropModeReplace, (unsigned char *) "TRUE", 1L);
++ }
++ box.setCaption(i18n("Authentication Subsystem Notice"));
+ TQFrame *winFrame = new TQFrame( &box );
+- winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
++ if (trinity_desktop_lock_use_system_modal_dialogs)
++ winFrame->setFrameStyle( TQFrame::NoFrame );
++ else
++ winFrame->setFrameStyle( TQFrame::WinPanel | TQFrame::Raised );
+ winFrame->setLineWidth( 2 );
+ TQLabel *label1 = new TQLabel( winFrame );
+ label1->setPixmap( TQMessageBox::standardIcon( type ) );
+@@ -2264,8 +2295,10 @@ void LockProcess::windowAdded( WId w, bool managed )
+ int y = XDisplayHeight( qt_xdisplay(), qt_xscreen()) - attr_geom.height;
+ if( managed ) {
+ XSetWindowAttributes attr;
+- attr.override_redirect = True;
+- XChangeWindowAttributes( qt_xdisplay(), w, CWOverrideRedirect, &attr );
++ if (!trinity_desktop_lock_use_system_modal_dialogs) {
++ attr.override_redirect = True;
++ XChangeWindowAttributes( qt_xdisplay(), w, CWOverrideRedirect, &attr );
++ }
+ XReparentWindow( qt_xdisplay(), w, qt_xrootwin(), x, y );
+ XMapWindow( qt_xdisplay(), w );
+ }
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index 56b4b5f..e74d9f9 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -76,6 +76,30 @@ bool MyApp::x11EventFilter( XEvent *ev )
+ emit activity();
+ }
+ }
++ else if (ev->type == MapNotify) {
++ // HACK
++ // Close all tooltips and notification windows
++ XMapEvent map_event = ev->xmap;
++ XWindowAttributes childAttr;
++ Window childTransient;
++ if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) {
++ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
++ XUnmapWindow(map_event.display, map_event.window);
++ }
++ }
++ }
++ else if (ev->type == CreateNotify) {
++ // HACK
++ // Close all tooltips and notification windows
++ XCreateWindowEvent create_event = ev->xcreatewindow;
++ XWindowAttributes childAttr;
++ Window childTransient;
++ if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
++ if ((childAttr.override_redirect) && (childTransient)) {
++ XDestroyWindow(create_event.display, create_event.window);
++ }
++ }
++ }
+ return KApplication::x11EventFilter( ev );
+ }
+
diff --git a/redhat/tdebase/kdebase-bp127-57f5c069.diff b/redhat/tdebase/kdebase-bp127-57f5c069.diff
new file mode 100644
index 000000000..da6a95d22
--- /dev/null
+++ b/redhat/tdebase/kdebase-bp127-57f5c069.diff
@@ -0,0 +1,159 @@
+commit 57f5c0698d49f0a0a7a55c75404f5b9ded910002
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1348355175 -0500
+
+ Lower override redirect windows instead of unmapping them on lock start
+ Restore lowered windows on lock exit
+ This provides a better solution to Bug 1079
+
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 5265bc6..7191346 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -138,6 +138,8 @@ extern bool trinity_desktop_lock_delay_screensaver_start;
+ extern bool trinity_desktop_lock_use_sak;
+ extern bool trinity_desktop_lock_forced;
+
++extern TQXLibWindowList trinity_desktop_lock_hidden_window_list;
++
+ bool trinity_desktop_lock_autohide_lockdlg = TRUE;
+ bool trinity_desktop_lock_closing_windows = FALSE;
+ bool trinity_desktop_lock_in_sec_dlg = FALSE;
+@@ -961,7 +963,7 @@ void LockProcess::createSaverWindow()
+ setGeometry(0, 0, mRootWidth, mRootHeight);
+
+ // HACK
+- // Close all tooltips and notification windows
++ // Hide all tooltips and notification windows
+ {
+ Window rootWindow = RootWindow(x11Display(), x11Screen());
+ Window parent;
+@@ -974,7 +976,10 @@ void LockProcess::createSaverWindow()
+ for (unsigned int i=0; i<noOfChildren; i++) {
+ if (XGetWindowAttributes(x11Display(), children[i], &childAttr) && XGetTransientForHint(x11Display(), children[i], &childTransient)) {
+ if ((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+- XUnmapWindow(x11Display(), children[i]);
++ if (!trinity_desktop_lock_hidden_window_list.contains(children[i])) {
++ trinity_desktop_lock_hidden_window_list.append(children[i]);
++ }
++ XLowerWindow(x11Display(), children[i]);
+ }
+ }
+ }
+diff --git a/kdesktop/lock/lockprocess.h b/kdesktop/lock/lockprocess.h
+index 0dacc46..7fd4236 100644
+--- a/kdesktop/lock/lockprocess.h
++++ b/kdesktop/lock/lockprocess.h
+@@ -38,6 +38,8 @@ struct GreeterPluginHandle {
+ #define FIFO_FILE_OUT "/tmp/ksocket-global/kdesktoplockcontrol_out"
+ #define PIPE_CHECK_INTERVAL 50
+
++typedef TQValueList<Window> TQXLibWindowList;
++
+ //===========================================================================
+ //
+ // Screen saver handling process. Handles screensaver window,
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index e74d9f9..a95747e 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -47,6 +47,8 @@ else { \
+ } \
+ tdmconfig->setGroup("X-*-Greeter");
+
++TQXLibWindowList trinity_desktop_lock_hidden_window_list;
++
+ // [FIXME] Add GUI configuration checkboxes for these three settings (see kdesktoprc [ScreenSaver] UseUnmanagedLockWindows, DelaySaverStart, and UseTDESAK)
+ bool trinity_desktop_lock_use_system_modal_dialogs = FALSE;
+ bool trinity_desktop_lock_delay_screensaver_start = FALSE;
+@@ -78,16 +80,43 @@ bool MyApp::x11EventFilter( XEvent *ev )
+ }
+ else if (ev->type == MapNotify) {
+ // HACK
+- // Close all tooltips and notification windows
++ // Hide all tooltips and notification windows
+ XMapEvent map_event = ev->xmap;
+ XWindowAttributes childAttr;
+ Window childTransient;
+ if (XGetWindowAttributes(map_event.display, map_event.window, &childAttr) && XGetTransientForHint(map_event.display, map_event.window, &childTransient)) {
+ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
+- XUnmapWindow(map_event.display, map_event.window);
++ if (!trinity_desktop_lock_hidden_window_list.contains(map_event.window)) {
++ trinity_desktop_lock_hidden_window_list.append(map_event.window);
++ }
++ XLowerWindow(map_event.display, map_event.window);
+ }
+ }
+ }
++ else if (ev->type == VisibilityNotify) {
++ // HACK
++ // Hide all tooltips and notification windows
++ XVisibilityEvent visibility_event = ev->xvisibility;
++ XWindowAttributes childAttr;
++ Window childTransient;
++ if ((visibility_event.state == VisibilityUnobscured) || (visibility_event.state == VisibilityPartiallyObscured)) {
++ if (XGetWindowAttributes(visibility_event.display, visibility_event.window, &childAttr) && XGetTransientForHint(visibility_event.display, visibility_event.window, &childTransient)) {
++ if((childAttr.map_state == IsViewable) && (childAttr.override_redirect) && (childTransient)) {
++ if (!trinity_desktop_lock_hidden_window_list.contains(visibility_event.window)) {
++ trinity_desktop_lock_hidden_window_list.append(visibility_event.window);
++ }
++ XLowerWindow(visibility_event.display, visibility_event.window);
++ }
++ }
++ }
++ }
++ else if (ev->type == DestroyNotify) {
++ XDestroyWindowEvent destroy_event = ev->xdestroywindow;
++ if (trinity_desktop_lock_hidden_window_list.contains(destroy_event.window)) {
++ trinity_desktop_lock_hidden_window_list.remove(destroy_event.window);
++ }
++ }
++#if 0
+ else if (ev->type == CreateNotify) {
+ // HACK
+ // Close all tooltips and notification windows
+@@ -100,6 +129,7 @@ bool MyApp::x11EventFilter( XEvent *ev )
+ }
+ }
+ }
++#endif
+ return KApplication::x11EventFilter( ev );
+ }
+
+@@ -114,6 +144,14 @@ static KCmdLineOptions options[] =
+ KCmdLineLastOption
+ };
+
++void restore_hidden_override_redirect_windows() {
++ TQXLibWindowList::iterator it;
++ for (it = trinity_desktop_lock_hidden_window_list.begin(); it != trinity_desktop_lock_hidden_window_list.end(); ++it) {
++ Window win = *it;
++ XRaiseWindow(qt_xdisplay(), win);
++ }
++}
++
+ static void sigusr1_handler(int)
+ {
+ signalled_forcelock = TRUE;
+@@ -356,7 +394,10 @@ int main( int argc, char **argv )
+ }
+
+ if (in_internal_mode == FALSE) {
+- return app.exec();
++ trinity_desktop_lock_hidden_window_list.clear();
++ int ret = app.exec();
++ restore_hidden_override_redirect_windows();
++ return ret;
+ }
+ else {
+ pid_t kdesktop_pid = atoi(args->getOption( "internal" ));
+@@ -364,7 +405,9 @@ int main( int argc, char **argv )
+ // The controlling kdesktop process probably died. Commit suicide...
+ return 12;
+ }
++ trinity_desktop_lock_hidden_window_list.clear();
+ app.exec();
++ restore_hidden_override_redirect_windows();
+ if (kill(kdesktop_pid, SIGUSR1) < 0) {
+ // The controlling kdesktop process probably died. Commit suicide...
+ return 12;
diff --git a/redhat/tdebase/kdebase-bp128-1f33dc8f.diff b/redhat/tdebase/kdebase-bp128-1f33dc8f.diff
new file mode 100644
index 000000000..e552a069b
--- /dev/null
+++ b/redhat/tdebase/kdebase-bp128-1f33dc8f.diff
@@ -0,0 +1,58 @@
+commit 1f33dc8fd2fc14c2abb74be4e27ef08fdda784d6
+Author: Timothy Pearson <kb9vqf@pearsoncomputing.net>
+Date: 1348374670 -0500
+
+ Attempt to minimize the time in which new notifications are displayed before being hidden
+
+diff --git a/kdesktop/lock/lockprocess.cc b/kdesktop/lock/lockprocess.cc
+index 7191346..db92c00 100644
+--- a/kdesktop/lock/lockprocess.cc
++++ b/kdesktop/lock/lockprocess.cc
+@@ -980,6 +980,7 @@ void LockProcess::createSaverWindow()
+ trinity_desktop_lock_hidden_window_list.append(children[i]);
+ }
+ XLowerWindow(x11Display(), children[i]);
++ XFlush(x11Display());
+ }
+ }
+ }
+diff --git a/kdesktop/lock/main.cc b/kdesktop/lock/main.cc
+index a95747e..7235776 100644
+--- a/kdesktop/lock/main.cc
++++ b/kdesktop/lock/main.cc
+@@ -90,6 +90,7 @@ bool MyApp::x11EventFilter( XEvent *ev )
+ trinity_desktop_lock_hidden_window_list.append(map_event.window);
+ }
+ XLowerWindow(map_event.display, map_event.window);
++ XFlush(map_event.display);
+ }
+ }
+ }
+@@ -106,10 +107,27 @@ bool MyApp::x11EventFilter( XEvent *ev )
+ trinity_desktop_lock_hidden_window_list.append(visibility_event.window);
+ }
+ XLowerWindow(visibility_event.display, visibility_event.window);
++ XFlush(visibility_event.display);
+ }
+ }
+ }
+ }
++ else if (ev->type == CreateNotify) {
++ // HACK
++ // Close all tooltips and notification windows
++ XCreateWindowEvent create_event = ev->xcreatewindow;
++ XWindowAttributes childAttr;
++ Window childTransient;
++ if (XGetWindowAttributes(create_event.display, create_event.window, &childAttr) && XGetTransientForHint(create_event.display, create_event.window, &childTransient)) {
++ if ((childAttr.override_redirect) && (childTransient)) {
++ if (!trinity_desktop_lock_hidden_window_list.contains(create_event.window)) {
++ trinity_desktop_lock_hidden_window_list.append(create_event.window);
++ }
++ XLowerWindow(create_event.display, create_event.window);
++ XFlush(create_event.display);
++ }
++ }
++ }
+ else if (ev->type == DestroyNotify) {
+ XDestroyWindowEvent destroy_event = ev->xdestroywindow;
+ if (trinity_desktop_lock_hidden_window_list.contains(destroy_event.window)) {
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.el4 b/redhat/tdebase/pamd.kcheckpass-trinity.el4
new file mode 100644
index 000000000..48e0276a6
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.el4
@@ -0,0 +1,11 @@
+#%PAM-1.0
+auth required pam_stack.so service=system-auth
+auth required pam_nologin.so
+auth sufficient pam_timestamp.so
+account required pam_stack.so service=system-auth
+password required pam_stack.so service=system-auth
+session required pam_stack.so service=system-auth
+session required pam_loginuid.so
+session optional pam_timestamp.so
+session optional pam_selinux.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.el5 b/redhat/tdebase/pamd.kcheckpass-trinity.el5
new file mode 100644
index 000000000..56939d5a9
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.el5
@@ -0,0 +1,9 @@
+#%PAM-1.0
+auth include system-auth
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session include system-auth
+session required pam_loginuid.so
+session optional pam_selinux.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.el6 b/redhat/tdebase/pamd.kcheckpass-trinity.el6
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.el6
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.fc15 b/redhat/tdebase/pamd.kcheckpass-trinity.fc15
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.fc15
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.fc16 b/redhat/tdebase/pamd.kcheckpass-trinity.fc16
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.fc16
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.fc17 b/redhat/tdebase/pamd.kcheckpass-trinity.fc17
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.fc17
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.mdv2011.0 b/redhat/tdebase/pamd.kcheckpass-trinity.mdv2011.0
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.mdv2011.0
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.mga2 b/redhat/tdebase/pamd.kcheckpass-trinity.mga2
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.mga2
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.opensuse1220 b/redhat/tdebase/pamd.kcheckpass-trinity.opensuse1220
new file mode 100644
index 000000000..c6a7c9c90
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.opensuse1220
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include common-auth
+account include common-account
+password include common-password
+session include common-session
diff --git a/redhat/tdebase/pamd.kcheckpass-trinity.pclos2012 b/redhat/tdebase/pamd.kcheckpass-trinity.pclos2012
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kcheckpass-trinity.pclos2012
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.el4 b/redhat/tdebase/pamd.kdm-trinity-np.el4
new file mode 100644
index 000000000..687312da5
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.el4
@@ -0,0 +1,9 @@
+#%PAM-1.0
+auth required pam_env.so
+auth required pam_nologin.so
+auth required pam_permit.so
+account required pam_stack.so service=system-auth
+password required pam_stack.so service=system-auth
+session required pam_stack.so service=system-auth
+session required pam_loginuid.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.el5 b/redhat/tdebase/pamd.kdm-trinity-np.el5
new file mode 100644
index 000000000..8dc8ef34d
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.el5
@@ -0,0 +1,11 @@
+#%PAM-1.0
+auth required pam_env.so
+auth required pam_nologin.so
+auth required pam_permit.so
+account include system-auth
+password include system-auth
+session optional pam_keyinit.so force revoke
+session include system-auth
+session required pam_loginuid.so
+session optional pam_selinux.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.el6 b/redhat/tdebase/pamd.kdm-trinity-np.el6
new file mode 100644
index 000000000..c3f7172de
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.el6
@@ -0,0 +1,13 @@
+ #%PAM-1.0
+auth required pam_env.so
+auth required pam_permit.so
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+session include system-auth
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.fc15 b/redhat/tdebase/pamd.kdm-trinity-np.fc15
new file mode 100644
index 000000000..96fcfe378
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.fc15
@@ -0,0 +1,15 @@
+ #%PAM-1.0
+auth required pam_env.so
+auth required pam_permit.so
+auth include postlogin
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+session include system-auth
+session include postlogin
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.fc16 b/redhat/tdebase/pamd.kdm-trinity-np.fc16
new file mode 100644
index 000000000..96fcfe378
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.fc16
@@ -0,0 +1,15 @@
+ #%PAM-1.0
+auth required pam_env.so
+auth required pam_permit.so
+auth include postlogin
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+session include system-auth
+session include postlogin
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.fc17 b/redhat/tdebase/pamd.kdm-trinity-np.fc17
new file mode 100644
index 000000000..96fcfe378
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.fc17
@@ -0,0 +1,15 @@
+ #%PAM-1.0
+auth required pam_env.so
+auth required pam_permit.so
+auth include postlogin
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+session include system-auth
+session include postlogin
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.mdv2011.0 b/redhat/tdebase/pamd.kdm-trinity-np.mdv2011.0
new file mode 100644
index 000000000..690b4df08
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.mdv2011.0
@@ -0,0 +1,7 @@
+#%PAM-1.0
+auth required pam_env.so
+auth required pam_permit.so
+account include system-auth
+password include system-auth
+session include system-auth
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.mga2 b/redhat/tdebase/pamd.kdm-trinity-np.mga2
new file mode 100644
index 000000000..c4e598afe
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.mga2
@@ -0,0 +1,10 @@
+#%PAM-1.0
+auth required pam_env.so
+auth required pam_permit.so
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session optional pam_keyinit.so force revoke
+session include system-auth
+session required pam_loginuid.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kdm-trinity-np.pclos2012 b/redhat/tdebase/pamd.kdm-trinity-np.pclos2012
new file mode 100644
index 000000000..690b4df08
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity-np.pclos2012
@@ -0,0 +1,7 @@
+#%PAM-1.0
+auth required pam_env.so
+auth required pam_permit.so
+account include system-auth
+password include system-auth
+session include system-auth
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kdm-trinity.el4 b/redhat/tdebase/pamd.kdm-trinity.el4
new file mode 100644
index 000000000..48e0276a6
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.el4
@@ -0,0 +1,11 @@
+#%PAM-1.0
+auth required pam_stack.so service=system-auth
+auth required pam_nologin.so
+auth sufficient pam_timestamp.so
+account required pam_stack.so service=system-auth
+password required pam_stack.so service=system-auth
+session required pam_stack.so service=system-auth
+session required pam_loginuid.so
+session optional pam_timestamp.so
+session optional pam_selinux.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kdm-trinity.el5 b/redhat/tdebase/pamd.kdm-trinity.el5
new file mode 100644
index 000000000..30a26ae99
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.el5
@@ -0,0 +1,10 @@
+#%PAM-1.0
+auth include system-auth
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session optional pam_keyinit.so force revoke
+session include system-auth
+session required pam_loginuid.so
+session optional pam_selinux.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kdm-trinity.el6 b/redhat/tdebase/pamd.kdm-trinity.el6
new file mode 100644
index 000000000..14f4aa748
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.el6
@@ -0,0 +1,16 @@
+#%PAM-1.0
+auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
+auth required pam_env.so
+auth substack system-auth
+auth optional pam_gnome_keyring.so
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+session optional pam_gnome_keyring.so auto_start
+session include system-auth
diff --git a/redhat/tdebase/pamd.kdm-trinity.fc15 b/redhat/tdebase/pamd.kdm-trinity.fc15
new file mode 100644
index 000000000..f1d90f7f3
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.fc15
@@ -0,0 +1,18 @@
+#%PAM-1.0
+auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
+auth required pam_env.so
+auth substack system-auth
+auth optional pam_gnome_keyring.so
+auth include postlogin
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+session optional pam_gnome_keyring.so auto_start
+session include system-auth
+session include postlogin
diff --git a/redhat/tdebase/pamd.kdm-trinity.fc16 b/redhat/tdebase/pamd.kdm-trinity.fc16
new file mode 100644
index 000000000..ff7b155c6
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.fc16
@@ -0,0 +1,18 @@
+#%PAM-1.0
+auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
+auth required pam_env.so
+auth substack system-auth
+-auth optional pam_gnome_keyring.so
+auth include postlogin
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+-session optional pam_gnome_keyring.so auto_start
+session include system-auth
+session include postlogin
diff --git a/redhat/tdebase/pamd.kdm-trinity.fc17 b/redhat/tdebase/pamd.kdm-trinity.fc17
new file mode 100644
index 000000000..ff7b155c6
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.fc17
@@ -0,0 +1,18 @@
+#%PAM-1.0
+auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
+auth required pam_env.so
+auth substack system-auth
+-auth optional pam_gnome_keyring.so
+auth include postlogin
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session required pam_selinux.so close
+session required pam_loginuid.so
+session optional pam_console.so
+session required pam_selinux.so open
+session optional pam_keyinit.so force revoke
+session required pam_namespace.so
+-session optional pam_gnome_keyring.so auto_start
+session include system-auth
+session include postlogin
diff --git a/redhat/tdebase/pamd.kdm-trinity.mdv2011.0 b/redhat/tdebase/pamd.kdm-trinity.mdv2011.0
new file mode 100644
index 000000000..87d080f58
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.mdv2011.0
@@ -0,0 +1,8 @@
+#%PAM-1.0
+auth include system-auth
+auth required pam_nologin.so
+account include system-auth
+password include system-auth
+session include system-auth
+session optional pam_console.so
+session required pam_namespace.so
diff --git a/redhat/tdebase/pamd.kdm-trinity.mga2 b/redhat/tdebase/pamd.kdm-trinity.mga2
new file mode 100644
index 000000000..3263a6891
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.mga2
@@ -0,0 +1,13 @@
+#%PAM-1.0
+auth required pam_env.so
+auth required pam_succeed_if.so
+auth sufficient pam_succeed_if.so user ingroup nopasswdlogin
+auth substack system-auth
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session optional pam_keyinit.so force revoke
+session required pam_loginuid.so
+session include system-auth
+session optional pam_console.so
+session required pam_namespace.so
diff --git a/redhat/tdebase/pamd.kdm-trinity.pclos2012 b/redhat/tdebase/pamd.kdm-trinity.pclos2012
new file mode 100644
index 000000000..87d080f58
--- /dev/null
+++ b/redhat/tdebase/pamd.kdm-trinity.pclos2012
@@ -0,0 +1,8 @@
+#%PAM-1.0
+auth include system-auth
+auth required pam_nologin.so
+account include system-auth
+password include system-auth
+session include system-auth
+session optional pam_console.so
+session required pam_namespace.so
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.el4 b/redhat/tdebase/pamd.kscreensaver-trinity.el4
new file mode 100644
index 000000000..48e0276a6
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.el4
@@ -0,0 +1,11 @@
+#%PAM-1.0
+auth required pam_stack.so service=system-auth
+auth required pam_nologin.so
+auth sufficient pam_timestamp.so
+account required pam_stack.so service=system-auth
+password required pam_stack.so service=system-auth
+session required pam_stack.so service=system-auth
+session required pam_loginuid.so
+session optional pam_timestamp.so
+session optional pam_selinux.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.el5 b/redhat/tdebase/pamd.kscreensaver-trinity.el5
new file mode 100644
index 000000000..56939d5a9
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.el5
@@ -0,0 +1,9 @@
+#%PAM-1.0
+auth include system-auth
+account required pam_nologin.so
+account include system-auth
+password include system-auth
+session include system-auth
+session required pam_loginuid.so
+session optional pam_selinux.so
+session optional pam_console.so
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.el6 b/redhat/tdebase/pamd.kscreensaver-trinity.el6
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.el6
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.fc15 b/redhat/tdebase/pamd.kscreensaver-trinity.fc15
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.fc15
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.fc16 b/redhat/tdebase/pamd.kscreensaver-trinity.fc16
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.fc16
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.fc17 b/redhat/tdebase/pamd.kscreensaver-trinity.fc17
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.fc17
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.mdv2011.0 b/redhat/tdebase/pamd.kscreensaver-trinity.mdv2011.0
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.mdv2011.0
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.mga2 b/redhat/tdebase/pamd.kscreensaver-trinity.mga2
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.mga2
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/pamd.kscreensaver-trinity.pclos2012 b/redhat/tdebase/pamd.kscreensaver-trinity.pclos2012
new file mode 100644
index 000000000..0a37e6e13
--- /dev/null
+++ b/redhat/tdebase/pamd.kscreensaver-trinity.pclos2012
@@ -0,0 +1,5 @@
+#%PAM-1.0
+auth include system-auth
+account include system-auth
+password include system-auth
+session include system-auth
diff --git a/redhat/tdebase/plasma-desktop b/redhat/tdebase/plasma-desktop
new file mode 100644
index 000000000..9e14070d8
--- /dev/null
+++ b/redhat/tdebase/plasma-desktop
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# This stupid scripts prevent the launch of 'plasma-desktop'
+# (from KDE4) alongside with TDE.
+
+case "${DESKTOP_SESSION}" in
+ "kde3"|"trinity"|"TDE") ;;
+ *) exec /usr/bin/plasma-desktop;;
+esac
diff --git a/redhat/tdebase/r1182808.diff b/redhat/tdebase/r1182808.diff
new file mode 100644
index 000000000..6163d996f
--- /dev/null
+++ b/redhat/tdebase/r1182808.diff
@@ -0,0 +1,29 @@
+Index: kdebase/kdesktop/init/My_Documents
+===================================================================
+--- kdebase/kdesktop/init/My_Documents (revision 1182807)
++++ kdebase/kdesktop/init/My_Documents (revision 1182808)
+@@ -1,10 +1,6 @@
+ [Desktop Entry]
+ Encoding=UTF-8
+-Comment=
+-Comment[en_US]=
+-Exec=kxdglauncher --xdgname DOCUMENTS
+ Icon=folder_wordprocessing
+-MimeType=
+ Name=My Documents
+ Name[af]=Dokument Gids
+ Name[ar]=مستنداتي
+@@ -70,10 +66,12 @@
+ Name[wa]=Ridant documints
+ Name[zh_CN]=文档文件夹
+ Name[zh_TW]=文件目錄
++URL=$( kxdglauncher --getpath --xdgname DOCUMENTS )
++Type=Link
+ StartupNotify=true
++MimeType=
+ Terminal=false
+ TerminalOptions=
+-Type=Application
+ X-DCOP-ServiceType=
+ X-KDE-SubstituteUID=false
+ X-KDE-Username=
diff --git a/redhat/tdebase/r1201523.diff b/redhat/tdebase/r1201523.diff
new file mode 100644
index 000000000..7272968b2
--- /dev/null
+++ b/redhat/tdebase/r1201523.diff
@@ -0,0 +1,31 @@
+Index: kdebase/kcontrol/crypto/crypto.cpp
+===================================================================
+--- kdebase/kcontrol/crypto/crypto.cpp (revision 1201522)
++++ kdebase/kcontrol/crypto/crypto.cpp (revision 1201523)
+@@ -2321,7 +2321,7 @@
+ unsigned int i;
+ SSL_CTX *ctx;
+ SSL *ssl;
+-SSL_METHOD *meth;
++const SSL_METHOD *meth;
+
+ SSLv2Box->clear();
+ SSLv3Box->clear();
+@@ -2337,7 +2337,7 @@
+ CipherItem *item;
+ for (i=0; ; i++) {
+ int j, k;
+- SSL_CIPHER *sc;
++ const SSL_CIPHER *sc;
+ sc = (meth->get_cipher)(i);
+ if (!sc)
+ break;
+@@ -2365,7 +2365,7 @@
+
+ for (i=0; ; i++) {
+ int j, k;
+- SSL_CIPHER *sc;
++ const SSL_CIPHER *sc;
+ sc = (meth->get_cipher)(i);
+ if (!sc)
+ break;
diff --git a/redhat/tdebase/r1201705.diff b/redhat/tdebase/r1201705.diff
new file mode 100644
index 000000000..c7dff1e6e
--- /dev/null
+++ b/redhat/tdebase/r1201705.diff
@@ -0,0 +1,43 @@
+Index: kdebase/kcontrol/crypto/crypto.cpp
+===================================================================
+--- kdebase/kcontrol/crypto/crypto.cpp (revision 1201704)
++++ kdebase/kcontrol/crypto/crypto.cpp (revision 1201705)
+@@ -2316,12 +2316,19 @@
+
+
+ #ifdef HAVE_SSL
++
++#if OPENSSL_VERSION_NUMBER >= 0x10000000L
++#define SSL_CONST const
++#else
++#define SSL_CONST
++#endif
++
+ // This gets all the available ciphers from OpenSSL
+ bool KCryptoConfig::loadCiphers() {
+ unsigned int i;
+ SSL_CTX *ctx;
+ SSL *ssl;
+-const SSL_METHOD *meth;
++SSL_CONST SSL_METHOD *meth;
+
+ SSLv2Box->clear();
+ SSLv3Box->clear();
+@@ -2337,7 +2344,7 @@
+ CipherItem *item;
+ for (i=0; ; i++) {
+ int j, k;
+- const SSL_CIPHER *sc;
++ SSL_CONST SSL_CIPHER *sc;
+ sc = (meth->get_cipher)(i);
+ if (!sc)
+ break;
+@@ -2365,7 +2372,7 @@
+
+ for (i=0; ; i++) {
+ int j, k;
+- const SSL_CIPHER *sc;
++ SSL_CONST SSL_CIPHER *sc;
+ sc = (meth->get_cipher)(i);
+ if (!sc)
+ break;
diff --git a/redhat/tdebase/r1221326.diff b/redhat/tdebase/r1221326.diff
new file mode 100644
index 000000000..b164a4679
--- /dev/null
+++ b/redhat/tdebase/r1221326.diff
@@ -0,0 +1,13 @@
+Index: kdebase/kcontrol/randr/krandrbindings.cpp
+===================================================================
+--- kdebase/kcontrol/randr/krandrbindings.cpp (revision 1221325)
++++ kdebase/kcontrol/randr/krandrbindings.cpp (revision 1221326)
+@@ -28,7 +28,7 @@
+
+ keys->insert( "Program:krandrtray", i18n("Display Control") );
+
+- DEF( I18N_NOOP("Switch Displays"), KShortcut::KShortcut(TQString("XF86Display")), KShortcut::KShortcut(TQString("XF86Display")), slotCycleDisplays() );
++ DEF( I18N_NOOP("Switch Displays"), KShortcut(TQString("XF86Display")), KShortcut(TQString("XF86Display")), slotCycleDisplays() );
+
+ #undef DEF
+ #undef WIN
diff --git a/redhat/tdebase/suse-displaymanagers-tdm b/redhat/tdebase/suse-displaymanagers-tdm
new file mode 100644
index 000000000..7170ca8f2
--- /dev/null
+++ b/redhat/tdebase/suse-displaymanagers-tdm
@@ -0,0 +1,21 @@
+tdm_start_proc() {
+ splashcopy 0 6
+ # stop plymouth (bug#775548)
+ plymouth_quit
+
+ return 0
+}
+
+tdm_vars() {
+ TDM_BIN=/opt/trinity/bin/kdm
+ case "${DISPLAYMANAGER##*/}" in
+ tdm)
+ export KDEROOTHOME=/root/.kdm
+ DISPLAYMANAGER=$TDM_BIN
+ STARTPROC=tdm_start_proc
+ ;;
+ *) return 1 ;;
+ esac
+ return 0
+}
+
diff --git a/redhat/tdebase/tdebase-3.5.13.1-missing_ldflags.patch b/redhat/tdebase/tdebase-3.5.13.1-missing_ldflags.patch
new file mode 100644
index 000000000..6f6173ef0
--- /dev/null
+++ b/redhat/tdebase/tdebase-3.5.13.1-missing_ldflags.patch
@@ -0,0 +1,10 @@
+--- kdebase/khotkeys/arts/CMakeLists.txt.ORI 2012-08-07 21:21:45.840401244 +0200
++++ kdebase/khotkeys/arts/CMakeLists.txt 2012-08-07 21:22:06.260974727 +0200
+@@ -25,6 +25,7 @@
+ ${CMAKE_SOURCE_DIR}/khotkeys/kcontrol
+ ${TDE_INCLUDE_DIR}
+ ${TQT_INCLUDE_DIRS}
++ ${ARTS_INCLUDE_DIRS}
+ )
+
+ link_directories(
diff --git a/redhat/tdebase/tdebase-r14.spec b/redhat/tdebase/tdebase-r14.spec
new file mode 100644
index 000000000..249b7f4a9
--- /dev/null
+++ b/redhat/tdebase/tdebase-r14.spec
@@ -0,0 +1,648 @@
+# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
+%if "%{?_prefix}" != "/usr"
+%define _variant .opt
+%define _docdir %{_prefix}/share/doc
+%endif
+
+# TDE specific variables
+BuildRequires: cmake >= 2.8
+%define tde_docdir %{_docdir}/trinity
+%define tde_libdir %{_libdir}/trinity
+
+# Older RHEL/Fedora versions use packages named "qt", "qt-devel", ..
+# whereas newer versions use "qt3", "qt3-devel" ...
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 8
+%define _qt_suffix 3
+%endif
+
+
+Name: tdebase
+Version: r14
+Release: 1%{?dist}%{?_variant}
+License: GPL
+Summary: Trinity Base Programs
+Group: User Interface/Desktops
+
+Vendor: Trinity Project
+Packager: Francois Andriot <francois.andriot@free.fr>
+URL: http://www.trinitydesktop.org/
+
+Prefix: %{_prefix}
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Source0: tdebase-%{version}.tar.gz
+
+# Wrapper script to prevent Plasma launch at Trinity Startup
+Source1: plasma-desktop
+
+# Pam configuration files for RHEL / Fedora
+Source2: pamd.kdm-trinity%{?dist}
+Source3: pamd.kdm-trinity-np%{?dist}
+Source4: pamd.kcheckpass-trinity%{?dist}
+Source5: pamd.kscreensaver-trinity%{?dist}
+
+# TDE unofficial patches, fixing FTBFS
+
+# TDE for RHEL/Fedora specific patches
+## [kdebase/kdesktop] Modifies 'open terminal here' on desktop
+Patch11: kdebase-3.5.12-desktop-openterminalhere.patch
+## [kdebase/kioslave] Forces HAL backend to use HAL mount options
+Patch12: kdebase-3.5.12-halmountoptions.patch
+
+# TDE unofficial patches for enhanced features or bugfixes.
+## [kdebase/kioslave/man] Fix kio_man for older distros without 'man-db' [Bug #714]
+Patch21: kdebase-3.5.13-kio_man_utf8.patch
+## [kdebase/konqueror] Re-enable 'open tab in background' [Bug #245]
+Patch22: kdebase-3.5.13-konq_menu_tab_background.patch
+## [kdebase/kicker] Restores the original KDE3 clock [Bug #387]
+Patch27: kdebase-3.5.13-restore_kde3_clock.patch
+
+# Fedora 15 Theme: "Lovelock"
+%if 0%{?fedora} == 15
+Requires: lovelock-backgrounds-single
+%define tde_bg /usr/share/backgrounds/lovelock/default/standard/lovelock.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 15
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# Fedora 16 Theme: "Verne"
+%if 0%{?fedora} == 16
+Requires: verne-backgrounds-single
+%define tde_bg /usr/share/backgrounds/verne/default/standard/verne.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 16
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# RHEL 5 Theme
+%if 0%{?rhel} == 5
+Requires: desktop-backgrounds-basic
+%define tde_bg /usr/share/backgrounds/images/default.jpg
+
+Requires: indexhtml
+%define tde_aboutlabel Enterprise Linux 5
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# RHEL 6 Theme
+%if 0%{?rhel} == 6
+Requires: redhat-logos
+%define tde_bg /usr/share/backgrounds/default.png
+
+Requires: redhat-indexhtml
+%define tde_aboutlabel Enterprise Linux 6
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+BuildRequires: tqtinterface-devel
+BuildRequires: trinity-arts-devel
+BuildRequires: tdelibs-devel >= %{version}
+BuildRequires: tqt3-devel >= 3.4.0
+BuildRequires: openssl-devel
+BuildRequires: avahi-devel
+BuildRequires: avahi-tqt-devel
+BuildRequires: imake
+BuildRequires: xorg-x11-proto-devel
+BuildRequires: OpenEXR-devel
+BuildRequires: libsmbclient-devel
+BuildRequires: dbus-devel
+BuildRequires: dbus-tqt-devel
+BuildRequires: lm_sensors-devel
+BuildRequires: libfontenc-devel
+BuildRequires: hal-devel
+BuildRequires: audiofile-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: libraw1394-devel
+BuildRequires: openldap-devel
+BuildRequires: libvorbis-devel
+BuildRequires: pam-devel
+BuildRequires: libXdmcp-devel
+BuildRequires: libxkbfile-devel
+BuildRequires: libusb-devel
+BuildRequires: esound-devel
+BuildRequires: glib2-devel
+BuildRequires: libXcomposite-devel
+BuildRequires: libXtst-devel
+BuildRequires: libXdamage-devel
+BuildRequires: xorg-x11-font-utils
+BuildRequires: jack-audio-connection-kit-devel
+BuildRequires: nas-devel
+
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 15
+BuildRequires: libudev-devel
+%endif
+
+Requires: tqtinterface >= %{version}
+Requires: trinity-arts
+Requires: tdelibs >= %{version}
+Requires: tqt3 >= 3.4.0
+Requires: openssl
+Requires: avahi
+Requires: avahi-tqt
+Requires: dbus-tqt
+# Provides the global Xsession script (/etc/X11/xinit/Xsession)
+Requires: xorg-x11-xinit
+
+
+# RHEL 6 Configuration files are provided in separate packages
+%if "%{?_prefix}" == "/usr"
+Requires: kde-settings-kdm
+%endif
+Requires: redhat-menus
+
+#Provides: kdebase%{?_qt_suffix} = %{version}
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix} = %{version}
+Obsoletes: kdebase%{?_qt_suffix} <= 3.5.10
+%endif
+
+
+# Required for Fedora LiveCD
+Provides: service(graphical-login)
+
+Obsoletes: trinity-kdebase <= 3.5.13
+
+
+%description
+Core applications for the Trinity Desktop Environment. Included are: kdm
+(replacement for xdm), twin (window manager), konqueror (filemanager,
+web browser, ftp client, ...), konsole (xterm replacement), kpanel
+(application starter and desktop pager), kaudio (audio server),
+kdehelp (viewer for kde help files, info and man pages), kthememgr
+(system for managing alternate theme packages) plus other KDE
+components (kcheckpass, kikbd, kscreensaver, kcontrol, kfind,
+kfontmanager, kmenuedit).
+
+
+%package devel
+Requires: %{name}
+Requires: %{name}-libs = %{version}-%{release}
+Requires: tdelibs-devel >= %{version}
+Summary: %{summary} - Development files
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-devel = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-devel <= 3.5.10
+%endif
+Obsoletes: trinity-kdebase-devel <= 3.5.13
+
+Group: Development/Libraries
+%description devel
+Header files for developing applications using %{name}.
+Install kdebase-devel if you want to develop or compile Konqueror,
+Kate plugins or TWin styles.
+
+
+%package extras
+Summary: Extra applications from %{name}
+Group: User Interface/Desktops
+Requires: %{name} = %{version}-%{release}
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-extras = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-extras <= 3.5.10
+%endif
+Obsoletes: trinity-kdebase-extras <= 3.5.13
+%description extras
+%{summary}, including:
+ * kappfinder
+ * kpager
+ * ktip
+ * kpersonalizer
+
+
+%package libs
+Summary: %{name} runtime libraries
+Group: System Environment/Libraries
+Requires: tdelibs >= %{version}
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-libs = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-libs <= 3.5.10
+%endif
+Requires: %{name} = %{version}-%{release}
+Obsoletes: trinity-kdebase-libs <= 3.5.13
+%description libs
+%{summary}
+
+
+%package pim-ioslaves
+Summary: PIM KIOslaves from %{name}
+Group: System Environment/Libraries
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-pim-ioslaves = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-pim-ioslaves <= 3.5.10
+%endif
+Obsoletes: trinity-kdebase-pim-ioslaves <= 3.5.13
+%description pim-ioslaves
+Protocol handlers (KIOslaves) for personal information management, including:
+ * kio_ldap
+ * kio_nntp
+ * kio_pop3
+ * kio_smtp
+
+
+%prep
+%setup -q -n %{name}
+
+%patch11 -p1
+%patch12 -p1
+
+%if 0%{?rhel} > 0
+%patch21 -p1
+%endif
+%patch22 -p1
+%patch27 -p0
+
+# Applies an optional distro-specific graphical theme
+%if "%{?tde_bg}" != ""
+# TDM Background
+%__sed -i "tdm/kfrontend/gentdmconf.c" \
+ -e 's|"Wallpaper=isadora.png\n"|"Wallpaper=%{tde_bg}\n"|'
+
+# TDE user default background
+%__sed -i "kpersonalizer/keyecandypage.cpp" \
+ -e 's|#define DEFAULT_WALLPAPER "isadora.png"|#define DEFAULT_WALLPAPER "%{tde_bg}"|'
+%__sed -i "starttde" \
+ -e 's|/usr/share/wallpapers/isadora.png.desktop|%{tde_bg}|' \
+ -e 's|Wallpaper=isadora.png|Wallpaper=%{tde_bg}|'
+%endif
+
+# TDE branding: removes KUbuntu references [Bug #617]
+%__sed -i "kcontrol/tdm/tdm-appear.cpp" \
+ -e "s|Welcome to Kubuntu |Welcome to %{tde_aboutlabel} |"
+%__sed -i "konqueror/about/konq_aboutpage.cc" \
+ -e "s|About Kubuntu|About %{tde_aboutlabel}|" \
+ -e "s|help:/kubuntu/|%{tde_aboutpage}|" \
+ -e "s|Kubuntu Documentation|%{tde_aboutlabel} Documentation|"
+%__sed -i "konqueror/about/launch.html" \
+ -e "s|help:/kubuntu/about-kubuntu/index.html|%{tde_aboutpage}|"
+%__sed -i "tdm/config.def" \
+ -e "s|Welcome to Trinity |Welcome to %{tde_aboutlabel} |"
+
+# TDE default directory in 'starttde' script (TDEDIR)
+%__sed -i "starttde" \
+ -e "s|/opt/trinity|%{_prefix}|g"
+
+%build
+export PATH="%{_bindir}:${PATH}"
+export PKG_CONFIG_PATH="%{_libdir}/pkgconfig"
+export CMAKE_INCLUDE_PATH="%{_includedir}:%{_includedir}/tqt"
+export LD_LIBRARY_PATH="%{_libdir}"
+
+%__mkdir build
+cd build
+%cmake \
+ -DHAVE_REAL_TQT=ON \
+ -DHTML_INSTALL_DIR=%{tde_docdir}/HTML \
+ -DWITH_SASL=ON \
+ -DWITH_LDAP=ON \
+ -DWITH_SAMBA=ON \
+ -DWITH_OPENEXR=ON \
+ -DWITH_XCOMPOSITE=ON \
+ -DWITH_XCURSOR=ON \
+ -DWITH_XFIXES=ON \
+%if 0%{?fedora} || 0%{?rhel} >= 6
+ -DWITH_XRANDR=ON \
+%else
+ -DWITH_XRANDR=OFF \
+%endif
+ -DWITH_XRENDER=ON \
+ -DWITH_XDAMAGE=ON \
+ -DWITH_XEXT=ON \
+ -DWITH_XTEST=ON \
+ -DWITH_LIBUSB=ON \
+ -DWITH_LIBRAW1394=ON \
+ -DWITH_PAM=ON \
+ -DWITH_SHADOW=OFF \
+ -DWITH_XDMCP=ON \
+ -DWITH_XINERAMA=ON \
+ -DWITH_ARTS=ON \
+ -DWITH_I8K=OFF \
+ -DWITH_HAL=ON \
+ -DBUILD_ALL=ON \
+ -DKCHECKPASS_PAM_SERVICE="kcheckpass-trinity" \
+ -DKDM_PAM_SERVICE="kdm-trinity" \
+ -DKSCREENSAVER_PAM_SERVICE="kscreensaver-trinity" \
+ ..
+
+%__make %{?_smp_mflags}
+
+%install
+%__rm -rf %{?buildroot}
+%__make install DESTDIR=%{?buildroot} -C build
+
+# Adds a GDM/KDM/TDM/XDM session called 'TDE'
+%__install -D -m 644 \
+ "%{?buildroot}%{_datadir}/apps/tdm/sessions/tde.desktop" \
+ "%{?buildroot}%{_usr}/share/xsessions/tde.desktop"
+
+# Renames '/etc/ksysguarddrc' to avoid conflict with KDE4 'ksysguard'
+%__mv -f \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc.tde
+
+# TDE 3.5.12: add script "plasma-desktop" to avoid conflict with KDE4
+%if "%{?_prefix}" != "/usr"
+%__install -m 755 "%{SOURCE1}" "%{?buildroot}%{_bindir}"
+%endif
+
+# PAM configuration files
+%__install -D -m 644 "%{SOURCE2}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity"
+%__install -D -m 644 "%{SOURCE3}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity-np"
+%__install -D -m 644 "%{SOURCE4}" "%{?buildroot}%{_sysconfdir}/pam.d/kcheckpass-trinity"
+%__install -D -m 644 "%{SOURCE5}" "%{?buildroot}%{_sysconfdir}/pam.d/kscreensaver-trinity"
+
+# KDM configuration for RHEL/Fedora
+%__sed -i "%{?buildroot}%{_datadir}/config/tdm/tdmrc" \
+%if 0%{?fedora} >= 16
+ -e "s/^#*MinShowUID=.*/MinShowUID=1000/"
+%else
+ -e "s/^#*MinShowUID=.*/MinShowUID=500/"
+%endif
+
+# Moves the XDG configuration files to TDE directory
+%if "%{_prefix}" != "/usr"
+%__mkdir_p "%{?buildroot}%{_prefix}/etc"
+%__mv -f "%{?buildroot}%{_sysconfdir}/xdg" "%{?buildroot}%{_prefix}/etc"
+%endif
+
+%clean
+%__rm -rf %{?buildroot}
+
+
+%post
+touch --no-create %{_datadir}/icons/crystalsvg 2> /dev/null || :
+gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
+update-desktop-database 2> /dev/null || :
+# Dirty hack to install '/etc/ksysguardrc' alongside with KDE4
+[ -r "%{_sysconfdir}/ksysguarddrc" ] || cp -f "%{_sysconfdir}/ksysguarddrc.tde" "%{_sysconfdir}/ksysguarddrc"
+
+%postun
+touch --no-create %{_datadir}/icons/crystalsvg 2> /dev/null || :
+gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
+update-desktop-database 2> /dev/null || :
+
+
+%post libs
+/sbin/ldconfig
+
+%postun libs
+/sbin/ldconfig
+
+%post extras
+for f in crystalsvg hicolor ; do
+ touch --no-create %{_datadir}/icons/${f} 2> /dev/null ||:
+ gtk-update-icon-cache -q %{_datadir}/icons/${f} 2> /dev/null ||:
+done
+update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
+
+%postun extras
+for f in crystalsvg hicolor ; do
+ touch --no-create %{_datadir}/icons/${f} 2> /dev/null ||:
+ gtk-update-icon-cache -q %{_datadir}/icons/${f} 2> /dev/null ||:
+done
+update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
+
+
+%files extras
+%defattr(-,root,root,-)
+# kappfinder
+%{_bindir}/kappfinder
+%{_datadir}/applications/kde/kappfinder.desktop
+%{_datadir}/applnk/System/kappfinder.desktop
+%{_datadir}/apps/kappfinder/
+%{_datadir}/icons/hicolor/*/apps/kappfinder.png
+# ktip
+%{_bindir}/ktip
+%{_datadir}/applications/kde/ktip.desktop
+%{_datadir}/applnk/Toys/ktip.desktop
+%{_datadir}/apps/kdewizard
+%{_datadir}/autostart/ktip.desktop
+%{_datadir}/icons/hicolor/*/apps/ktip*
+# kpersonalizer
+%{_bindir}/kpersonalizer
+%{_datadir}/applications/kde/kpersonalizer.desktop
+%{_datadir}/applnk/System/kpersonalizer.desktop
+%{_datadir}/apps/kpersonalizer/
+%{_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
+# kpager
+%{_bindir}/kpager
+%{_datadir}/applications/kde/kpager.desktop
+%{_datadir}/applnk/Utilities/kpager.desktop
+%{_datadir}/icons/hicolor/*/apps/kpager.png
+
+
+%files
+%defattr(-,root,root,-)
+# kappfinder
+%exclude %{_datadir}/applications/kde/kappfinder.desktop
+%exclude %{_datadir}/applnk/System/kappfinder.desktop
+%exclude %{_datadir}/apps/kappfinder/
+%exclude %{_datadir}/icons/hicolor/*/apps/kappfinder.png
+# ktip
+%exclude %{_datadir}/applications/kde/ktip.desktop
+%exclude %{_datadir}/applnk/Toys/ktip.desktop
+%exclude %{_datadir}/apps/kdewizard
+%exclude %{_datadir}/autostart/ktip.desktop
+%exclude %{_datadir}/icons/hicolor/*/apps/ktip*
+# kpersonalizer
+%exclude %{_datadir}/applications/kde/kpersonalizer.desktop
+%exclude %{_datadir}/applnk/System/kpersonalizer.desktop
+%exclude %{_datadir}/apps/kpersonalizer/
+%exclude %{_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
+# kpager
+%exclude %{_datadir}/applications/kde/kpager.desktop
+%exclude %{_datadir}/applnk/Utilities/kpager.desktop
+%exclude %{_datadir}/icons/hicolor/*/apps/kpager.png
+
+# Pam configuration
+%{_sysconfdir}/pam.d/*
+
+%doc AUTHORS COPYING COPYING-DOCS README README.pam
+%{tde_docdir}/HTML/en/*
+%config(noreplace) %{_sysconfdir}/ksysguarddrc.tde
+%{_bindir}/gentdmconf
+%{_bindir}/kaccess
+%{_bindir}/kapplymousetheme
+%{_bindir}/kate
+%{_bindir}/kblankscrn.kss
+%{_bindir}/kbookmarkmerger
+%{_bindir}/kcminit
+%{_bindir}/kcminit_startup
+%{_bindir}/kcontrol
+%{_bindir}/kcontroledit
+%{_bindir}/kdebugdialog
+%{_bindir}/kdeinstallktheme
+%{_bindir}/kdepasswd
+%{_bindir}/tdesu
+%attr(0755,root,root) %{_bindir}/tdesud
+%{_bindir}/kdialog
+%{_bindir}/tdm
+%{_bindir}/tdmctl
+%{_bindir}/keditbookmarks
+%{_bindir}/keditfiletype
+%{_bindir}/kfind
+%{_bindir}/kfmclient
+%{_bindir}/khelpcenter
+%{_bindir}/khotkeys
+%{_bindir}/kinfocenter
+%{_bindir}/klipper
+%{_bindir}/kmenuedit
+%{_bindir}/konqueror
+%{_bindir}/konsole
+%{_bindir}/krandom.kss
+%{_bindir}/krdb
+%{_bindir}/kreadconfig
+%{_bindir}/ksmserver
+%{_bindir}/ksplashsimple
+%{_bindir}/kstart
+%{_bindir}/ksysguard
+%{_bindir}/ksysguardd
+%{_bindir}/ksystraycmd
+%{_bindir}/ktrash
+%{_bindir}/twin
+%{_bindir}/twin_killer_helper
+%{_bindir}/twin_rules_dialog
+%{_bindir}/kwrite
+%{_bindir}/kwriteconfig
+%{_bindir}/kxkb
+%{_bindir}/nspluginscan
+%{_bindir}/nspluginviewer
+%{_bindir}/starttde
+%{_bindir}/kcheckrunning
+%{_bindir}/kdesktop
+%{_bindir}/kdesktop_lock
+%{_bindir}/tdm_config
+%{_bindir}/tdm_greet
+%{_bindir}/kfontinst
+%{_bindir}/kfontview
+%{_bindir}/krootimage
+%{_bindir}/kwebdesktop
+%{_datadir}/autostart/*
+%{_datadir}/desktop-directories/*
+%{_datadir}/locale/*/entry.desktop
+%{_datadir}/locale/l10n
+%{_datadir}/templates/*
+%{_datadir}/templates/.source/*
+%{_datadir}/wallpapers/*
+%{_bindir}/appletproxy
+%{_bindir}/drkonqi
+%{_bindir}/extensionproxy
+%{_bindir}/kasbar
+%attr(4755,root,root) %{_bindir}/kcheckpass
+%{_bindir}/kdeeject
+%{_bindir}/khc_docbookdig.pl
+%{_bindir}/khc_htdig.pl
+%{_bindir}/khc_htsearch.pl
+%{_bindir}/khc_indexbuilder
+%{_bindir}/khc_mansearch.pl
+%{_bindir}/kicker
+%{_bindir}/knetattach
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 15
+%{_bindir}/krandrtray
+%endif
+%{_bindir}/kompmgr
+%{_bindir}/kpm
+%{_bindir}/ksplash
+%{_libdir}/kconf_update_bin
+%{_datadir}/applnk/*.desktop
+%{_datadir}/applnk/*/*
+%{_datadir}/applnk/.hidden/*
+%exclude %{_datadir}/applnk/.hidden/.directory
+%{_datadir}/config.kcfg/*
+%{_bindir}/kio_media_mounthelper
+%{_bindir}/kdcop
+%{_bindir}/tdeprintfax
+%{_bindir}/khc_beagle_index.pl
+%{_bindir}/khc_beagle_search.pl
+%{_bindir}/kxdglauncher
+%{_bindir}/kjobviewer
+%{_bindir}/klocaldomainurifilterhelper
+%{_bindir}/kprinter
+%{_datadir}/applications/*/*
+%{_datadir}/apps/*
+%{_datadir}/icons/*color/*/*/*
+%{_datadir}/icons/crystalsvg/*/*/*
+%{_datadir}/mimelnk/*/*
+%{_datadir}/services/*
+%{_datadir}/servicetypes/*
+%{_datadir}/sounds/*
+%{tde_libdir}/*
+%{_libdir}/libtdeinit_*.*
+%if "%{_prefix}" != "/usr"
+%{_prefix}/etc/xdg/menus/applications-merged/kde-essential.menu
+%{_prefix}/etc/xdg/menus/kde-information.menu
+%{_prefix}/etc/xdg/menus/kde-screensavers.menu
+%{_prefix}/etc/xdg/menus/kde-settings.menu
+%else
+%{_sysconfdir}/xdg/menus/applications-merged/kde-essential.menu
+%{_sysconfdir}/xdg/menus/kde-information.menu
+%{_sysconfdir}/xdg/menus/kde-screensavers.menu
+%{_sysconfdir}/xdg/menus/kde-settings.menu
+%endif
+/usr/share/xsessions/*.desktop
+# Remove conflicts with redhat-menus
+%if "%{?_prefix}" != "/usr"
+%{_bindir}/plasma-desktop
+%config(noreplace) %{_datadir}/config/*
+%else
+%exclude %{_datadir}/config
+%endif
+# exclude pim-ioslaves files from main package
+%exclude %{tde_libdir}/kio_ldap.*
+%exclude %{tde_libdir}/kio_nntp.*
+%exclude %{tde_libdir}/kio_pop3.*
+%exclude %{tde_libdir}/kio_smtp.*
+%exclude %{_datadir}/services/ldap*.protocol
+%exclude %{_datadir}/services/nntp*.protocol
+%exclude %{_datadir}/services/pop3*.protocol
+%exclude %{_datadir}/services/smtp*.protocol
+
+# New in TDE 3.5.13
+%{_bindir}/krootbacking
+%{_bindir}/tsak
+%attr(4511,root,root) %{_bindir}/tdmtsak
+
+# New in TDE R14
+%{_bindir}/crashtest
+%{_bindir}/tdeinit_phase1
+%{_bindir}/twin_resumer_helper
+
+
+%files libs
+%defattr(-,root,root,-)
+%exclude %{_libdir}/libtdeinit_*.*
+%{_libdir}/lib*.so.*
+%{_libdir}/lib*.la
+
+%files pim-ioslaves
+%defattr(-,root,root,-)
+%{tde_libdir}/kio_ldap.*
+%{tde_libdir}/kio_nntp.*
+%{tde_libdir}/kio_pop3.*
+%{tde_libdir}/kio_smtp.*
+%{_datadir}/services/ldap*.protocol
+%{_datadir}/services/nntp*.protocol
+%{_datadir}/services/pop3*.protocol
+%{_datadir}/services/smtp*.protocol
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/*.h
+%dir %{_includedir}/kate
+%{_includedir}/kate/*
+%dir %{_includedir}/twin
+%{_includedir}/twin/*
+%dir %{_includedir}/ksgrd
+%{_includedir}/ksgrd/*
+%dir %{_includedir}/ksplash
+%{_includedir}/ksplash/*
+%{_libdir}/lib*.so
+%exclude %{_libdir}/libtdeinit_*.*
+# New in TDE 3.5.13
+%{_datadir}/cmake/*.cmake
+
+%changelog
+* Sun Mar 04 2012 Francois Andriot <francois.andriot@free.fr> - r14-1
+- Initial build for TDE R14, using 'tqt3' instead of 'qt3'
diff --git a/redhat/tdebase/tiles-fixed-png-images.tar.gz b/redhat/tdebase/tiles-fixed-png-images.tar.gz
new file mode 100644
index 000000000..67b5226d6
--- /dev/null
+++ b/redhat/tdebase/tiles-fixed-png-images.tar.gz
Binary files differ
diff --git a/redhat/tdebase/trinity-kdebase-3.5.12.spec b/redhat/tdebase/trinity-kdebase-3.5.12.spec
new file mode 100644
index 000000000..9982abd3a
--- /dev/null
+++ b/redhat/tdebase/trinity-kdebase-3.5.12.spec
@@ -0,0 +1,757 @@
+# Default version for this component
+%if "%{?version}" == ""
+%define version 3.5.12
+%endif
+%define release 15
+
+# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
+%if "%{?_prefix}" != "/usr"
+%define _variant .opt
+%define _docdir %{_prefix}/share/doc
+%endif
+
+# TDE 3.5.12 specific building variables
+BuildRequires: autoconf automake libtool m4
+%define tde_docdir %{_docdir}
+%define tde_libdir %{_libdir}/kde3
+
+# Older RHEL/Fedora versions use packages named "qt", "qt-devel", ..
+# whereas newer versions use "qt3", "qt3-devel" ...
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 8
+%define _qt_suffix 3
+%endif
+
+
+Name: trinity-kdebase
+Version: %{?version}
+Release: %{?release}%{?dist}%{?_variant}
+License: GPL
+Summary: Trinity KDE Base Programs
+Group: User Interface/Desktops
+
+Vendor: Trinity Project
+Packager: Francois Andriot <francois.andriot@free.fr>
+URL: http://www.trinitydesktop.org/
+
+Prefix: %{_prefix}
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Source0: kdebase-%{version}.tar.gz
+
+# Wrapper script to prevent Plasma launch at Trinity Startup
+Source1: plasma-desktop
+
+# Pam configuration files for RHEL / Fedora
+Source2: pamd.kdm-trinity%{?dist}
+Source3: pamd.kdm-trinity-np%{?dist}
+Source4: pamd.kcheckpass-trinity%{?dist}
+Source5: pamd.kscreensaver-trinity%{?dist}
+
+# TDE Official patches (from SVN), unmodified
+# [kdebase/kcontrol] fix for openssl 1.0
+Patch1: http://www.trinitydesktop.org/patches/r1201523.diff
+# [kdebase/kcontrol] make it compatible with openssl < 1.0
+Patch2: http://www.trinitydesktop.org/patches/r1201705.diff
+# Fix My Documents shortcut on desktop
+Patch3: http://www.trinitydesktop.org/patches/r1182808.diff
+# [kdebase] fixed an incompatibility with gcc 4.5
+Patch4: http://www.trinitydesktop.org/patches/r1221326.diff
+
+# TDE Official patches (from SVN), modified
+# [kdebase/ksmserver/shutdowndlg.cpp] Fixed invalid constructor per GCC 4.5.2
+Patch5: kdebase-3.5.12-r1220975.patch
+# [kdebase] Another invalid constructor per gcc 4.5
+Patch6: kdebase-3.5.12-r1220927.patch
+
+# TDE unofficial patches, fixing FTBFS
+## Fix for DBUS include files in RHEL6
+Patch7: kdebase-3.5.12-shutdowndlg-dbus-include.patch
+## [kdebase/kcontrol]: disable components that depends of krandr (old distros)
+Patch8: kdebase-3.5.12-disable-krandr.patch
+
+# TDE for RHEL/Fedora specific patches
+## [kdebase/kdesu] Remove 'ignore' button on 'kdesu' dialog box
+Patch10: kdebase-3.5.12-kdesu-noignorebutton.patch
+## [kdebase/kdesktop] Modifies 'open terminal here' on desktop
+Patch11: kdebase-3.5.12-desktop-openterminalhere.patch
+## [kdebase/kioslave] Forces HAL backend to use HAL mount options
+Patch12: kdebase-3.5.12-halmountoptions.patch
+## [kdebase/kdm/kfrontend] Global Xsession file is '/etc/X11/xinit/Xsession'
+Patch13: kdebase-3.5.13-genkdmconf_Xsession_location.patch
+## [kdebase/kicker/kicker/ui] Fix kickoff menu issues
+Patch14: kdebase-3.5.12-kickoff_unstable.patch
+## [kdebase/startkde] Sets default Start Icon in 'kickerrc'
+Patch15: kdebase-3.5.13-startkde_icon.patch
+## [kdebase/startkde] Fixes duplicate and incorrect TDE directories location
+Patch16: kdebase-3.5.12-startkde_directories.patch
+
+# TDE unofficial patches for enhanced features
+## [kdebase/kate] Restores the 'number of files' and sorting widgets to the Kate configuration
+Patch20: kdebase-3.5.13-kate_mru.patch
+## [kdebase/kioslave/man] Fix kio_man for older distros without 'man-db'
+Patch21: kdebase-3.5.12-kio_man_utf8.patch
+## [kdebase/konqueror] Re-enable 'open tab in background'
+Patch22: kdebase-3.5.12-konq_menu_tab_background.patch
+## [kdebase/konqueror/sidebar] Fix error message on documents parent folder
+Patch23: kdebase-3.5.13-konqsidebar_documents.patch
+## [kdebase/kdesktop/lock] Fix missing black background
+Patch29: kdebase-3.5.12-kdesktop_lock_fix.patch
+## [kdebase/kdm/kfrontend] Allows to hide KDM menu button
+Patch30: kdebase-3.5.12-kdm_hide_menu_button.patch
+
+# Fedora 15 Theme: "Lovelock"
+%if 0%{?fedora} == 15
+Requires: lovelock-backgrounds-single
+%define tde_bg /usr/share/backgrounds/lovelock/default/standard/lovelock.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 15
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# Fedora 16 Theme: "Verne"
+%if 0%{?fedora} == 16
+Requires: verne-backgrounds-single
+%define tde_bg /usr/share/backgrounds/verne/default/standard/verne.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 16
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# RHEL 5 Theme
+%if 0%{?rhel} == 5
+Requires: desktop-backgrounds-basic
+%define tde_bg /usr/share/backgrounds/images/default.jpg
+
+Requires: indexhtml
+%define tde_aboutlabel Enterprise Linux 5
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# RHEL 6 Theme
+%if 0%{?rhel} == 6
+Requires: redhat-logos
+%define tde_bg /usr/share/backgrounds/default.png
+
+Requires: redhat-indexhtml
+%define tde_aboutlabel Enterprise Linux 6
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+BuildRequires: tqtinterface-devel
+BuildRequires: trinity-arts-devel
+BuildRequires: trinity-kdelibs-devel
+BuildRequires: qt%{?_qt_suffix}-devel
+BuildRequires: openssl-devel
+BuildRequires: avahi-devel avahi-qt3-devel
+BuildRequires: imake
+BuildRequires: xorg-x11-proto-devel
+BuildRequires: OpenEXR-devel
+BuildRequires: libsmbclient-devel
+BuildRequires: dbus-devel
+BuildRequires: dbus-qt-devel
+BuildRequires: lm_sensors-devel
+BuildRequires: libfontenc-devel
+BuildRequires: hal-devel
+BuildRequires: audiofile-devel alsa-lib-devel
+BuildRequires: libraw1394-devel
+BuildRequires: openldap-devel
+BuildRequires: libvorbis-devel
+BuildRequires: pam-devel
+BuildRequires: libXdmcp-devel
+BuildRequires: libxkbfile-devel
+BuildRequires: libusb-devel
+BuildRequires: esound-devel
+BuildRequires: glib2-devel
+BuildRequires: libXcomposite-devel
+BuildRequires: libXtst-devel
+BuildRequires: libXdamage-devel
+BuildRequires: xorg-x11-font-utils
+
+# These dependancies are not met in RHEL
+%if 0%{?fedora}
+BuildRequires: jack-audio-connection-kit-devel
+BuildRequires: nas-devel
+%endif
+
+Requires: tqtinterface
+Requires: trinity-arts
+Requires: trinity-kdelibs
+Requires: qt%{?_qt_suffix}
+Requires: openssl
+Requires: avahi avahi-qt3
+Requires: dbus-qt
+# Provides the global Xsession script (/etc/X11/xinit/Xsession)
+Requires: xorg-x11-xinit
+
+
+# RHEL 6 Configuration files are provided in separate packages
+%if "%{?_prefix}" == "/usr"
+Requires: kde-settings-kdm
+%endif
+Requires: redhat-menus
+
+#Provides: kdebase%{?_qt_suffix} = %{version}
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix} = %{version}
+Obsoletes: kdebase%{?_qt_suffix} <= 3.5.10
+%endif
+
+
+# Required for Fedora LiveCD
+Provides: service(graphical-login)
+
+
+%description
+Core applications for the Trinity K Desktop Environment. Included are: kdm
+(replacement for xdm), kwin (window manager), konqueror (filemanager,
+web browser, ftp client, ...), konsole (xterm replacement), kpanel
+(application starter and desktop pager), kaudio (audio server),
+kdehelp (viewer for kde help files, info and man pages), kthememgr
+(system for managing alternate theme packages) plus other KDE
+components (kcheckpass, kikbd, kscreensaver, kcontrol, kfind,
+kfontmanager, kmenuedit).
+
+
+%package devel
+Requires: %{name}
+Requires: %{name}-libs = %{version}-%{release}
+Requires: trinity-kdelibs-devel
+Summary: %{summary} - Development files
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-devel = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-devel <= 3.5.10
+%endif
+
+Group: Development/Libraries
+%description devel
+Header files for developing applications using %{name}.
+Install kdebase-devel if you want to develop or compile Konqueror,
+Kate plugins or KWin styles.
+
+
+%package extras
+Summary: Extra applications from %{name}
+Group: User Interface/Desktops
+Requires: %{name} = %{version}-%{release}
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-extras = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-extras <= 3.5.10
+%endif
+%description extras
+%{summary}, including:
+ * kappfinder
+ * kpager
+ * ktip
+ * kpersonalizer
+
+
+%package libs
+Summary: %{name} runtime libraries
+Group: System Environment/Libraries
+Requires: trinity-kdelibs
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-libs = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-libs <= 3.5.10
+%endif
+Requires: %{name} = %{version}-%{release}
+%description libs
+%{summary}
+
+
+%package pim-ioslaves
+Summary: PIM KIOslaves from %{name}
+Group: System Environment/Libraries
+%if "%{?_prefix}" == "/usr"
+Provides: kdebase%{?_qt_suffix}-pim-ioslaves = %{version}
+Obsoletes: kdebase%{?_qt_suffix}-pim-ioslaves <= 3.5.10
+%endif
+%description pim-ioslaves
+Protocol handlers (KIOslaves) for personal information management, including:
+ * kio_ldap
+ * kio_nntp
+ * kio_pop3
+ * kio_smtp
+
+
+%prep
+%setup -q -n kdebase
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+%patch4 -p1
+%patch5 -p1
+%patch6 -p1
+%patch7 -p1
+%if 0%{?rhel} && 0%{?rhel} < 6
+%patch8 -p1
+%endif
+
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%patch13 -p1
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+
+%patch20 -p4
+%if 0%{?rhel} > 0
+%patch21 -p1
+%endif
+%patch22 -p1
+%patch23 -p1
+
+%patch29 -p1
+%patch30 -p1
+
+# Applies an optional distro-specific graphical theme
+%if "%{?tde_bg}" != ""
+# KDM Background
+%__sed -i "kdm/kfrontend/genkdmconf.c" \
+ -e 's|"Wallpaper=isadora.png\n"|"Wallpaper=%{tde_bg}\n"|'
+
+# TDE user default background
+%__sed -i "kpersonalizer/keyecandypage.cpp" \
+ -e 's|#define DEFAULT_WALLPAPER "isadora.png"|#define DEFAULT_WALLPAPER "%{tde_bg}"|'
+%__sed -i "startkde" \
+ -e 's|/usr/share/wallpapers/isadora.png.desktop|%{tde_bg}|' \
+ -e 's|Wallpaper=isadora.png|Wallpaper=%{tde_bg}|'
+%endif
+
+%__cp "/usr/share/aclocal/libtool.m4" "admin/libtool.m4.in"
+%__cp "/usr/share/libtool/config/ltmain.sh" "admin/ltmain.sh"
+%__make -f "admin/Makefile.common"
+
+# TDE branding: removes KUbuntu references [Bug #617]
+%__sed -i "kcontrol/kdm/kdm-appear.cpp" \
+ -e "s|Welcome to Kubuntu |Welcome to %{tde_aboutlabel} |"
+%__sed -i "konqueror/about/konq_aboutpage.cc" \
+ -e "s|About Kubuntu|About %{tde_aboutlabel}|" \
+ -e "s|help:/kubuntu/|%{tde_aboutpage}|" \
+ -e "s|Kubuntu Documentation|%{tde_aboutlabel} Documentation|"
+%__sed -i "konqueror/about/launch.html" \
+ -e "s|help:/kubuntu/about-kubuntu/index.html|%{tde_aboutpage}|"
+%__sed -i "kdm/config.def" \
+ -e "s|Welcome to Trinity |Welcome to %{tde_aboutlabel} |"
+
+# TDE default directory in 'startkde' script (KDEDIR)
+%__sed -i "startkde" \
+ -e "s|/opt/trinity|%{_prefix}|g"
+
+%build
+unset QTDIR || : ; . /etc/profile.d/qt.sh
+export PATH="%{_bindir}:${PATH}"
+export LDFLAGS="-L%{_libdir} -I%{_includedir}"
+export IMAKEINCLUDE="-I/usr/share/X11/config"
+
+%configure \
+ --disable-rpath \
+ --enable-new-ldflags \
+ --disable-dependency-tracking \
+ --disable-debug --disable-warnings --enable-final \
+ --with-pam=yes \
+ --with-kdm-pam=kdm-trinity \
+ --with-kcp-pam=kcheckpass-trinity \
+ --with-kss-pam=kscreensaver-trinity \
+ --with-libraw1394 \
+ --with-openexr \
+ --with-samba \
+ --with-xinerama \
+ --with-xscreensaver \
+ --without-shadow \
+ --enable-closure \
+ --with-extra-includes=%{_includedir}/tqt
+
+# Do NOT use %{?_smp_mflags} for this package, or it will fail to build !
+%__make
+
+%install
+%__rm -rf %{?buildroot}
+%__make install DESTDIR=%{?buildroot}
+
+# Adds a GDM/KDM/XDM session called 'TDE'
+%__install -D -m 644 \
+ "%{?buildroot}%{_datadir}/apps/kdm/sessions/kde.desktop" \
+ "%{?buildroot}%{_usr}/share/xsessions/tde.desktop"
+
+# Force session name to be 'TDE'
+%__sed -i "%{?buildroot}%{_usr}/share/xsessions/tde.desktop" \
+ -e "s,^Name=.*,Name=TDE,"
+
+# Modifies 'startkde' to set KDEDIR and KDEHOME hardcoded specific for TDE
+%__sed -i "%{?buildroot}%{_bindir}/startkde" \
+ -e '/^echo "\[startkde\] Starting startkde.".*/ s,$,\nexport KDEDIR=%{_prefix}\nexport KDEHOME=~/.trinity,'
+
+# Renames '/etc/ksysguarddrc' to avoid conflict with KDE4 'ksysguard'
+%__mv -f \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc.tde
+
+# TDE 3.5.12: add script "plasma-desktop" to avoid conflict with KDE4
+%if "%{?_prefix}" != "/usr"
+%__install -m 755 "%{SOURCE1}" "%{?buildroot}%{_bindir}"
+%endif
+
+# PAM configuration files
+%__install -D -m 644 "%{SOURCE2}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity"
+%__install -D -m 644 "%{SOURCE3}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity-np"
+%__install -D -m 644 "%{SOURCE4}" "%{?buildroot}%{_sysconfdir}/pam.d/kcheckpass-trinity"
+%__install -D -m 644 "%{SOURCE5}" "%{?buildroot}%{_sysconfdir}/pam.d/kscreensaver-trinity"
+
+# KDM configuration for RHEL/Fedora
+%__sed -i "%{?buildroot}%{_datadir}/config/kdm/kdmrc" \
+%if 0%{?fedora} >= 16
+ -e "s/^#*MinShowUID=.*/MinShowUID=1000/"
+%else
+ -e "s/^#*MinShowUID=.*/MinShowUID=500/"
+%endif
+
+# Moves the XDG configuration files to TDE directory
+%if "%{_prefix}" != "/usr"
+%__mkdir_p "%{?buildroot}%{_prefix}/etc"
+%__mv -f "%{?buildroot}%{_sysconfdir}/xdg" "%{?buildroot}%{_prefix}/etc"
+%endif
+
+%clean
+%__rm -rf %{?buildroot}
+
+
+%post
+touch --no-create %{_datadir}/icons/crystalsvg 2> /dev/null || :
+gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
+update-desktop-database 2> /dev/null || :
+# Dirty hack to install '/etc/ksysguardrc' alongside with KDE4
+[ -r "%{_sysconfdir}/ksysguarddrc" ] || cp -f "%{_sysconfdir}/ksysguarddrc.tde" "%{_sysconfdir}/ksysguarddrc"
+
+%postun
+touch --no-create %{_datadir}/icons/crystalsvg 2> /dev/null || :
+gtk-update-icon-cache --quiet %{_datadir}/icons/crystalsvg 2> /dev/null || :
+update-desktop-database 2> /dev/null || :
+
+
+%post libs
+/sbin/ldconfig
+
+%postun libs
+/sbin/ldconfig
+
+%post extras
+for f in crystalsvg hicolor ; do
+ touch --no-create %{_datadir}/icons/${f} 2> /dev/null ||:
+ gtk-update-icon-cache -q %{_datadir}/icons/${f} 2> /dev/null ||:
+done
+update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
+
+%postun extras
+for f in crystalsvg hicolor ; do
+ touch --no-create %{_datadir}/icons/${f} 2> /dev/null ||:
+ gtk-update-icon-cache -q %{_datadir}/icons/${f} 2> /dev/null ||:
+done
+update-desktop-database %{_datadir}/applications > /dev/null 2>&1 || :
+
+
+%files extras
+%defattr(-,root,root,-)
+# kappfinder
+%{_bindir}/kappfinder
+%{_datadir}/applications/kde/kappfinder.desktop
+%{_datadir}/applnk/System/kappfinder.desktop
+%{_datadir}/apps/kappfinder/
+%{_datadir}/icons/hicolor/*/apps/kappfinder.png
+# ktip
+%{_bindir}/ktip
+%{_datadir}/applications/kde/ktip.desktop
+%{_datadir}/applnk/Toys/ktip.desktop
+%{_datadir}/apps/kdewizard
+%{_datadir}/autostart/ktip.desktop
+%{_datadir}/icons/hicolor/*/apps/ktip*
+# kpersonalizer
+%{_bindir}/kpersonalizer
+%{_datadir}/applications/kde/kpersonalizer.desktop
+%{_datadir}/applnk/System/kpersonalizer.desktop
+%{_datadir}/apps/kpersonalizer/
+%{_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
+# kpager
+%{_bindir}/kpager
+%{_datadir}/applications/kde/kpager.desktop
+%{_datadir}/applnk/Utilities/kpager.desktop
+%{_datadir}/icons/hicolor/*/apps/kpager.png
+
+
+%files
+%defattr(-,root,root,-)
+# kappfinder
+%exclude %{_datadir}/applications/kde/kappfinder.desktop
+%exclude %{_datadir}/applnk/System/kappfinder.desktop
+%exclude %{_datadir}/apps/kappfinder/
+%exclude %{_datadir}/icons/hicolor/*/apps/kappfinder.png
+# ktip
+%exclude %{_datadir}/applications/kde/ktip.desktop
+%exclude %{_datadir}/applnk/Toys/ktip.desktop
+%exclude %{_datadir}/apps/kdewizard
+%exclude %{_datadir}/autostart/ktip.desktop
+%exclude %{_datadir}/icons/hicolor/*/apps/ktip*
+# kpersonalizer
+%exclude %{_datadir}/applications/kde/kpersonalizer.desktop
+%exclude %{_datadir}/applnk/System/kpersonalizer.desktop
+%exclude %{_datadir}/apps/kpersonalizer/
+%exclude %{_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
+# kpager
+%exclude %{_datadir}/applications/kde/kpager.desktop
+%exclude %{_datadir}/applnk/Utilities/kpager.desktop
+%exclude %{_datadir}/icons/hicolor/*/apps/kpager.png
+
+# Pam configuration
+%{_sysconfdir}/pam.d/*
+
+%doc AUTHORS COPYING COPYING-DOCS README README.pam
+%{tde_docdir}/HTML/en/*
+%config(noreplace) %{_sysconfdir}/ksysguarddrc.tde
+%{_bindir}/genkdmconf
+%{_bindir}/kaccess
+%{_bindir}/kapplymousetheme
+%{_bindir}/kate
+%{_bindir}/kblankscrn.kss
+%{_bindir}/kbookmarkmerger
+%{_bindir}/kcminit
+%{_bindir}/kcminit_startup
+%{_bindir}/kcontrol
+%{_bindir}/kcontroledit
+%{_bindir}/kdebugdialog
+%{_bindir}/kdeinstallktheme
+%{_bindir}/kdepasswd
+%{_bindir}/kdesu
+%attr(0755,root,root) %{_bindir}/kdesud
+%{_bindir}/kdialog
+%{_bindir}/kdm
+%{_bindir}/kdmctl
+%{_bindir}/keditbookmarks
+%{_bindir}/keditfiletype
+%{_bindir}/kfind
+%{_bindir}/kfmclient
+%{_bindir}/khelpcenter
+%{_bindir}/khotkeys
+%{_bindir}/kinfocenter
+%{_bindir}/klipper
+%{_bindir}/kmenuedit
+%{_bindir}/konqueror
+%{_bindir}/konsole
+%{_bindir}/krandom.kss
+%{_bindir}/krdb
+%{_bindir}/kreadconfig
+%{_bindir}/ksmserver
+%{_bindir}/ksplashsimple
+%{_bindir}/kstart
+%{_bindir}/ksysguard
+%{_bindir}/ksysguardd
+%{_bindir}/ksystraycmd
+%{_bindir}/ktrash
+%{_bindir}/kwin
+%{_bindir}/kwin_killer_helper
+%{_bindir}/kwin_rules_dialog
+%{_bindir}/kwrite
+%{_bindir}/kwriteconfig
+%{_bindir}/kxkb
+%{_bindir}/nspluginscan
+%{_bindir}/nspluginviewer
+%{_bindir}/startkde
+%{_bindir}/kcheckrunning
+%{_bindir}/kdesktop
+%{_bindir}/kdesktop_lock
+%{_bindir}/kdm_config
+%{_bindir}/kdm_greet
+%{_bindir}/kfontinst
+%{_bindir}/kfontview
+%{_bindir}/krootimage
+%{_bindir}/kwebdesktop
+%{_datadir}/autostart/*
+%{_datadir}/desktop-directories/*
+%{_datadir}/locale/*/entry.desktop
+%{_datadir}/locale/l10n
+%{_datadir}/templates/*
+%{_datadir}/templates/.source/*
+%{_datadir}/wallpapers/*
+%{_bindir}/appletproxy
+%{_bindir}/drkonqi
+%{_bindir}/extensionproxy
+%{_bindir}/kasbar
+%attr(4755,root,root) %{_bindir}/kcheckpass
+%{_bindir}/kdeeject
+%{_bindir}/khc_docbookdig.pl
+%{_bindir}/khc_htdig.pl
+%{_bindir}/khc_htsearch.pl
+%{_bindir}/khc_indexbuilder
+%{_bindir}/khc_mansearch.pl
+%{_bindir}/kicker
+%{_bindir}/knetattach
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 15
+%{_bindir}/krandrtray
+%endif
+%{_bindir}/kompmgr
+%{_bindir}/kpm
+%{_bindir}/ksplash
+%{_libdir}/kconf_update_bin
+%{_datadir}/applnk/*.desktop
+%{_datadir}/applnk/*/*
+%{_datadir}/applnk/.hidden/*
+%exclude %{_datadir}/applnk/.hidden/.directory
+%{_datadir}/config.kcfg/*
+%{_bindir}/kio_media_mounthelper
+%{_bindir}/kdcop
+%{_bindir}/kdeprintfax
+%{_bindir}/khc_beagle_index.pl
+%{_bindir}/khc_beagle_search.pl
+%{_bindir}/kxdglauncher
+%{_bindir}/kjobviewer
+%{_bindir}/klocaldomainurifilterhelper
+%{_bindir}/kprinter
+%{_datadir}/applications/*/*
+%{_datadir}/apps/*
+%{_datadir}/icons/*color/*/*/*
+%{_datadir}/icons/crystalsvg/*/*/*
+%{_datadir}/mimelnk/*/*
+%{_datadir}/services/*
+%{_datadir}/servicetypes/*
+%{_datadir}/sounds/*
+%{tde_libdir}/*
+%{_libdir}/libkdeinit_*.*
+%if "%{_prefix}" != "/usr"
+%{_prefix}/etc/xdg/menus/applications-merged/kde-essential.menu
+%{_prefix}/etc/xdg/menus/kde-information.menu
+%{_prefix}/etc/xdg/menus/kde-screensavers.menu
+%{_prefix}/etc/xdg/menus/kde-settings.menu
+%else
+%{_sysconfdir}/xdg/menus/applications-merged/kde-essential.menu
+%{_sysconfdir}/xdg/menus/kde-information.menu
+%{_sysconfdir}/xdg/menus/kde-screensavers.menu
+%{_sysconfdir}/xdg/menus/kde-settings.menu
+%endif
+/usr/share/xsessions/*.desktop
+# Remove conflicts with redhat-menus
+%if "%{?_prefix}" != "/usr"
+%{_bindir}/plasma-desktop
+%config(noreplace) %{_datadir}/config/*
+%else
+%exclude %{_datadir}/config
+%endif
+# exclude pim-ioslaves files from main package
+%exclude %{tde_libdir}/kio_ldap.*
+%exclude %{tde_libdir}/kio_nntp.*
+%exclude %{tde_libdir}/kio_pop3.*
+%exclude %{tde_libdir}/kio_smtp.*
+%exclude %{_datadir}/services/ldap*.protocol
+%exclude %{_datadir}/services/nntp*.protocol
+%exclude %{_datadir}/services/pop3*.protocol
+%exclude %{_datadir}/services/smtp*.protocol
+
+# TDE 3.5.12 specific
+%{_bindir}/kde3
+%exclude %{_datadir}/applications/kde/display.desktop
+%exclude %{_datadir}/fonts/override/fonts.dir
+%{_docdir}/kdm/README
+
+%files libs
+%defattr(-,root,root,-)
+%exclude %{_libdir}/libkdeinit_*.*
+%{_libdir}/lib*.so.*
+%{_libdir}/lib*.la
+
+%files pim-ioslaves
+%defattr(-,root,root,-)
+%{tde_libdir}/kio_ldap.*
+%{tde_libdir}/kio_nntp.*
+%{tde_libdir}/kio_pop3.*
+%{tde_libdir}/kio_smtp.*
+%{_datadir}/services/ldap*.protocol
+%{_datadir}/services/nntp*.protocol
+%{_datadir}/services/pop3*.protocol
+%{_datadir}/services/smtp*.protocol
+
+%files devel
+%defattr(-,root,root,-)
+%{_includedir}/*.h
+%dir %{_includedir}/kate
+%{_includedir}/kate/*
+%dir %{_includedir}/kwin
+%{_includedir}/kwin/*
+%dir %{_includedir}/ksgrd
+%{_includedir}/ksgrd/*
+%dir %{_includedir}/ksplash
+%{_includedir}/ksplash/*
+%{_libdir}/lib*.so
+%exclude %{_libdir}/libkdeinit_*.*
+
+%changelog
+* Thu Jan 05 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.12-15
+- Add KDM option to hide 'Menu' button on login prompt
+
+* Wed Dec 21 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-14
+- Fix kdesktop_lock missing black background on kscreensaver failure
+
+* Thu Dec 11 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-13
+- Backports patches from TDE 3.5.13-10
+- Removes Kubuntu branding [TDE Bug #449]
+- Fix 'kio_man' on RHEL 5 and RHEL 6 [TDE Bug #714]
+- Restores the 'number of files' and sorting widgets to the Kate configuration [TDE Bug #244]
+- Re-enables 'open tab in background' konqueror feature [TDE Bug #245]
+- Fix error message 'cannot find parent folder' on konqueror sidebar
+- Fix KDEDIRS and other variables in 'startkde', that messes up translations.
+
+* Sun Nov 20 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-12
+- Updates Kickoff menu Fix [TDE Bugs #281, #508]
+- Add distribution-specific start button icon
+- Add graphical theme for RHEL 5, RHEL 6, Fedora 15, Fedora 16
+- Moves XDG files in TDE prefix to avoid conflict with distro-provided KDE
+- Add "service(graphical-login)"
+- kdmrc: sets "MinShowUID=500"
+- Add missing BuildRequires
+
+* Fri Sep 16 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-11
+- Add support for RHEL 5.
+- Remove file conflicts with KDE 4.6.5 under Fedora 15
+
+* Mon Sep 12 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-10
+- Add "Group" field
+
+* Sun Sep 04 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-9
+- Import to GIT
+
+* Tue Aug 23 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-8
+- Add missing BuildRequires
+- Add Patch7, Patch8, Patch9 to allow compilation under GCC >= 4.5.2
+
+* Mon Aug 22 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-7
+- Correct macro to install under "/opt", if desired
+
+* Wed Jul 20 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-6
+- Add patch to force halbackend to use HAL-provided mount options
+
+* Wed Jul 20 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-5
+- Add patch to modify "Open terminal here" shortcut (now opens in home directory)
+
+* Tue Jul 19 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-4
+- Add 'BuildRequires: dbus-qt' to enable HAL support
+
+* Wed Jun 22 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.12-3
+- Adds setuid bit on '/usr/bin/kcheckpass'
+- Removes '/usr/share/applications/kde/display.desktop' (does not work on RHEL 6.0)
+
+* Mon Dec 20 2010 Francois Andriot <francois.andriot@free.fr> - 3.5.12-2
+- Add missing Requires
+- Rename 'kde3.desktop' to 'kde.desktop' in case of default prefix
+
+* Fri Dec 17 2010 Francois Andriot <francois.andriot@free.fr> - 3.5.12-1
+- Add macro _kde3_prefix to define custom installation prefix (ex: /opt/kde3)
+- Add '--with-extra-includes=%{_includedir}/tqt'
+- Add 'patch3' to remove ignore button on kdesu dialog box
+- Add 'patch4' r1182808.diff : Fix My Documents shortcut on desktop
+
+* Wed Dec 14 2010 Francois Andriot <francois.andriot@free.fr> - 3.5.12-0
+- Initial version
+- Add script 'plasma-desktop' to prevent KDE4 plasma automatic startup
+- Add 'patch0' to fix for DBUS include files in RHEL6
+- Add 'patch1' r1201523.diff : [kdebase/kcontrol] fix for openssl 1.0
+- Add 'patch2' r1201705.diff : [kdebase/kcontrol] make it compatible with openssl < 1.0
+
diff --git a/redhat/tdebase/trinity-kdebase-3.5.13.1.spec b/redhat/tdebase/trinity-kdebase-3.5.13.1.spec
new file mode 100644
index 000000000..ad481b77e
--- /dev/null
+++ b/redhat/tdebase/trinity-kdebase-3.5.13.1.spec
@@ -0,0 +1,3266 @@
+# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
+%if "%{?tde_prefix}" != "/usr"
+%define _variant .opt
+%endif
+
+# TDE 3.5.13 specific building variables
+%define tde_bindir %{tde_prefix}/bin
+%define tde_datadir %{tde_prefix}/share
+%define tde_docdir %{tde_datadir}/doc
+%define tde_includedir %{tde_prefix}/include
+%define tde_libdir %{tde_prefix}/%{_lib}
+
+%define tde_tdeappdir %{tde_datadir}/applications/kde
+%define tde_tdedocdir %{tde_docdir}/tde
+%define tde_tdeincludedir %{tde_includedir}/tde
+%define tde_tdelibdir %{tde_libdir}/trinity
+
+# Older RHEL/Fedora versions use packages named "qt", "qt-devel", ..
+# whereas newer versions use "qt3", "qt3-devel" ...
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 8 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version}
+%define _qt_suffix 3
+%endif
+
+
+Name: trinity-tdebase
+Version: 3.5.13.1
+Release: 2%{?dist}%{?_variant}
+License: GPL
+Summary: Trinity Base Programs
+Group: User Interface/Desktops
+
+Obsoletes: trinity-kdebase < %{version}-%{release}
+Provides: trinity-kdebase = %{version}-%{release}
+Obsoletes: trinity-kdebase-libs < %{version}-%{release}
+Obsoletes: trinity-kdebase-extras < %{version}-%{release}
+Provides: trinity-kdebase-extras = %{version}-%{release}
+Obsoletes: tdebase < %{version}-%{release}
+Provides: tdebase = %{version}-%{release}
+
+
+Vendor: Trinity Project
+Packager: Francois Andriot <francois.andriot@free.fr>
+URL: http://www.trinitydesktop.org/
+
+Prefix: %{tde_prefix}
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Source0: kdebase-3.5.13.1.tar.gz
+
+# Wrapper script to prevent Plasma launch at Trinity Startup
+Source1: plasma-desktop
+
+# Pam configuration files for RHEL / Fedora
+%if 0%{?suse_version}
+Source4: pamd.kcheckpass-trinity.opensuse%{?suse_version}
+%else
+Source2: pamd.kdm-trinity%{?dist}
+Source3: pamd.kdm-trinity-np%{?dist}
+Source4: pamd.kcheckpass-trinity%{?dist}
+Source5: pamd.kscreensaver-trinity%{?dist}
+%endif
+
+# openSUSE: configuration file for TDM
+Source6: suse-displaymanagers-tdm
+
+
+# TDE 3.5.13 patches
+## [kdebase] Fix syntax error in icon
+Patch1: kdebase-3.5.13.1-fix_displayconfig_icon.patch
+## [kdebase/kdesktop] Modifies 'open terminal here' on desktop [RHEL/Fedora]
+Patch11: kdebase-3.5.12-desktop-openterminalhere.patch
+## [kdebase/kdm/kfrontend] Global Xsession file is '/etc/X11/xinit/Xsession' [RHEL/Fedora]
+Patch13: kdebase-3.5.13-genkdmconf_Xsession_location.patch
+Patch14: kdebase-3.5.13-genkdmconf_Xsession_location_xdm.patch
+## [kdebase/startkde] Sets default Start Icon in 'kickerrc' [RHEL/Fedora]
+Patch15: kdebase-3.5.13.1-startkde_icon.patch
+## [kdebase/kioslave/man] Fix kio_man for older distros without 'man-db' [Bug #714]
+Patch21: kdebase-3.5.13-kio_man_utf8.patch
+## [kdebase/kdm/kfrontend] Allows to hide KDM menu button [RHEL/Fedora]
+Patch30: kdebase-3.5.12-kdm_hide_menu_button.patch
+## [kdebase/startkde] Fix wrong path setting
+Patch31: kdebase-3.5.13.1-fix_startkde_path.patch
+## [kdebase/kdm] Fix PID file is 'tdm.pid' instead of 'kdm.pid' (needed for openSUSE)
+Patch32: kdebase-3.5.13.1-fix_tdm_pid_file.patch
+
+### Patches for RHEL4 (should not go upstream)
+
+## [tdebase] Fix build on RHEL4, detect old libraries without pkg file
+Patch201: kdebase-3.5.13-fix_lib_detection.patch
+## [tdebase] Do not build against DBUS-TQT, only DBUS and DBUS-QT
+Patch202: kdebase-3.5.13-build_without_dbustqt.patch
+## [tdebase] Do not build against ConsoleKit
+Patch203: kdebase-3.5.13-build_without_consolekit.patch
+## [tdebase] Add WITH_COMPOSITE option to CMakeLists.txt
+Patch204: kdebase-3.5.13-add_disable_composite_option.patch
+## [tdebase] Downgrade halbackend to support Hal 0.4
+Patch205: kdebase-3.5.13-support_hal_04.patch
+## [tdebase] Other(s) FTBFS ...
+Patch206: kdebase-3.5.13-fix_rhel4_compilation.patch
+
+### Distribution-specific settings ###
+
+# Fedora 15 Theme: "Lovelock"
+%if 0%{?fedora} == 15
+Requires: lovelock-backgrounds-single
+%define tde_bg /usr/share/backgrounds/lovelock/default/standard/lovelock.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 15
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# Fedora 16 Theme: "Verne"
+%if 0%{?fedora} == 16
+Requires: verne-backgrounds-single
+%define tde_bg /usr/share/backgrounds/verne/default/standard/verne.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 16
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# Fedora 17 Theme: "Beefy Miracle"
+%if 0%{?fedora} == 17
+Requires: beefy-miracle-backgrounds-single
+%define tde_bg /usr/share/backgrounds/beefy-miracle/default/standard/beefy-miracle.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 17
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# RHEL 4 Theme
+%if 0%{?rhel} == 4
+Requires: desktop-backgrounds-basic
+%define tde_bg /usr/share/backgrounds/images/default.png
+Requires: redhat-logos
+%define tde_starticon /usr/share/pixmaps/redhat/rpmlogo-64.xpm
+
+Requires: indexhtml
+%define tde_aboutlabel Enterprise Linux 4
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# RHEL 5 Theme
+%if 0%{?rhel} == 5
+Requires: desktop-backgrounds-basic
+%define tde_bg /usr/share/backgrounds/images/default.jpg
+%define tde_starticon /usr/share/pixmaps/redhat-starthere.png
+
+Requires: indexhtml
+%define tde_aboutlabel Enterprise Linux 5
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# RHEL 6 Theme
+%if 0%{?rhel} == 6
+Requires: redhat-logos
+%define tde_bg /usr/share/backgrounds/default.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/system-logo-icon.png
+
+Requires: redhat-indexhtml
+%define tde_aboutlabel Enterprise Linux 6
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# Mageia 2 Theme
+%if 0%{?mgaversion} == 2
+Requires: mageia-theme-Default
+%define tde_bg /usr/share/mga/backgrounds/default.jpg
+%define tde_starticon /usr/share/icons/hicolor/scalable/apps/mageia-menu.svg
+
+Requires: indexhtml
+%define tde_aboutlabel Mageia 2
+%define tde_aboutpage /usr/share/mga/about/index.html
+%endif
+
+# Mandriva 2011 Theme: "rosa"
+%if "%{?mdkversion}" == "201100"
+Requires: mandriva-theme
+%define tde_bg /usr/share/mdk/backgrounds/default.jpg
+%define tde_starticon /usr/share/icons/mandriva.png
+
+Requires: indexhtml
+%define tde_aboutlabel Mandriva 2011
+%define tde_aboutpage /usr/share/mdk/about/index.html
+%endif
+
+# PCLINUXOS 2012
+%if "%{?pclinuxos}" == "2012"
+Requires: trinity-wallpaper-theme-default
+%define tde_bg %{tde_datadir}/wallpapers/Pulse2012/contents/images/1600x1200.jpg
+Requires: desktop-common-data
+%define tde_starticon /usr/share/icons/pclinuxos.png
+
+Requires: indexhtml
+%define tde_aboutlabel PCLinuxOS 2012
+%define tde_aboutpage /usr/share/mdk/about/index.html
+%endif
+
+# OpenSuse 12.2 Theme
+%if "%{?suse_version}" == "1220"
+Requires: wallpaper-branding
+%define tde_bg /usr/share/wallpapers/openSUSEdefault/contents/images/1600x1200.jpg
+Requires: hicolor-icon-theme-branding
+%define tde_starticon /usr/share/icons/hicolor/scalable/apps/distributor.svg
+
+Requires: opensuse-manuals_en
+%define tde_aboutlabel OpenSuse 12.2
+%define tde_aboutpage /usr/share/doc/manual/opensuse-manuals_en/book.opensuse.startup.html
+%endif
+
+BuildRequires: cmake >= 2.8
+BuildRequires: trinity-tqtinterface-devel >= %{version}
+BuildRequires: trinity-arts-devel >= %{version}
+BuildRequires: trinity-tdelibs-devel >= %{version}
+BuildRequires: gcc-c++ make
+BuildRequires: qt%{?_qt_suffix}-devel
+BuildRequires: openssl-devel
+BuildRequires: audiofile-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: libraw1394-devel
+BuildRequires: libvorbis-devel
+BuildRequires: pam-devel
+%if 0%{?mageia} || 0%{?mandriva} || 0%{?pclinuxos}
+BuildRequires: %{_lib}usb1.0-devel
+BuildRequires: %{_lib}usb-compat0.1-devel
+%else
+BuildRequires: libusb-devel
+%endif
+BuildRequires: esound-devel
+BuildRequires: glib2-devel
+BuildRequires: pcre-devel
+
+# OPENLDAP support
+%if 0%{?suse_version}
+BuildRequires: openldap2-devel
+%else
+BuildRequires: openldap-devel
+%endif
+
+# SENSORS support
+# Disabled on OpenSuse
+%if 0%{?fedora} || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel}
+BuildRequires: lm_sensors-devel
+%endif
+%if 0%{?suse_version}
+BuildRequires: libsensors4-devel
+%endif
+
+# TSAK support (requires libudev-devel)
+# On RHEL5, udev is built statically, so TSAK cannot build.
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 6 || 0%{?suse_version}
+%define with_tsak 1
+BuildRequires: libudev-devel
+%endif
+
+# XRANDR support
+# On RHEL5, xrandr library is too old.
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 6 || 0%{?suse_version}
+%define with_xrandr 1
+%endif
+
+# HAL support
+# On RHEL4, we do not use HAL (too old)
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 5 || 0%{?suse_version}
+%define with_hal 1
+BuildRequires: hal-devel >= 0.4.8
+%endif
+
+# OPENEXR support
+# Disabled on RHEL4
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 5 || 0%{?suse_version}
+%define with_exr 1
+BuildRequires: OpenEXR-devel
+%endif
+
+# XSCREENSAVER support
+# Disabled on RHEL4
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 5 || 0%{?suse_version}
+%define with_xscreensaver 1
+%if 0%{?rhel} == 5
+BuildRequires: xorg-x11-proto-devel
+BuildRequires: gnome-screensaver
+%endif
+%if 0%{?mgaversion} || 0%{?mdkversion}
+BuildRequires: %{_lib}xscrnsaver%{?mgaversion:1}-devel
+%endif
+%if 0%{?fedora} || 0%{?rhel} >= 6 || 0%{?suse_version}
+BuildRequires: libXScrnSaver-devel
+%endif
+%endif
+
+# AVAHI support
+# Disabled on RHEL4 and RHEL5
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 6 || 0%{?suse_version}
+BuildRequires: trinity-avahi-tqt-devel
+Requires: trinity-avahi-tqt
+%if 0%{?mgaversion} || 0%{?mdkversion}
+BuildRequires: %{_lib}avahi-client-devel
+Requires: %{_lib}avahi-client3
+%else
+BuildRequires: avahi-devel
+Requires: avahi
+%endif
+%endif
+
+# NAS support
+# (what is nas btw ?)
+%if 0%{?fedora} || 0%{?mgaversion} || 0%{?mdkversion}
+BuildRequires: nas-devel
+%endif
+
+# DBUS support
+# TQT bindings not available for RHEL4
+%if 0%{?rhel} == 4
+# Dbus bindings were rebuilt with Qt support
+BuildRequires: dbus-devel >= 0.22-12.EL.9p1
+Requires: dbus-qt
+%else
+BuildRequires: trinity-dbus-tqt-devel
+Requires: trinity-dbus-tqt >= %{version}
+%endif
+
+%if 0%{?fedora} >= 17
+BuildRequires: perl-Digest-MD5
+%endif
+
+# JACK support
+%if 0%{?mgaversion} || 0%{?mdkversion}
+BuildRequires: %{_lib}jack-devel
+%endif
+%if 0%{?fedora} || 0%{?rhel} >= 5
+BuildRequires: jack-audio-connection-kit-devel
+%endif
+
+# X11 stuff ...
+%if 0%{?rhel} == 4
+BuildRequires: xorg-x11-devel
+BuildRequires: samba-common
+%else
+BuildRequires: imake
+BuildRequires: libxkbfile-devel
+BuildRequires: libsmbclient-devel
+BuildRequires: libfontenc-devel
+
+%if 0%{?mgaversion} || 0%{?mdkversion}
+BuildRequires: %{_lib}xcomposite%{?mgaversion:1}-devel
+BuildRequires: %{_lib}xdamage-devel
+BuildRequires: %{_lib}xdmcp%{?mgaversion:6}-devel
+BuildRequires: %{_lib}xtst-devel
+BuildRequires: x11-font-util
+BuildRequires: x11-proto-devel
+%else
+BuildRequires: libXcomposite-devel
+BuildRequires: libXdamage-devel
+BuildRequires: libXdmcp-devel
+BuildRequires: libXtst-devel
+BuildRequires: xorg-x11-proto-devel
+
+%if 0%{?suse_version}
+BuildRequires: font-util
+BuildRequires: bdftopcf
+%else
+BuildRequires: xorg-x11-font-utils
+%endif
+
+%endif
+
+%endif
+
+# tdebase is a metapackage that installs all sub-packages
+Requires: %{name}-runtime-data-common = %{version}-%{release}
+Requires: %{name}-data = %{version}-%{release}
+Requires: %{name}-bin = %{version}-%{release}
+Requires: %{name}-kio-plugins = %{version}-%{release}
+Requires: %{name}-kio-pim-plugins = %{version}-%{release}
+Requires: trinity-kappfinder = %{version}-%{release}
+Requires: trinity-kate = %{version}-%{release}
+Requires: trinity-kwrite = %{version}-%{release}
+Requires: trinity-kcontrol = %{version}-%{release}
+Requires: trinity-kdepasswd = %{version}-%{release}
+Requires: trinity-tdeprint = %{version}-%{release}
+Requires: trinity-kdesktop = %{version}-%{release}
+Requires: trinity-tdm = %{version}-%{release}
+Requires: trinity-kfind = %{version}-%{release}
+Requires: trinity-khelpcenter = %{version}-%{release}
+Requires: trinity-kicker = %{version}-%{release}
+Requires: trinity-klipper = %{version}-%{release}
+Requires: trinity-kmenuedit = %{version}-%{release}
+Requires: trinity-konqueror = %{version}-%{release}
+Requires: trinity-konqueror-nsplugins = %{version}-%{release}
+Requires: trinity-konsole = %{version}-%{release}
+Requires: trinity-kpager = %{version}-%{release}
+Requires: trinity-kpersonalizer = %{version}-%{release}
+Requires: trinity-ksmserver = %{version}-%{release}
+Requires: trinity-ksplash = %{version}-%{release}
+Requires: trinity-ksysguard = %{version}-%{release}
+Requires: trinity-ksysguardd = %{version}-%{release}
+Requires: trinity-ktip = %{version}-%{release}
+Requires: trinity-twin = %{version}-%{release}
+Requires: trinity-libkonq = %{version}-%{release}
+Requires: %{name}-libtqt3-integration = %{version}-%{release}
+
+Requires: trinity-tqtinterface >= %{version}
+Requires: trinity-arts >= %{version}
+Requires: trinity-tdelibs >= %{version}
+Requires: qt%{?_qt_suffix}
+Requires: openssl
+
+
+# RHEL 6 Configuration files are provided in separate packages
+%if 0%{?rhel} || 0%{?fedora}
+%if "%{?tde_prefix}" == "/usr"
+Requires: kde-settings-kdm
+%endif
+Requires: redhat-menus
+%endif
+
+%if 0%{?suse_version}
+Requires: desktop-data-openSUSE
+%endif
+
+%description
+TDE (the Trinity Desktop Environment) is a powerful Open Source graphical
+desktop environment for Unix workstations. It combines ease of use,
+contemporary functionality, and outstanding graphical design with the
+technological superiority of the Unix operating system.
+
+This metapackage includes the nucleus of TDE, namely the minimal package
+set necessary to run TDE as a desktop environment. This includes the
+window manager, taskbar, control center, a text editor, file manager,
+web browser, X terminal emulator, and many other programs and components.
+
+%files
+%defattr(-,root,root,-)
+%doc AUTHORS COPYING COPYING-DOCS README README.pam
+
+##########
+
+%package devel
+Summary: %{summary} - Development files
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: trinity-tdelibs-devel
+
+Requires: %{name}-bin-devel = %{version}-%{release}
+Requires: trinity-kate-devel = %{version}-%{release}
+Requires: trinity-kcontrol-devel = %{version}-%{release}
+Requires: trinity-kdesktop-devel = %{version}-%{release}
+Requires: trinity-kicker-devel = %{version}-%{release}
+Requires: trinity-konqueror-devel = %{version}-%{release}
+Requires: trinity-ksplash-devel = %{version}-%{release}
+Requires: trinity-ksysguard-devel = %{version}-%{release}
+Requires: trinity-libkonq-devel = %{version}-%{release}
+Requires: trinity-tdm-devel = %{version}-%{release}
+Requires: trinity-twin-devel = %{version}-%{release}
+
+Provides: trinity-kdebase-devel = %{version}-%{release}
+Obsoletes: trinity-kdebase-devel < %{version}-%{release}
+Provides: tdebase-devel = %{version}-%{release}
+Obsoletes: tdebase-devel < %{version}-%{release}
+
+Obsoletes: trinity-kdebase-cmake < %{version}-%{release}
+Obsoletes: tdebase-cmake < %{version}-%{release}
+
+%description devel
+This is a meta-package that installs all tdebase development packages.
+
+Header files for developing applications using %{name}.
+Install tdebase-devel if you want to develop or compile Konqueror,
+Kate plugins or KWin styles.
+
+%files devel
+%{tde_datadir}/cmake/*.cmake
+
+##########
+
+%package kio-pim-plugins
+Summary: PIM KIOslaves from %{name}
+Group: Environment/Libraries
+
+Provides: trinity-kdebase-pim-ioslaves = %{version}-%{release}
+Obsoletes: trinity-kdebase-pim-ioslaves < %{version}-%{release}
+Provides: tdebase-kio-pim-plugins = %{version}-%{release}
+Obsoletes: tdebase-kio-pim-plugins < %{version}-%{release}
+
+%description kio-pim-plugins
+Protocol handlers (KIOslaves) for personal information management, including:
+ * kio_ldap
+ * kio_nntp
+ * kio_pop3
+ * kio_smtp
+
+%files kio-pim-plugins
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/kio_ldap.la
+%{tde_tdelibdir}/kio_ldap.so
+%{tde_tdelibdir}/kio_nntp.la
+%{tde_tdelibdir}/kio_nntp.so
+%{tde_tdelibdir}/kio_pop3.la
+%{tde_tdelibdir}/kio_pop3.so
+%{tde_tdelibdir}/kio_smtp.la
+%{tde_tdelibdir}/kio_smtp.so
+%{tde_datadir}/services/ldap.protocol
+%{tde_datadir}/services/ldaps.protocol
+%{tde_datadir}/services/nntp.protocol
+%{tde_datadir}/services/nntps.protocol
+%{tde_datadir}/services/pop3.protocol
+%{tde_datadir}/services/pop3s.protocol
+%{tde_datadir}/services/smtp.protocol
+%{tde_datadir}/services/smtps.protocol
+
+##########
+
+%package runtime-data-common
+Summary: Shared common files for Trinity and KDE4
+Group: Environment/Libraries
+
+Provides: tdebase-runtime-data-common = %{version}-%{release}
+Obsoletes: tdebase-runtime-data-common < %{version}-%{release}
+
+%description runtime-data-common
+Shared common files for both Trinity and KDE4
+Such as the desktop right-click-"Create New" list
+
+%files runtime-data-common
+%defattr(-,root,root,-)
+%{tde_datadir}/autostart/khotkeys.desktop
+%{tde_datadir}/desktop-directories/*
+%{tde_datadir}/icons/hicolor/*/apps/kxkb.png
+%{tde_datadir}/icons/hicolor/*/apps/knetattach.*
+%{tde_datadir}/icons/hicolor/*/apps/khotkeys.png
+%{tde_datadir}/icons/hicolor/*/apps/kmenuedit.png
+%{tde_datadir}/icons/hicolor/*/apps/ksplash.png
+%{tde_datadir}/locale/en_US/entry.desktop
+%{tde_datadir}/locale/l10n/*.desktop
+%{tde_datadir}/locale/l10n/*/entry.desktop
+%{tde_datadir}/locale/l10n/*/flag.png
+%{tde_datadir}/sounds/pop.wav
+%{tde_datadir}/templates
+
+%post runtime-data-common
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun runtime-data-common
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kappfinder
+Summary: non-KDE application finder for KDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kappfinder
+kappfinder searches your workstation for many common applications and
+creates menu entries for them.
+
+%files -n trinity-kappfinder
+%defattr(-,root,root,-)
+%{tde_bindir}/kappfinder
+%{tde_tdeappdir}/kappfinder.desktop
+%{tde_datadir}/applnk/System/kappfinder.desktop
+%{tde_datadir}/apps/kappfinder
+%{tde_datadir}/icons/hicolor/*/apps/kappfinder.png
+
+%post -n trinity-kappfinder
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kappfinder
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-libkateinterfaces
+Summary: Common libraries used by kwrite and kate
+Group: Environment/Libraries
+
+%description -n trinity-libkateinterfaces
+%{summary}
+
+%files -n trinity-libkateinterfaces
+%{tde_libdir}/libkateinterfaces.so.*
+
+%post -n trinity-libkateinterfaces
+/sbin/ldconfig || :
+
+%postun -n trinity-libkateinterfaces
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kate
+Summary: advanced text editor for TDE
+Group: Applications/Text
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-kwrite = %{version}-%{release}
+Requires: trinity-libkateinterfaces = %{version}-%{release}
+
+%description -n trinity-kate
+Kate is a multi document editor, based on a rewritten version of the kwrite
+editing widget of TDE.
+
+It is a multi-view editor that lets you view several instances of the same
+document with all instances being synced, or view more files at the same
+time for easy reference or simultaneous editing. The terminal emulation
+and sidebar are docked windows that can be plugged out of the main window,
+or replaced therein according to your preference.
+
+Some random features:
+* Editing of big files
+* Extensible syntax highlighting
+* Folding
+* Dynamic word wrap
+* Selectable encoding
+* Filter command
+* Global grep dialog
+
+%files -n trinity-kate
+%defattr(-,root,root,-)
+%{tde_bindir}/kate
+%{tde_tdelibdir}/kate.la
+%{tde_tdelibdir}/kate.so
+%{tde_libdir}/libkateutils.so.*
+%{tde_libdir}/lib[kt]deinit_kate.la
+%{tde_libdir}/lib[kt]deinit_kate.so
+%{tde_tdeappdir}/kate.desktop
+%{tde_datadir}/apps/kate/
+%{tde_datadir}/apps/kconf_update/kate-2.4.upd
+%{tde_datadir}/config/katerc
+%{tde_datadir}/icons/hicolor/*/apps/kate.png
+%{tde_datadir}/icons/hicolor/*/apps/kate2.svgz
+%{tde_datadir}/servicetypes/kateplugin.desktop
+%{tde_tdedocdir}/HTML/en/kate/
+
+%post -n trinity-kate
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+%postun -n trinity-kate
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kate-devel
+Summary: Development files for kate
+Group: Development/Libraries
+Requires: trinity-kate = %{version}-%{release}
+
+%description -n trinity-kate-devel
+%{summary}
+
+%files -n trinity-kate-devel
+%{tde_tdeincludedir}/kate/
+%{tde_libdir}/libkateutils.so
+%{tde_libdir}/libkateutils.la
+%{tde_libdir}/libkateinterfaces.so
+%{tde_libdir}/libkateinterfaces.la
+
+%post -n trinity-kate-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-kate-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kwrite
+Summary: advanced text editor for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-libkateinterfaces = %{version}-%{release}
+
+%description -n trinity-kwrite
+Kwrite is a text editor for TDE.
+
+%files -n trinity-kwrite
+%defattr(-,root,root,-)
+%{tde_bindir}/kwrite
+%{tde_tdelibdir}/kwrite.la
+%{tde_tdelibdir}/kwrite.so
+%{tde_libdir}/lib[kt]deinit_kwrite.la
+%{tde_libdir}/lib[kt]deinit_kwrite.so
+%{tde_tdeappdir}/kwrite.desktop
+%{tde_datadir}/apps/kwrite/kwriteui.rc
+%{tde_datadir}/icons/hicolor/*/apps/kwrite.png
+%{tde_datadir}/icons/hicolor/*/apps/kwrite2.svgz
+%{tde_tdedocdir}/HTML/en/kwrite/
+
+
+%post -n trinity-kwrite
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kwrite
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-kcontrol
+Summary: control center for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: usbutils
+
+%if 0%{?suse_version} == 0
+Requires: hwdata
+%endif
+
+%description -n trinity-kcontrol
+The TDE Control Center provides you with a centralized and convenient
+way to configure all of your TDE settings.
+
+It is made up of multiple modules. Each module is a separate application,
+but the control center organizes all of these programs into a convenient
+location.
+
+In combination with udev KControl supports the advanced
+configuration of Logitech mice, though the user must be a member of the
+plugdev group.
+
+%files -n trinity-kcontrol
+%defattr(-,root,root,-)
+%{tde_bindir}/kaccess
+%{tde_bindir}/kcontrol
+%{tde_bindir}/kdeinstallktheme
+%{tde_bindir}/keditfiletype
+%{tde_bindir}/kfontinst
+%{tde_bindir}/kfontview
+%{tde_bindir}/kinfocenter
+%{tde_bindir}/klocaldomainurifilterhelper
+%{tde_bindir}/krdb
+%{tde_tdelibdir}/fontthumbnail.la
+%{tde_tdelibdir}/fontthumbnail.so
+%{tde_tdelibdir}/kaccess.la
+%{tde_tdelibdir}/kaccess.so
+%{tde_tdelibdir}/kcm_access.la
+%{tde_tdelibdir}/kcm_access.so
+%{tde_tdelibdir}/kcm_arts.la
+%{tde_tdelibdir}/kcm_arts.so
+%{tde_tdelibdir}/kcm_background.la
+%{tde_tdelibdir}/kcm_background.so
+%{tde_tdelibdir}/kcm_bell.la
+%{tde_tdelibdir}/kcm_bell.so
+%{tde_tdelibdir}/kcm_clock.la
+%{tde_tdelibdir}/kcm_clock.so
+%{tde_tdelibdir}/kcm_colors.la
+%{tde_tdelibdir}/kcm_colors.so
+%{tde_tdelibdir}/kcm_componentchooser.la
+%{tde_tdelibdir}/kcm_componentchooser.so
+%{tde_tdelibdir}/kcm_crypto.la
+%{tde_tdelibdir}/kcm_crypto.so
+%{tde_tdelibdir}/kcm_css.la
+%{tde_tdelibdir}/kcm_css.so
+%{tde_tdelibdir}/kcm_display.la
+%{tde_tdelibdir}/kcm_display.so
+%{tde_tdelibdir}/kcm_energy.la
+%{tde_tdelibdir}/kcm_energy.so
+%{tde_tdelibdir}/kcm_filetypes.la
+%{tde_tdelibdir}/kcm_filetypes.so
+%{tde_tdelibdir}/kcm_fontinst.la
+%{tde_tdelibdir}/kcm_fontinst.so
+%{tde_tdelibdir}/kcm_fonts.la
+%{tde_tdelibdir}/kcm_fonts.so
+#%{tde_tdelibdir}/kcm_hwmanager.la
+#%{tde_tdelibdir}/kcm_hwmanager.so
+%{tde_tdelibdir}/kcm_icons.la
+%{tde_tdelibdir}/kcm_icons.so
+%{tde_tdelibdir}/kcm_info.la
+%{tde_tdelibdir}/kcm_info.so
+%{tde_tdelibdir}/kcm_input.la
+%{tde_tdelibdir}/kcm_input.so
+%{tde_tdelibdir}/kcm_ioslaveinfo.la
+%{tde_tdelibdir}/kcm_ioslaveinfo.so
+%{tde_tdelibdir}/kcm_joystick.la
+%{tde_tdelibdir}/kcm_joystick.so
+%{tde_tdelibdir}/kcm_kded.la
+%{tde_tdelibdir}/kcm_kded.so
+%{tde_tdelibdir}/kcm_[kt]dm.la
+%{tde_tdelibdir}/kcm_[kt]dm.so
+%{tde_tdelibdir}/kcm_kdnssd.so
+%{tde_tdelibdir}/kcm_kdnssd.la
+%{tde_tdelibdir}/kcm_keys.la
+%{tde_tdelibdir}/kcm_keys.so
+%{tde_tdelibdir}/kcm_kicker.la
+%{tde_tdelibdir}/kcm_kicker.so
+%{tde_tdelibdir}/kcm_kio.la
+%{tde_tdelibdir}/kcm_kio.so
+%{tde_tdelibdir}/kcm_knotify.la
+%{tde_tdelibdir}/kcm_knotify.so
+%{tde_tdelibdir}/kcm_konqhtml.la
+%{tde_tdelibdir}/kcm_konqhtml.so
+%{tde_tdelibdir}/kcm_konq.la
+%{tde_tdelibdir}/kcm_konq.so
+%{tde_tdelibdir}/kcm_kthememanager.la
+%{tde_tdelibdir}/kcm_kthememanager.so
+%{tde_tdelibdir}/kcm_kurifilt.la
+%{tde_tdelibdir}/kcm_kurifilt.so
+%{tde_tdelibdir}/kcm_launch.la
+%{tde_tdelibdir}/kcm_launch.so
+%{tde_tdelibdir}/kcm_locale.la
+%{tde_tdelibdir}/kcm_locale.so
+%{tde_tdelibdir}/kcm_nic.la
+%{tde_tdelibdir}/kcm_nic.so
+%{tde_tdelibdir}/kcm_performance.la
+%{tde_tdelibdir}/kcm_performance.so
+%{tde_tdelibdir}/kcm_privacy.la
+%{tde_tdelibdir}/kcm_privacy.so
+%{tde_tdelibdir}/kcm_samba.la
+%{tde_tdelibdir}/kcm_samba.so
+%{tde_tdelibdir}/kcm_screensaver.la
+%{tde_tdelibdir}/kcm_screensaver.so
+%{tde_tdelibdir}/kcm_smserver.la
+%{tde_tdelibdir}/kcm_smserver.so
+%{tde_tdelibdir}/kcm_spellchecking.la
+%{tde_tdelibdir}/kcm_spellchecking.so
+%{tde_tdelibdir}/kcm_style.la
+%{tde_tdelibdir}/kcm_style.so
+%{tde_tdelibdir}/kcm_taskbar.la
+%{tde_tdelibdir}/kcm_taskbar.so
+%{tde_tdelibdir}/kcm_usb.la
+%{tde_tdelibdir}/kcm_usb.so
+%{tde_tdelibdir}/kcm_view1394.la
+%{tde_tdelibdir}/kcm_view1394.so
+%{tde_tdelibdir}/kcm_xinerama.la
+%{tde_tdelibdir}/kcm_xinerama.so
+%{tde_tdelibdir}/kcontrol.la
+%{tde_tdelibdir}/kcontrol.so
+%{tde_tdelibdir}/kfile_font.la
+%{tde_tdelibdir}/kfile_font.so
+%{tde_tdelibdir}/kio_fonts.la
+%{tde_tdelibdir}/kio_fonts.so
+%{tde_tdelibdir}/kstyle_keramik_config.la
+%{tde_tdelibdir}/kstyle_keramik_config.so
+%{tde_tdelibdir}/libkfontviewpart.la
+%{tde_tdelibdir}/libkfontviewpart.so
+%{tde_tdelibdir}/libkshorturifilter.la
+%{tde_tdelibdir}/libkshorturifilter.so
+%{tde_tdelibdir}/libkuriikwsfilter.la
+%{tde_tdelibdir}/libkuriikwsfilter.so
+%{tde_tdelibdir}/libkurisearchfilter.la
+%{tde_tdelibdir}/libkurisearchfilter.so
+%{tde_tdelibdir}/liblocaldomainurifilter.la
+%{tde_tdelibdir}/liblocaldomainurifilter.so
+%{tde_libdir}/lib[kt]deinit_kaccess.la
+%{tde_libdir}/lib[kt]deinit_kaccess.so
+%{tde_libdir}/lib[kt]deinit_kcontrol.la
+%{tde_libdir}/lib[kt]deinit_kcontrol.so
+%{tde_libdir}/libkfontinst.so.*
+%{tde_tdeappdir}/arts.desktop
+%{tde_tdeappdir}/background.desktop
+%{tde_tdeappdir}/bell.desktop
+%{tde_tdeappdir}/cache.desktop
+%{tde_tdeappdir}/cdinfo.desktop
+%{tde_tdeappdir}/clock.desktop
+%{tde_tdeappdir}/colors.desktop
+%{tde_tdeappdir}/componentchooser.desktop
+%{tde_tdeappdir}/cookies.desktop
+%{tde_tdeappdir}/crypto.desktop
+%{tde_tdeappdir}/desktopbehavior.desktop
+%{tde_tdeappdir}/desktop.desktop
+%{tde_tdeappdir}/desktoppath.desktop
+%{tde_tdeappdir}/devices.desktop
+%{tde_tdeappdir}/display.desktop
+%{tde_tdeappdir}/dma.desktop
+%{tde_tdeappdir}/ebrowsing.desktop
+%{tde_tdeappdir}/filebrowser.desktop
+%{tde_tdeappdir}/filetypes.desktop
+%{tde_tdeappdir}/fonts.desktop
+#%{tde_tdeappdir}/hwmanager.desktop
+%{tde_tdeappdir}/icons.desktop
+%{tde_tdeappdir}/installktheme.desktop
+%{tde_tdeappdir}/interrupts.desktop
+%{tde_tdeappdir}/ioports.desktop
+%{tde_tdeappdir}/ioslaveinfo.desktop
+%{tde_tdeappdir}/joystick.desktop
+%{tde_tdeappdir}/kcm_kdnssd.desktop
+%{tde_tdeappdir}/kcmaccess.desktop
+%{tde_tdeappdir}/kcmcss.desktop
+%{tde_tdeappdir}/kcmfontinst.desktop
+%{tde_tdeappdir}/kcmkded.desktop
+%{tde_tdeappdir}/kcmlaunch.desktop
+%{tde_tdeappdir}/kcmnotify.desktop
+%{tde_tdeappdir}/kcmperformance.desktop
+%{tde_tdeappdir}/kcmsmserver.desktop
+%{tde_tdeappdir}/kcmtaskbar.desktop
+%{tde_tdeappdir}/kcmusb.desktop
+%{tde_tdeappdir}/kcmview1394.desktop
+%{tde_tdeappdir}/KControl.desktop
+%{tde_tdeappdir}/[kt]dm.desktop
+%{tde_tdeappdir}/keys.desktop
+%{tde_tdeappdir}/kfontview.desktop
+%{tde_tdeappdir}/khtml_behavior.desktop
+%{tde_tdeappdir}/khtml_fonts.desktop
+%{tde_tdeappdir}/khtml_java_js.desktop
+%{tde_tdeappdir}/kinfocenter.desktop
+%{tde_tdeappdir}/kthememanager.desktop
+%{tde_tdeappdir}/lanbrowser.desktop
+%{tde_tdeappdir}/language.desktop
+%{tde_tdeappdir}/media.desktop
+%{tde_tdeappdir}/memory.desktop
+%{tde_tdeappdir}/mouse.desktop
+%{tde_tdeappdir}/netpref.desktop
+%{tde_tdeappdir}/nic.desktop
+%{tde_tdeappdir}/opengl.desktop
+%{tde_tdeappdir}/panel_appearance.desktop
+%{tde_tdeappdir}/panel.desktop
+%{tde_tdeappdir}/partitions.desktop
+%{tde_tdeappdir}/pci.desktop
+%{tde_tdeappdir}/privacy.desktop
+%{tde_tdeappdir}/processor.desktop
+%{tde_tdeappdir}/proxy.desktop
+%{tde_tdeappdir}/screensaver.desktop
+%{tde_tdeappdir}/scsi.desktop
+%{tde_tdeappdir}/smbstatus.desktop
+%{tde_tdeappdir}/sound.desktop
+%{tde_tdeappdir}/spellchecking.desktop
+%{tde_tdeappdir}/style.desktop
+%{tde_tdeappdir}/useragent.desktop
+%{tde_tdeappdir}/xserver.desktop
+%{tde_datadir}/applnk/.hidden/energy.desktop
+%{tde_datadir}/applnk/.hidden/fileappearance.desktop
+%{tde_datadir}/applnk/.hidden/filebehavior.desktop
+%{tde_datadir}/applnk/.hidden/filepreviews.desktop
+%{tde_datadir}/applnk/.hidden/kcmkonqyperformance.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_appearance.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config.desktop
+%{tde_datadir}/applnk/.hidden/smb.desktop
+%{tde_datadir}/applnk/.hidden/xinerama.desktop
+%{tde_datadir}/applnk/Settings/LookNFeel/
+%{tde_datadir}/applnk/Settings/WebBrowsing/khtml_appearance.desktop
+%{tde_datadir}/applnk/Settings/WebBrowsing/nsplugin.desktop
+%{tde_datadir}/applnk/Settings/WebBrowsing/smb.desktop
+%{tde_datadir}/apps/kcm_componentchooser/kcm_browser.desktop
+%{tde_datadir}/apps/kcm_componentchooser/kcm_kemail.desktop
+%{tde_datadir}/apps/kcm_componentchooser/kcm_terminal.desktop
+%{tde_datadir}/apps/konqsidebartng/virtual_folders/services/fonts.desktop
+%{tde_datadir}/apps/konqueror/servicemenus/installfont.desktop
+%{tde_datadir}/mimelnk/application/x-ktheme.desktop
+%{tde_datadir}/mimelnk/fonts/folder.desktop
+%{tde_datadir}/mimelnk/fonts/package.desktop
+%{tde_datadir}/mimelnk/fonts/system-folder.desktop
+%{tde_datadir}/services/fonts.protocol
+%{tde_datadir}/services/fontthumbnail.desktop
+%{tde_datadir}/services/kaccess.desktop
+%{tde_datadir}/services/kfile_font.desktop
+%{tde_datadir}/services/kfontviewpart.desktop
+%{tde_datadir}/services/kshorturifilter.desktop
+%{tde_datadir}/services/kuriikwsfilter.desktop
+%{tde_datadir}/services/kurisearchfilter.desktop
+%{tde_datadir}/services/localdomainurifilter.desktop
+
+%{tde_datadir}/apps/usb.ids
+%{tde_datadir}/apps/kcmview1394/oui.db
+
+# The following features are not compiled under RHEL 5
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 15 || 0%{?mdkversion} || 0%{?mgaversion} || 0%{?suse_version}
+%{tde_bindir}/krandrtray
+%{tde_tdelibdir}/kcm_displayconfig.la
+%{tde_tdelibdir}/kcm_displayconfig.so
+%{tde_tdelibdir}/kcm_iccconfig.la
+%{tde_tdelibdir}/kcm_iccconfig.so
+%{tde_tdelibdir}/kcm_randr.la
+%{tde_tdelibdir}/kcm_randr.so
+%{tde_tdeappdir}/displayconfig.desktop
+%{tde_tdeappdir}/iccconfig.desktop
+%{tde_tdeappdir}/krandrtray.desktop
+%{tde_datadir}/applnk/.hidden/randr.desktop
+%{tde_datadir}/autostart/krandrtray-autostart.desktop
+%endif
+
+%post -n trinity-kcontrol
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kcontrol
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-kcontrol-devel
+Summary: Development files for kcontrol
+Group: Development/Libraries
+Requires: trinity-kcontrol = %{version}-%{release}
+
+%description -n trinity-kcontrol-devel
+%{summary}
+
+%files -n trinity-kcontrol-devel
+%{tde_libdir}/libkfontinst.la
+%{tde_libdir}/libkfontinst.so
+
+%post -n trinity-kcontrol-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-kcontrol-devel
+/sbin/ldconfig || :
+
+##########
+
+%package bin
+Summary: core binaries for the TDE base module
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: pam
+
+Provides: tdebase-bin = %{version}-%{release}
+Obsoletes: tdebase-bin < %{version}-%{release}
+
+%description bin
+This package contains miscellaneous programs needed by other
+TDE applications, particularly those in the TDE base module.
+
+%files bin
+%defattr(-,root,root,-)
+%{tde_bindir}/krootbacking
+#%{tde_bindir}/tdeinit_phase1
+%if 0%{?with_tsak}
+%attr(4511,root,root) %{tde_bindir}/[kt]dmtsak
+%{tde_bindir}/tsak
+%endif
+%{tde_bindir}/kdebugdialog
+%{tde_bindir}/kreadconfig
+%{tde_bindir}/kwriteconfig
+%{tde_bindir}/kstart
+%{tde_datadir}/config/kxkb_groups
+%{tde_bindir}/drkonqi
+%{tde_bindir}/kapplymousetheme
+%{tde_bindir}/kblankscrn.kss
+%attr(4755,root,root) %{tde_bindir}/kcheckpass
+%{tde_bindir}/kcminit
+%{tde_bindir}/kcminit_startup
+%{tde_bindir}/kdcop
+%{tde_bindir}/[kt]desu
+%attr(0755,root,root) %{tde_bindir}/[kt]desud
+%{tde_bindir}/kdialog
+%{tde_bindir}/khotkeys
+%{tde_bindir}/knetattach
+%{tde_bindir}/krandom.kss
+%{tde_bindir}/ksystraycmd
+%{tde_bindir}/kxkb
+%{tde_libdir}/kconf_update_bin/khotkeys_update
+%{tde_tdelibdir}/kcminit.la
+%{tde_tdelibdir}/kcminit.so
+%{tde_tdelibdir}/kcminit_startup.la
+%{tde_tdelibdir}/kcminit_startup.so
+%{tde_tdelibdir}/kcm_keyboard.la
+%{tde_tdelibdir}/kcm_keyboard.so
+%{tde_tdelibdir}/kcm_khotkeys_init.la
+%{tde_tdelibdir}/kcm_khotkeys_init.so
+%{tde_tdelibdir}/kcm_khotkeys.la
+%{tde_tdelibdir}/kcm_khotkeys.so
+%{tde_tdelibdir}/kded_khotkeys.la
+%{tde_tdelibdir}/kded_khotkeys.so
+%{tde_tdelibdir}/kgreet_classic.la
+%{tde_tdelibdir}/kgreet_classic.so
+%{tde_tdelibdir}/kgreet_winbind.la
+%{tde_tdelibdir}/kgreet_winbind.so
+%{tde_tdelibdir}/khotkeys.la
+%{tde_tdelibdir}/khotkeys.so
+%{tde_tdelibdir}/khotkeys_arts.la
+%{tde_tdelibdir}/khotkeys_arts.so
+%{tde_tdelibdir}/kxkb.la
+%{tde_tdelibdir}/kxkb.so
+%{tde_libdir}/lib[kt]deinit_kcminit.la
+%{tde_libdir}/lib[kt]deinit_kcminit.so
+%{tde_libdir}/lib[kt]deinit_kcminit_startup.la
+%{tde_libdir}/lib[kt]deinit_kcminit_startup.so
+%{tde_libdir}/lib[kt]deinit_khotkeys.la
+%{tde_libdir}/lib[kt]deinit_khotkeys.so
+%{tde_libdir}/lib[kt]deinit_kxkb.la
+%{tde_libdir}/lib[kt]deinit_kxkb.so
+%{tde_libdir}/libkhotkeys_shared.so.*
+%{tde_tdeappdir}/keyboard.desktop
+%{tde_tdeappdir}/keyboard_layout.desktop
+%{tde_tdeappdir}/khotkeys.desktop
+%{tde_tdeappdir}/knetattach.desktop
+%{tde_datadir}/applnk/System/ScreenSavers/
+%{tde_datadir}/apps/drkonqi/
+%{tde_datadir}/apps/kconf_update/khotkeys_32b1_update.upd
+%{tde_datadir}/apps/kconf_update/khotkeys_printscreen.upd
+%{tde_datadir}/apps/kconf_update/konqueror_gestures_trinity21_update.upd
+%{tde_datadir}/apps/kdcop/kdcopui.rc
+%{tde_datadir}/apps/khotkeys/
+%{tde_datadir}/services/kded/khotkeys.desktop
+%{tde_datadir}/services/kxkb.desktop
+%{_sysconfdir}/pam.d/kcheckpass-trinity
+%if 0%{?suse_version} == 0
+%{_sysconfdir}/pam.d/kscreensaver-trinity
+%endif
+%{tde_tdedocdir}/HTML/en/kdcop/
+%{tde_tdedocdir}/HTML/en/kdebugdialog//
+%{tde_tdedocdir}/HTML/en/[kt]desu/
+%{tde_tdedocdir}/HTML/en/knetattach/
+%{tde_tdedocdir}/HTML/en/kxkb/
+
+%post bin
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun bin
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package bin-devel
+Summary: Development files for core binaries for the TDE base module
+Group: Development/Libraries
+Requires: %{name}-bin = %{version}-%{release}
+
+Obsoletes: tdebase-bin-devel < %{version}-%{release}
+Provides: tdebase-bin-devel = %{version}-%{release}
+
+%description bin-devel
+%{summary}
+
+%files bin-devel
+%{tde_libdir}/libkhotkeys_shared.la
+%{tde_libdir}/libkhotkeys_shared.so
+
+%post bin-devel
+/sbin/ldconfig || :
+
+%postun bin-devel
+/sbin/ldconfig || :
+
+##########
+
+%package data
+Summary: shared data files for the TDE base module
+Group: Environment/Libraries
+Requires: %{name}-runtime-data-common = %{version}-%{release}
+
+Obsoletes: tdebase-data < %{version}-%{release}
+Provides: tdebase-data = %{version}-%{release}
+
+%description data
+This package contains the architecture-independent shared data files
+needed for a basic TDE desktop installation.
+
+%files data
+%defattr(-,root,root,-)
+%{tde_datadir}/config/kshorturifilterrc
+%{tde_datadir}/applnk/.hidden/battery.desktop
+%{tde_datadir}/applnk/.hidden/bwarning.desktop
+%{tde_datadir}/applnk/.hidden/cwarning.desktop
+%{tde_datadir}/applnk/.hidden/.directory
+%{tde_datadir}/applnk/.hidden/email.desktop
+%{tde_datadir}/applnk/.hidden/kcmkonq.desktop
+%{tde_datadir}/applnk/.hidden/kcmkxmlrpcd.desktop
+%{tde_datadir}/applnk/.hidden/konqhtml.desktop
+%{tde_datadir}/applnk/.hidden/passwords.desktop
+%{tde_datadir}/applnk/.hidden/power.desktop
+%{tde_datadir}/applnk/.hidden/socks.desktop
+%{tde_datadir}/applnk/.hidden/userinfo.desktop
+%{tde_datadir}/applnk/.hidden/virtualdesktops.desktop
+%{tde_datadir}/apps/kaccess/eventsrc
+%{tde_datadir}/apps/kcmcss/template.css
+%{tde_datadir}/apps/kcminput/
+%{tde_datadir}/apps/kcmkeys/
+%{tde_datadir}/apps/kcmlocale/pics/background.png
+%{tde_datadir}/apps/kconf_update/convertShortcuts.pl
+%{tde_datadir}/apps/kconf_update/kaccel.upd
+%{tde_datadir}/apps/kconf_update/kcmdisplayrc.upd
+%{tde_datadir}/apps/kconf_update/kuriikwsfilter.upd
+%{tde_datadir}/apps/kconf_update/mouse_cursor_theme.upd
+%{tde_datadir}/apps/kconf_update/socks.upd
+%{tde_datadir}/apps/kcontrol/
+%{tde_datadir}/apps/kdisplay/
+%{tde_datadir}/apps/kfontview/
+%{tde_datadir}/apps/kinfocenter/kinfocenterui.rc
+%{tde_datadir}/apps/kthememanager/themes/*
+%{tde_datadir}/icons/crystalsvg/*/apps/access.png
+%{tde_datadir}/icons/crystalsvg/*/apps/acroread.png
+%{tde_datadir}/icons/crystalsvg/*/apps/applixware.png
+%{tde_datadir}/icons/crystalsvg/*/apps/arts.png
+%{tde_datadir}/icons/crystalsvg/*/apps/background.png
+%{tde_datadir}/icons/crystalsvg/*/apps/bell.png
+%{tde_datadir}/icons/crystalsvg/*/apps/cache.png
+%{tde_datadir}/icons/crystalsvg/*/apps/clanbomber.png
+%{tde_datadir}/icons/crystalsvg/*/apps/clock.png
+%{tde_datadir}/icons/crystalsvg/*/apps/colors.png
+%{tde_datadir}/icons/crystalsvg/*/apps/date.png
+%{tde_datadir}/icons/crystalsvg/*/apps/email.png
+%{tde_datadir}/icons/crystalsvg/*/apps/energy.png
+%{tde_datadir}/icons/crystalsvg/*/apps/energy_star.png
+%{tde_datadir}/icons/crystalsvg/*/apps/filetypes.png
+%{tde_datadir}/icons/crystalsvg/*/apps/fonts.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gimp.png
+%{tde_datadir}/icons/crystalsvg/*/apps/help_index.png
+%{tde_datadir}/icons/crystalsvg/*/apps/hwinfo.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmdevices.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmdf.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmkwm.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmmemory.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmpartitions.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmpci.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcontrol.png
+%{tde_datadir}/icons/crystalsvg/*/apps/[kt]dmconfig.png
+%{tde_datadir}/icons/crystalsvg/*/apps/key_bindings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kfm_home.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kscreensaver.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kthememgr.png
+%{tde_datadir}/icons/crystalsvg/*/apps/licq.png
+%{tde_datadir}/icons/crystalsvg/*/apps/linuxconf.png
+%{tde_datadir}/icons/crystalsvg/*/apps/locale.png
+%{tde_datadir}/icons/crystalsvg/*/apps/looknfeel.png
+%{tde_datadir}/icons/crystalsvg/*/apps/multimedia.png
+%{tde_datadir}/icons/crystalsvg/*/apps/netscape.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_applications.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_development.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_favourite.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_kids.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_multimedia.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_network.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_settings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_toys.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_utilities.png
+%{tde_datadir}/icons/crystalsvg/*/apps/penguin.png
+%{tde_datadir}/icons/crystalsvg/*/apps/personal.png
+%{tde_datadir}/icons/crystalsvg/*/apps/phppg.png
+%{tde_datadir}/icons/crystalsvg/*/apps/proxy.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pysol.png
+%{tde_datadir}/icons/crystalsvg/*/apps/randr.png
+%{tde_datadir}/icons/crystalsvg/*/apps/samba.png
+%{tde_datadir}/icons/crystalsvg/*/apps/staroffice.png
+%{tde_datadir}/icons/crystalsvg/*/apps/stylesheet.png
+%{tde_datadir}/icons/crystalsvg/*/apps/terminal.png
+%{tde_datadir}/icons/crystalsvg/*/apps/tux.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wp.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xclock.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xfmail.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xmag.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xpaint.png
+%{tde_datadir}/icons/crystalsvg/scalable/apps/access.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/acroread.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/aim.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/aktion.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/antivirus.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/applixware.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/arts.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/background.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/bell.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/browser.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/cache.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/camera.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/clanbomber.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/clock.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/colors.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/core.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/date.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/display.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/download_manager.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/email.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/energy.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/error.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/fifteenpieces.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/filetypes.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/fonts.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/galeon.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/gnome_apps.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/hardware.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/hwinfo.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/ieee1394.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/kcmdevices.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/kcmkwm.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/kcmx.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/locale.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/my_mac.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/netscape.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/openoffice.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/package_development.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/package_games_kids.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/package_toys.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/penguin.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/personal.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/quicktime.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/realplayer.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/samba.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/shell.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/staroffice.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/stylesheet.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/terminal.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/tux.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/wine.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/x.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xapp.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xcalc.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xchat.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xclock.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xeyes.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xpaint.svgz
+%{tde_datadir}/icons/crystalsvg/*/devices/laptop.png
+%{tde_datadir}/icons/crystalsvg/*/devices/laptop.svgz
+%{tde_datadir}/icons/crystalsvg/*/actions/newfont.png
+%{tde_datadir}/icons/crystalsvg/*/apps/abiword.png
+%{tde_datadir}/icons/crystalsvg/*/apps/agent.png
+%{tde_datadir}/icons/crystalsvg/*/apps/alevt.png
+%{tde_datadir}/icons/crystalsvg/*/apps/assistant.png
+%{tde_datadir}/icons/crystalsvg/*/apps/blender.png
+%{tde_datadir}/icons/crystalsvg/*/apps/bluefish.png
+%{tde_datadir}/icons/crystalsvg/*/apps/cookie.png
+%{tde_datadir}/icons/crystalsvg/*/apps/designer.png
+%{tde_datadir}/icons/crystalsvg/*/apps/dia.png
+%{tde_datadir}/icons/crystalsvg/*/apps/dlgedit.png
+%{tde_datadir}/icons/crystalsvg/*/apps/eclipse.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_languages.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_mathematics.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_miscellaneous.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_science.png
+%{tde_datadir}/icons/crystalsvg/*/apps/emacs.png
+%{tde_datadir}/icons/crystalsvg/*/apps/enhanced_browsing.png
+%{tde_datadir}/icons/crystalsvg/*/apps/evolution.png
+%{tde_datadir}/icons/crystalsvg/*/apps/fifteenpieces.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gabber.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gaim.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnome_apps.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnomemeeting.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnucash.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnumeric.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gv.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gvim.png
+%{tde_datadir}/icons/crystalsvg/*/apps/icons.png
+%{tde_datadir}/icons/crystalsvg/*/apps/iconthemes.png
+%{tde_datadir}/icons/crystalsvg/*/apps/ieee1394.png
+%{tde_datadir}/icons/crystalsvg/*/apps/input_devices_settings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmkicker.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmmidi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmprocessor.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmscsi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmsound.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmsystem.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmx.png
+%{tde_datadir}/icons/crystalsvg/*/apps/keyboard.png
+%{tde_datadir}/icons/crystalsvg/*/apps/keyboard_layout.png
+%{tde_datadir}/icons/crystalsvg/*/apps/knotify.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kvirc.png
+%{tde_datadir}/icons/crystalsvg/*/apps/linguist.png
+%{tde_datadir}/icons/crystalsvg/*/apps/lyx.png
+%{tde_datadir}/icons/crystalsvg/*/apps/mac.png
+%{tde_datadir}/icons/crystalsvg/*/apps/mathematica.png
+%{tde_datadir}/icons/crystalsvg/*/apps/nedit.png
+%{tde_datadir}/icons/crystalsvg/*/apps/opera.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_application.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_editors.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_edutainment.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_arcade.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_board.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_card.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_strategy.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_graphics.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_system.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_wordprocessing.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pan.png
+%{tde_datadir}/icons/crystalsvg/*/apps/panel_settings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/plan.png
+%{tde_datadir}/icons/crystalsvg/*/apps/planner.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pybliographic.png
+%{tde_datadir}/icons/crystalsvg/*/apps/realplayer.png
+%{tde_datadir}/icons/crystalsvg/*/apps/remote.png
+%{tde_datadir}/icons/crystalsvg/*/apps/scribus.png
+%{tde_datadir}/icons/crystalsvg/*/apps/sodipodi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/style.png
+%{tde_datadir}/icons/crystalsvg/*/apps/usb.png
+%{tde_datadir}/icons/crystalsvg/*/apps/vnc.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wabi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wine.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xcalc.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xchat.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xclipboard.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xconsole.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xedit.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xemacs.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xeyes.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xfig.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xload.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xmms.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xosview.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xv.png
+%{tde_datadir}/icons/crystalsvg/*/apps/galeon.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmdrkonqi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pinguin.png
+%{tde_datadir}/icons/crystalsvg/*/apps/x.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xapp.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xawtv.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmopengl.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wmaker_apps.png
+%{tde_datadir}/icons/crystalsvg/*/apps/qtella.png
+%{tde_datadir}/services/searchproviders
+%{tde_datadir}/services/useragentstrings/*.desktop
+%{tde_datadir}/servicetypes/searchprovider.desktop
+%{tde_datadir}/servicetypes/uasprovider.desktop
+%exclude %{tde_datadir}/sounds/pop.wav
+%{tde_datadir}/sounds/
+%{tde_datadir}/wallpapers/*
+
+%if "%{tde_prefix}" != "/usr"
+%{tde_prefix}/etc/xdg/menus/applications-merged/kde-essential.menu
+%{tde_prefix}/etc/xdg/menus/kde-information.menu
+%{tde_prefix}/etc/xdg/menus/kde-screensavers.menu
+%{tde_prefix}/etc/xdg/menus/kde-settings.menu
+%else
+%{_sysconfdir}/xdg/menus/applications-merged/kde-essential.menu
+%{_sysconfdir}/xdg/menus/kde-information.menu
+%{_sysconfdir}/xdg/menus/kde-screensavers.menu
+%{_sysconfdir}/xdg/menus/kde-settings.menu
+%endif
+
+%{tde_tdedocdir}/HTML/en/kcontrol/
+%exclude %{tde_tdedocdir}/HTML/en/kcontrol/kcmkonsole/
+%{tde_tdedocdir}/HTML/en/kinfocenter/
+
+%post data
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%if 0%{?mdkversion}
+# Mandriva-specific: we have to choose a background for current distribution variant (Free, One, Powerpack, ...)
+# First, we read the "product" key in /etc/product.id
+eval $(tr "," ";" </etc/product.id) 2>/dev/null
+# Then, we create a symbolic link to the corresponding background
+if [ -r "/usr/share/mdk/backgrounds/Mandriva-${product:-Free}-1280x1024-1300.jpg" "%{tde_bg}" ]; then
+ %__ln -sf "/usr/share/mdk/backgrounds/Mandriva-${product:-Free}-1280x1024-1300.jpg" "%{tde_bg}"
+fi
+%endif
+
+%postun data
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package kio-plugins
+Summary: core I/O slaves for TDE
+Group: Applications/Utilities
+Requires: trinity-kdesktop = %{version}-%{release}
+Requires: cyrus-sasl
+Requires: psmisc
+%if 0%{?with_hal}
+Requires: hal >= 0.4.8
+%endif
+%if 0%{?rhel} == 4 || 0%{?suse_version}
+Requires: cryptsetup
+%else
+Requires: cryptsetup-luks
+%endif
+
+Obsoletes: tdebase-kio-plugins < %{version}-%{release}
+Provides: tdebase-kio-plugins = %{version}-%{release}
+
+%description kio-plugins
+This package includes the base kioslaves. They include, amongst many
+others, file, http, and ftp.
+
+It also includes the media kioslave, which handles removable devices,
+and which works best with hal (and therefore udev) and pmount. Media
+also extends the functionality of many other kioslaves. To use this
+service, please make sure that your user is a member of the plugdev
+group.
+
+%files kio-plugins
+%defattr(-,root,root,-)
+%{tde_bindir}/kio_media_mounthelper
+%{tde_bindir}/ktrash
+%{tde_tdelibdir}/cursorthumbnail.la
+%{tde_tdelibdir}/cursorthumbnail.so
+%{tde_tdelibdir}/djvuthumbnail.la
+%{tde_tdelibdir}/djvuthumbnail.so
+%{tde_tdelibdir}/htmlthumbnail.la
+%{tde_tdelibdir}/htmlthumbnail.so
+%{tde_tdelibdir}/imagethumbnail.la
+%{tde_tdelibdir}/imagethumbnail.so
+%{tde_tdelibdir}/kcm_cgi.la
+%{tde_tdelibdir}/kcm_cgi.so
+%{tde_tdelibdir}/kcm_media.la
+%{tde_tdelibdir}/kcm_media.so
+%{tde_tdelibdir}/kded_homedirnotify.la
+%{tde_tdelibdir}/kded_homedirnotify.so
+%{tde_tdelibdir}/kded_mediamanager.la
+%{tde_tdelibdir}/kded_mediamanager.so
+%{tde_tdelibdir}/kded_medianotifier.la
+%{tde_tdelibdir}/kded_medianotifier.so
+%{tde_tdelibdir}/kded_remotedirnotify.la
+%{tde_tdelibdir}/kded_remotedirnotify.so
+%{tde_tdelibdir}/kded_systemdirnotify.la
+%{tde_tdelibdir}/kded_systemdirnotify.so
+%{tde_tdelibdir}/kfile_media.la
+%{tde_tdelibdir}/kfile_media.so
+%{tde_tdelibdir}/kfile_trash.la
+%{tde_tdelibdir}/kfile_trash.so
+%{tde_tdelibdir}/kio_about.la
+%{tde_tdelibdir}/kio_about.so
+%{tde_tdelibdir}/kio_cgi.la
+%{tde_tdelibdir}/kio_cgi.so
+%{tde_tdelibdir}/kio_filter.la
+%{tde_tdelibdir}/kio_filter.so
+%{tde_tdelibdir}/kio_finger.la
+%{tde_tdelibdir}/kio_finger.so
+%{tde_tdelibdir}/kio_fish.la
+%{tde_tdelibdir}/kio_fish.so
+%{tde_tdelibdir}/kio_floppy.la
+%{tde_tdelibdir}/kio_floppy.so
+%{tde_tdelibdir}/kio_home.la
+%{tde_tdelibdir}/kio_home.so
+%{tde_tdelibdir}/kio_info.la
+%{tde_tdelibdir}/kio_info.so
+%{tde_tdelibdir}/kio_mac.la
+%{tde_tdelibdir}/kio_mac.so
+%{tde_tdelibdir}/kio_man.la
+%{tde_tdelibdir}/kio_man.so
+%{tde_tdelibdir}/kio_media.la
+%{tde_tdelibdir}/kio_media.so
+%{tde_tdelibdir}/kio_nfs.la
+%{tde_tdelibdir}/kio_nfs.so
+%{tde_tdelibdir}/kio_remote.la
+%{tde_tdelibdir}/kio_remote.so
+%{tde_tdelibdir}/kio_settings.la
+%{tde_tdelibdir}/kio_settings.so
+%{tde_tdelibdir}/kio_sftp.la
+%{tde_tdelibdir}/kio_sftp.so
+%{tde_tdelibdir}/kio_smb.la
+%{tde_tdelibdir}/kio_smb.so
+%{tde_tdelibdir}/kio_system.la
+%{tde_tdelibdir}/kio_system.so
+%{tde_tdelibdir}/kio_tar.la
+%{tde_tdelibdir}/kio_tar.so
+%{tde_tdelibdir}/kio_thumbnail.la
+%{tde_tdelibdir}/kio_thumbnail.so
+%{tde_tdelibdir}/kio_trash.la
+%{tde_tdelibdir}/kio_trash.so
+%{tde_tdelibdir}/libkmanpart.la
+%{tde_tdelibdir}/libkmanpart.so
+%{tde_tdelibdir}/textthumbnail.la
+%{tde_tdelibdir}/textthumbnail.so
+%{tde_tdeappdir}/kcmcgi.desktop
+%{tde_datadir}/apps/kio_finger/kio_finger.css
+%{tde_datadir}/apps/kio_finger/kio_finger.pl
+%{tde_datadir}/apps/kio_info/kde-info2html
+%{tde_datadir}/apps/kio_info/kde-info2html.conf
+%{tde_datadir}/apps/kio_man/kio_man.css
+%{tde_datadir}/apps/konqueror/dirtree/remote/smb-network.desktop
+%{tde_datadir}/apps/remoteview/smb-network.desktop
+%{tde_datadir}/apps/systemview/*.desktop
+%{tde_datadir}/config.kcfg/mediamanagersettings.kcfg
+%{tde_datadir}/mimelnk/application/x-smb-server.desktop
+%{tde_datadir}/mimelnk/application/x-smb-workgroup.desktop
+%{tde_datadir}/mimelnk/inode/system_directory.desktop
+%{tde_datadir}/mimelnk/media/*.desktop
+%{tde_datadir}/services/about.protocol
+%{tde_datadir}/services/applications.protocol
+%{tde_datadir}/services/ar.protocol
+%{tde_datadir}/services/bzip.protocol
+%{tde_datadir}/services/bzip2.protocol
+%{tde_datadir}/services/cgi.protocol
+%{tde_datadir}/services/cursorthumbnail.desktop
+%{tde_datadir}/services/djvuthumbnail.desktop
+%{tde_datadir}/services/finger.protocol
+%{tde_datadir}/services/fish.protocol
+%{tde_datadir}/services/floppy.protocol
+%{tde_datadir}/services/gzip.protocol
+%{tde_datadir}/services/home.protocol
+%{tde_datadir}/services/htmlthumbnail.desktop
+%{tde_datadir}/services/imagethumbnail.desktop
+%{tde_datadir}/services/info.protocol
+%{tde_datadir}/services/kded/homedirnotify.desktop
+%{tde_datadir}/services/kded/mediamanager.desktop
+%{tde_datadir}/services/kded/medianotifier.desktop
+%{tde_datadir}/services/kded/remotedirnotify.desktop
+%{tde_datadir}/services/kded/systemdirnotify.desktop
+%{tde_datadir}/services/kfile_media.desktop
+%{tde_datadir}/services/kfile_trash_system.desktop
+%{tde_datadir}/services/kmanpart.desktop
+%{tde_datadir}/services/mac.protocol
+%{tde_datadir}/services/man.protocol
+%{tde_datadir}/services/media.protocol
+%{tde_datadir}/services/nfs.protocol
+%{tde_datadir}/services/nxfish.protocol
+%{tde_datadir}/services/programs.protocol
+%{tde_datadir}/services/remote.protocol
+%{tde_datadir}/services/settings.protocol
+%{tde_datadir}/services/sftp.protocol
+%{tde_datadir}/services/smb.protocol
+%{tde_datadir}/services/system.protocol
+%{tde_datadir}/services/tar.protocol
+%{tde_datadir}/services/textthumbnail.desktop
+%{tde_datadir}/services/thumbnail.protocol
+%{tde_datadir}/services/trash.protocol
+%{tde_datadir}/services/zip.protocol
+%{tde_datadir}/servicetypes/thumbcreator.desktop
+%{tde_datadir}/services/kfile_trash.desktop
+%{tde_tdedocdir}/HTML/en/kioslave/
+%if 0%{?with_exr}
+%{tde_tdelibdir}/exrthumbnail.la
+%{tde_tdelibdir}/exrthumbnail.so
+%{tde_datadir}/services/exrthumbnail.desktop
+%endif
+%if 0%{?with_hal}
+%{tde_tdelibdir}/media_propsdlgplugin.la
+%{tde_tdelibdir}/media_propsdlgplugin.so
+%{tde_datadir}/services/media_propsdlgplugin.desktop
+%endif
+
+%post kio-plugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun kio-plugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+
+##########
+
+%package -n trinity-kdepasswd
+Summary: password changer for TDE
+Group: Applications/Utilities
+
+%description -n trinity-kdepasswd
+This is a simple application which allows users to change their
+system passwords.
+
+%files -n trinity-kdepasswd
+%defattr(-,root,root,-)
+%{tde_bindir}/kdepasswd
+%{tde_tdelibdir}/kcm_useraccount.la
+%{tde_tdelibdir}/kcm_useraccount.so
+%{tde_tdeappdir}/kcm_useraccount.desktop
+%{tde_tdeappdir}/kdepasswd.desktop
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/default1.png
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/default2.png
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/default3.png
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/root1.png
+%{tde_datadir}/apps/[kt]dm/pics/users/*.png
+%{tde_datadir}/config.kcfg/kcm_useraccount.kcfg
+%{tde_datadir}/config.kcfg/kcm_useraccount_pass.kcfg
+
+%post -n trinity-kdepasswd
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kdepasswd
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-tdeprint
+Summary: print system for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: psutils
+
+%description -n trinity-tdeprint
+This package contains the TDE printing subsystem. It can use CUPS,
+lpd-ng or the traditional lpd. It also includes support for fax and
+pdf printing.
+
+Installation of smbclient will make you able to use smb shared printers.
+
+%files -n trinity-tdeprint
+%defattr(-,root,root,-)
+%{tde_bindir}/[kt]deprintfax
+%{tde_bindir}/kjobviewer
+%{tde_bindir}/kprinter
+%{tde_tdelibdir}/kcm_printmgr.la
+%{tde_tdelibdir}/kcm_printmgr.so
+%{tde_tdelibdir}/kio_print.la
+%{tde_tdelibdir}/kio_print.so
+%{tde_tdelibdir}/kjobviewer.la
+%{tde_tdelibdir}/kjobviewer.so
+%{tde_tdelibdir}/kprinter.la
+%{tde_tdelibdir}/kprinter.so
+%{tde_tdelibdir}/lib[kt]deprint_part.la
+%{tde_tdelibdir}/lib[kt]deprint_part.so
+%{tde_libdir}/lib[kt]deinit_kjobviewer.la
+%{tde_libdir}/lib[kt]deinit_kjobviewer.so
+%{tde_libdir}/lib[kt]deinit_kprinter.la
+%{tde_libdir}/lib[kt]deinit_kprinter.so
+%{tde_tdeappdir}/[kt]deprintfax.desktop
+%{tde_tdeappdir}/[kt]jobviewer.desktop
+%{tde_tdeappdir}/printers.desktop
+%{tde_datadir}/apps/[kt]deprint/
+%{tde_datadir}/apps/[kt]deprintfax/
+%{tde_datadir}/apps/[kt]jobviewer/
+%{tde_datadir}/apps/[kt]deprint_part/kdeprint_part.rc
+%{tde_datadir}/icons/hicolor/*/apps/kdeprintfax.png
+%{tde_datadir}/icons/hicolor/*/apps/kjobviewer.png
+%{tde_datadir}/icons/hicolor/*/apps/printmgr.png
+%{tde_datadir}/icons/hicolor/scalable/apps/kdeprintfax.svgz
+%{tde_datadir}/icons/hicolor/scalable/apps/kjobviewer.svgz
+%{tde_datadir}/icons/hicolor/scalable/apps/printmgr.svgz
+%{tde_datadir}/mimelnk/print/class.desktop
+%{tde_datadir}/mimelnk/print/driver.desktop
+%{tde_datadir}/mimelnk/print/folder.desktop
+%{tde_datadir}/mimelnk/print/jobs.desktop
+%{tde_datadir}/mimelnk/print/manager.desktop
+%{tde_datadir}/mimelnk/print/printer.desktop
+%{tde_datadir}/mimelnk/print/printermodel.desktop
+%{tde_datadir}/services/kdeprint_part.desktop
+%{tde_datadir}/services/print.protocol
+%{tde_datadir}/services/printdb.protocol
+%{tde_tdedocdir}/HTML/en/[kt]deprint/
+
+%post -n trinity-tdeprint
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-tdeprint
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kdesktop
+Summary: miscellaneous binaries and files for the TDE desktop
+Group: Applications/Utilities
+Requires: %{name}-bin = %{version}-%{release}
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-libkonq = %{version}-%{release}
+Requires: eject
+%if 0%{?rhel} >= 5 || 0%{?fedora} || 0%{?mgaversion} || 0%{?mdkversion}
+Requires: xdg-utils
+%endif
+
+%description -n trinity-kdesktop
+This package contains miscellaneous binaries and files integral to
+the TDE desktop.
+
+%files -n trinity-kdesktop
+%defattr(-,root,root,-)
+%{tde_datadir}/config/kdesktop_custom_menu1
+%{tde_datadir}/config/kdesktop_custom_menu2
+%{tde_bindir}/kcheckrunning
+%{tde_bindir}/kxdglauncher
+%{tde_bindir}/kdeeject
+%{tde_bindir}/kdesktop
+%{tde_bindir}/kdesktop_lock
+%{tde_bindir}/kwebdesktop
+%{tde_tdelibdir}/kdesktop.la
+%{tde_tdelibdir}/kdesktop.so
+%{tde_libdir}/lib[kt]deinit_kdesktop.la
+%{tde_libdir}/lib[kt]deinit_kdesktop.so
+%{tde_datadir}/apps/kdesktop/
+%{tde_datadir}/apps/konqueror/servicemenus/kdesktopSetAsBackground.desktop
+%{tde_datadir}/autostart/kdesktop.desktop
+%{tde_datadir}/config.kcfg/kdesktop.kcfg
+%{tde_datadir}/config.kcfg/klaunch.kcfg
+%{tde_datadir}/config.kcfg/kwebdesktop.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/error.png
+
+%post -n trinity-kdesktop
+/sbin/ldconfig || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kdesktop
+/sbin/ldconfig || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kdesktop-devel
+Summary: Development files for kdesktop
+Group: Development/Libraries
+Requires: trinity-kdesktop = %{version}-%{release}
+
+%description -n trinity-kdesktop-devel
+%{summary}
+
+%files -n trinity-kdesktop-devel
+%{tde_tdeincludedir}/KBackgroundIface.h
+%{tde_tdeincludedir}/KDesktopIface.h
+%{tde_tdeincludedir}/KScreensaverIface.h
+
+##########
+
+%package -n trinity-tdm
+Summary: X Display manager for TDE
+Group: Applications/Utilities
+Requires: %{name}-bin = %{version}-%{release}
+Requires: %{name}-data = %{version}-%{release}
+Requires: pam
+
+# Provides the global Xsession script (/etc/X11/xinit/Xsession or /etc/X11/Xsession)
+%if 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} == 4
+Requires: xinitrc
+%endif
+%if 0%{?suse_version}
+Requires: xdm
+%endif
+%if 0%{?rhel} >= 5 || 0%{?fedora}
+Requires: xorg-x11-xinit
+%endif
+
+# Required for Fedora LiveCD
+%if 0%{?rhel} || 0%{?fedora}
+Provides: service(graphical-login)
+%endif
+# Required for Mandriva's installer
+%if 0%{?mgaversion} || 0%{?mdkversion}
+Provides: dm
+%endif
+
+%description -n trinity-tdm
+tdm manages a collection of X servers, which may be on the local host or
+remote machines. It provides services similar to those provided by init,
+getty, and login on character-based terminals: prompting for login name and
+password, authenticating the user, and running a session. tdm supports XDMCP
+(X Display Manager Control Protocol) and can also be used to run a chooser
+process which presents the user with a menu of possible hosts that offer
+XDMCP display management.
+
+A collection of icons to associate with individual users is included with
+TDE, but as part of the kdepasswd package.
+
+The menu package will help to provide TDM with a list of window managers
+that can be launched, if the window manager does not register with TDM
+already. Most users won't need this.
+
+%files -n trinity-tdm
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/kgreet_pam.la
+%{tde_tdelibdir}/kgreet_pam.so
+%{tde_bindir}/gen[kt]dmconf
+%{tde_bindir}/[kt]dm
+%{tde_bindir}/[kt]dm_config
+%{tde_bindir}/[kt]dmctl
+%{tde_bindir}/[kt]dm_greet
+%{tde_bindir}/krootimage
+%{tde_datadir}/apps/[kt]dm/pics/kdelogo.png
+%{tde_datadir}/apps/[kt]dm/pics/kdelogo-crystal.png
+%{tde_datadir}/apps/[kt]dm/pics/shutdown.jpg
+%{tde_datadir}/apps/[kt]dm/pics/users/default1.png
+%{tde_datadir}/apps/[kt]dm/pics/users/default2.png
+%{tde_datadir}/apps/[kt]dm/pics/users/default3.png
+%{tde_datadir}/apps/[kt]dm/pics/users/root1.png
+%{tde_datadir}/apps/[kt]dm/sessions/*.desktop
+%{tde_datadir}/apps/[kt]dm/themes/
+%{tde_datadir}/config/[kt]dm/
+%{tde_tdedocdir}/HTML/en/[kt]dm/
+%if 0%{?suse_version} == 0
+%{_sysconfdir}/pam.d/kdm-trinity
+%{_sysconfdir}/pam.d/kdm-trinity-np
+%endif
+%if 0%{?suse_version}
+/usr/lib/X11/displaymanagers/tdm
+%endif
+
+# Distribution specific stuff
+%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
+%{_usr}/share/xsessions/tde.desktop
+%endif
+
+# https://wiki.mageia.org/en/How_to_add_a_new_Window_Manager_or_Display_Manager
+%if 0%{?mgaversion} || 0%{?mdkversion}
+%{_sysconfdir}/X11/wmsession.d/45TDE
+%{_datadir}/X11/dm.d/45TDE.conf
+
+%post -n trinity-tdm
+%make_session
+
+%postun -n trinity-tdm
+%make_session
+%endif
+
+##########
+
+%package -n trinity-tdm-devel
+Summary: Development files for tdm
+Group: Development/Libraries
+Requires: trinity-tdm = %{version}-%{release}
+
+%description -n trinity-tdm-devel
+%{summary}
+
+%files -n trinity-tdm-devel
+%{tde_tdeincludedir}/kgreeterplugin.h
+
+##########
+
+%package -n trinity-kfind
+Summary: file-find utility for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kfind
+kfind can be used to find files and directories on your
+workstations.
+
+%files -n trinity-kfind
+%defattr(-,root,root,-)
+%{tde_bindir}/kfind
+%{tde_tdelibdir}/libkfindpart.la
+%{tde_tdelibdir}/libkfindpart.so
+%{tde_tdeappdir}/Kfind.desktop
+%{tde_datadir}/apps/kfindpart/
+%{tde_datadir}/icons/hicolor/*/apps/kfind.png
+%{tde_datadir}/services/kfindpart.desktop
+%{tde_datadir}/servicetypes/findpart.desktop
+%{tde_tdedocdir}/HTML/en/kfind/
+
+%post -n trinity-kfind
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kfind
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-khelpcenter
+Summary: help center for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: htdig
+
+%description -n trinity-khelpcenter
+The TDE Help Center provides documentation on how to use the KDE desktop.
+
+The htdig package is needed to build a searchable archive of TDE
+documentation.
+
+%files -n trinity-khelpcenter
+%defattr(-,root,root,-)
+%{tde_bindir}/khc_beagle_index.pl
+%{tde_bindir}/khc_beagle_search.pl
+%{tde_bindir}/khc_docbookdig.pl
+%{tde_bindir}/khc_htdig.pl
+%{tde_bindir}/khc_htsearch.pl
+%{tde_bindir}/khc_indexbuilder
+%{tde_bindir}/khc_mansearch.pl
+%{tde_bindir}/khelpcenter
+%{tde_tdelibdir}/khelpcenter.la
+%{tde_tdelibdir}/khelpcenter.so
+%{tde_libdir}/lib[kt]deinit_khelpcenter.la
+%{tde_libdir}/lib[kt]deinit_khelpcenter.so
+%{tde_tdeappdir}/Help.desktop
+%{tde_datadir}/apps/khelpcenter/
+%{tde_datadir}/config.kcfg/khelpcenter.kcfg
+%{tde_datadir}/icons/hicolor/*/apps/khelpcenter.*
+%{tde_datadir}/services/khelpcenter.desktop
+%{tde_tdedocdir}/HTML/en/khelpcenter/
+
+%post -n trinity-khelpcenter
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-khelpcenter
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kicker
+Summary: desktop panel for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kicker
+Kicker provides the TDE panel on you desktop. It can be used as a
+program launcher and can load plugins to provide additional
+functionality.
+
+%files -n trinity-kicker
+%defattr(-,root,root,-)
+%{tde_bindir}/appletproxy
+%{tde_bindir}/extensionproxy
+%{tde_bindir}/kasbar
+%{tde_bindir}/kicker
+%{tde_libdir}/kconf_update_bin/kicker-3.4-reverseLayout
+%{tde_tdelibdir}/appletproxy.la
+%{tde_tdelibdir}/appletproxy.so
+%{tde_tdelibdir}/clock_panelapplet.la
+%{tde_tdelibdir}/clock_panelapplet.so
+%{tde_tdelibdir}/dockbar_panelextension.la
+%{tde_tdelibdir}/dockbar_panelextension.so
+%{tde_tdelibdir}/extensionproxy.la
+%{tde_tdelibdir}/extensionproxy.so
+%{tde_tdelibdir}/kasbar_panelextension.la
+%{tde_tdelibdir}/kasbar_panelextension.so
+%{tde_tdelibdir}/kicker.la
+%{tde_tdelibdir}/kickermenu_find.la
+%{tde_tdelibdir}/kickermenu_find.so
+%{tde_tdelibdir}/kickermenu_kate.so
+%{tde_tdelibdir}/kickermenu_kate.la
+%{tde_tdelibdir}/kickermenu_[kt]deprint.la
+%{tde_tdelibdir}/kickermenu_[kt]deprint.so
+%{tde_tdelibdir}/kickermenu_konqueror.la
+%{tde_tdelibdir}/kickermenu_konqueror.so
+%{tde_tdelibdir}/kickermenu_konsole.la
+%{tde_tdelibdir}/kickermenu_konsole.so
+%{tde_tdelibdir}/kickermenu_prefmenu.la
+%{tde_tdelibdir}/kickermenu_prefmenu.so
+%{tde_tdelibdir}/kickermenu_recentdocs.la
+%{tde_tdelibdir}/kickermenu_recentdocs.so
+%{tde_tdelibdir}/kickermenu_remotemenu.la
+%{tde_tdelibdir}/kickermenu_remotemenu.so
+%{tde_tdelibdir}/kickermenu_systemmenu.la
+%{tde_tdelibdir}/kickermenu_systemmenu.so
+%{tde_tdelibdir}/kicker.so
+%{tde_tdelibdir}/launcher_panelapplet.la
+%{tde_tdelibdir}/launcher_panelapplet.so
+%{tde_tdelibdir}/lockout_panelapplet.la
+%{tde_tdelibdir}/lockout_panelapplet.so
+%{tde_tdelibdir}/media_panelapplet.la
+%{tde_tdelibdir}/media_panelapplet.so
+%{tde_tdelibdir}/menu_panelapplet.la
+%{tde_tdelibdir}/menu_panelapplet.so
+%{tde_tdelibdir}/minipager_panelapplet.la
+%{tde_tdelibdir}/minipager_panelapplet.so
+%{tde_tdelibdir}/naughty_panelapplet.la
+%{tde_tdelibdir}/naughty_panelapplet.so
+%{tde_tdelibdir}/run_panelapplet.la
+%{tde_tdelibdir}/run_panelapplet.so
+%{tde_tdelibdir}/sidebar_panelextension.la
+%{tde_tdelibdir}/sidebar_panelextension.so
+%{tde_tdelibdir}/systemtray_panelapplet.la
+%{tde_tdelibdir}/systemtray_panelapplet.so
+%{tde_tdelibdir}/taskbar_panelapplet.la
+%{tde_tdelibdir}/taskbar_panelapplet.so
+%{tde_tdelibdir}/taskbar_panelextension.la
+%{tde_tdelibdir}/taskbar_panelextension.so
+%{tde_tdelibdir}/trash_panelapplet.la
+%{tde_tdelibdir}/trash_panelapplet.so
+%{tde_libdir}/libkasbar.so.*
+%{tde_libdir}/lib[kt]deinit_appletproxy.la
+%{tde_libdir}/lib[kt]deinit_appletproxy.so
+%{tde_libdir}/lib[kt]deinit_extensionproxy.la
+%{tde_libdir}/lib[kt]deinit_extensionproxy.so
+%{tde_libdir}/lib[kt]deinit_kicker.la
+%{tde_libdir}/lib[kt]deinit_kicker.so
+%{tde_libdir}/libkickermain.so.*
+%{tde_libdir}/libtaskbar.so.*
+%{tde_libdir}/libtaskmanager.so.*
+%{tde_libdir}/libkickoffsearch_interfaces.so.*
+%{tde_tdeappdir}/kcmkicker.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_arrangement.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_hiding.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_menus.desktop
+%{tde_datadir}/apps/clockapplet/pics/lcd.png
+%{tde_datadir}/apps/kconf_update/kicker-3.1-properSizeSetting.pl
+%{tde_datadir}/apps/kconf_update/kicker-3.5-kconfigXTize.pl
+%{tde_datadir}/apps/kconf_update/kicker-3.5-taskbarEnums.pl
+%{tde_datadir}/apps/kconf_update/kickerrc.upd
+%{tde_datadir}/apps/kicker/
+%exclude %{tde_datadir}/apps/kicker/applets/klipper.desktop
+%exclude %{tde_datadir}/apps/kicker/applets/ksysguardapplet.desktop
+%{tde_datadir}/apps/naughtyapplet/pics/naughty-happy.png
+%{tde_datadir}/apps/naughtyapplet/pics/naughty-sad.png
+%{tde_datadir}/autostart/panel.desktop
+%{tde_datadir}/config.kcfg/kickerSettings.kcfg
+%{tde_datadir}/config.kcfg/launcherapplet.kcfg
+%{tde_datadir}/config.kcfg/pagersettings.kcfg
+%{tde_datadir}/config.kcfg/taskbar.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/systemtray.png
+%{tde_datadir}/icons/crystalsvg/*/apps/taskbar.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kbinaryclock.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kdisknav.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kicker.png
+%{tde_datadir}/icons/crystalsvg/*/apps/panel.png
+%{tde_datadir}/icons/crystalsvg/*/apps/runprocesscatcher.png
+%{tde_datadir}/icons/crystalsvg/*/apps/window_list.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kbinaryclock.svgz
+%{tde_datadir}/icons/crystalsvg/*/apps/systemtray.svgz
+%{tde_datadir}/servicetypes/kickoffsearchplugin.desktop
+%{tde_tdedocdir}/HTML/en/kicker/
+
+%post -n trinity-kicker
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-kicker
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kicker-devel
+Summary: Development files for kicker
+Group: Development/Libraries
+Requires: trinity-kicker = %{version}-%{release}
+
+%description -n trinity-kicker-devel
+%{summary}
+
+%files -n trinity-kicker-devel
+%{tde_tdeincludedir}/kickoff-search-plugin.h
+%{tde_tdeincludedir}/kickoffsearchinterface.h
+%{tde_libdir}/libkasbar.la
+%{tde_libdir}/libkasbar.so
+%{tde_libdir}/libkickermain.la
+%{tde_libdir}/libkickermain.so
+%{tde_libdir}/libkickoffsearch_interfaces.la
+%{tde_libdir}/libkickoffsearch_interfaces.so
+%{tde_libdir}/libtaskbar.la
+%{tde_libdir}/libtaskbar.so
+%{tde_libdir}/libtaskmanager.la
+%{tde_libdir}/libtaskmanager.so
+
+%post -n trinity-kicker-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-kicker-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-klipper
+Summary: clipboard utility for Trinity
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-klipper
+klipper provides standard clipboard functions (cut and paste, history
+saving) plus additional features, like the ability to offer actions to
+take dependent on the clipboard contents. For example, it can launch a
+web browser if the clipboard contains a URL.
+
+%files -n trinity-klipper
+%defattr(-,root,root,-)
+%{tde_bindir}/klipper
+%{tde_datadir}/config/klipperrc
+%{tde_tdelibdir}/klipper.la
+%{tde_tdelibdir}/klipper.so
+%{tde_tdelibdir}/klipper_panelapplet.la
+%{tde_tdelibdir}/klipper_panelapplet.so
+%{tde_libdir}/lib[kt]deinit_klipper.la
+%{tde_libdir}/lib[kt]deinit_klipper.so
+%{tde_tdeappdir}/klipper.desktop
+%{tde_datadir}/apps/kconf_update/klipper-1-2.pl
+%{tde_datadir}/apps/kconf_update/klipper-trinity1.sh
+%{tde_datadir}/apps/kconf_update/klipperrc.upd
+%{tde_datadir}/apps/kconf_update/klippershortcuts.upd
+%{tde_datadir}/apps/kicker/applets/klipper.desktop
+%{tde_datadir}/autostart/klipper.desktop
+%{tde_datadir}/icons/hicolor/*/apps/klipper.*
+%{tde_tdedocdir}/HTML/en/klipper/
+
+%post -n trinity-klipper
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-klipper
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kmenuedit
+Summary: menu editor for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kmenuedit
+The TDE menu editor allows you to make customisations to the KDE menu
+structure.
+
+%files -n trinity-kmenuedit
+%defattr(-,root,root,-)
+%{tde_bindir}/kcontroledit
+%{tde_bindir}/kmenuedit
+%{tde_tdelibdir}/kcontroledit.la
+%{tde_tdelibdir}/kcontroledit.so
+%{tde_tdelibdir}/kmenuedit.la
+%{tde_tdelibdir}/kmenuedit.so
+%{tde_libdir}/lib[kt]deinit_kcontroledit.la
+%{tde_libdir}/lib[kt]deinit_kcontroledit.so
+%{tde_libdir}/lib[kt]deinit_kmenuedit.la
+%{tde_libdir}/lib[kt]deinit_kmenuedit.so
+%{tde_tdeappdir}/kmenuedit.desktop
+%{tde_datadir}/applnk/System/kmenuedit.desktop
+%{tde_datadir}/apps/kcontroledit/
+%{tde_datadir}/apps/kmenuedit/
+%{tde_tdedocdir}/HTML/en/kmenuedit/
+
+%post -n trinity-kmenuedit
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+%postun -n trinity-kmenuedit
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-konqueror
+Summary: TDE's advanced file manager, web browser and document viewer
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-kcontrol = %{version}-%{release}
+Requires: %{name}-kio-plugins = %{version}-%{release}
+Requires: trinity-kdesktop = %{version}-%{release}
+Requires: trinity-kfind = %{version}-%{release}
+Requires: trinity-libkonq = %{version}-%{release}
+
+%description -n trinity-konqueror
+Konqueror is the file manager for the Trinity Desktop Environment.
+It supports basic file management on local UNIX filesystems,
+from simple cut/copy and paste operations to advanced remote
+and local network file browsing.
+
+It is also the canvas for all the latest TDE technology,
+from KIO slaves (which provide mechanisms for file access) to
+component embedding via the KParts object interface, and it
+is one of the most customizable applications available.
+
+Konqueror is an Open Source web browser with HTML4.0 compliance,
+supporting Java applets, JavaScript, CSS1 and (partially) CSS2,
+as well as Netscape plugins (for example, Flash or RealVideo plugins).
+
+It is a universal viewing application, capable of embedding
+read-only viewing components in itself to view documents without
+ever launching another application.
+
+%files -n trinity-konqueror
+%defattr(-,root,root,-)
+%{tde_datadir}/config/konqsidebartng.rc
+%{tde_bindir}/kbookmarkmerger
+%{tde_bindir}/keditbookmarks
+%{tde_bindir}/kfmclient
+%{tde_bindir}/konqueror
+%{tde_tdelibdir}/kcm_history.la
+%{tde_tdelibdir}/kcm_history.so
+%{tde_tdelibdir}/kded_konqy_preloader.la
+%{tde_tdelibdir}/kded_konqy_preloader.so
+%{tde_tdelibdir}/keditbookmarks.la
+%{tde_tdelibdir}/keditbookmarks.so
+%{tde_tdelibdir}/kfmclient.la
+%{tde_tdelibdir}/kfmclient.so
+%{tde_tdelibdir}/konq_aboutpage.la
+%{tde_tdelibdir}/konq_aboutpage.so
+%{tde_tdelibdir}/konq_iconview.la
+%{tde_tdelibdir}/konq_iconview.so
+%{tde_tdelibdir}/konq_listview.la
+%{tde_tdelibdir}/konq_listview.so
+%{tde_tdelibdir}/konq_remoteencoding.la
+%{tde_tdelibdir}/konq_remoteencoding.so
+%{tde_tdelibdir}/konq_shellcmdplugin.la
+%{tde_tdelibdir}/konq_shellcmdplugin.so
+%{tde_tdelibdir}/konq_sidebar.la
+%{tde_tdelibdir}/konq_sidebar.so
+%{tde_tdelibdir}/konq_sidebartree_bookmarks.la
+%{tde_tdelibdir}/konq_sidebartree_bookmarks.so
+%{tde_tdelibdir}/konq_sidebartree_dirtree.la
+%{tde_tdelibdir}/konq_sidebartree_dirtree.so
+%{tde_tdelibdir}/konq_sidebartree_history.la
+%{tde_tdelibdir}/konq_sidebartree_history.so
+%{tde_tdelibdir}/konqsidebar_tree.la
+%{tde_tdelibdir}/konqsidebar_tree.so
+%{tde_tdelibdir}/konqsidebar_web.la
+%{tde_tdelibdir}/konqsidebar_web.so
+%{tde_tdelibdir}/konqueror.la
+%{tde_tdelibdir}/konqueror.so
+%{tde_tdelibdir}/libkhtmlkttsdplugin.la
+%{tde_tdelibdir}/libkhtmlkttsdplugin.so
+%{tde_libdir}/lib[kt]deinit_keditbookmarks.la
+%{tde_libdir}/lib[kt]deinit_keditbookmarks.so
+%{tde_libdir}/lib[kt]deinit_kfmclient.la
+%{tde_libdir}/lib[kt]deinit_kfmclient.so
+%{tde_libdir}/lib[kt]deinit_konqueror.la
+%{tde_libdir}/lib[kt]deinit_konqueror.so
+%{tde_libdir}/libkonqsidebarplugin.so.*
+%{tde_tdeappdir}/Home.desktop
+%{tde_tdeappdir}/kcmhistory.desktop
+%{tde_tdeappdir}/kfmclient.desktop
+%{tde_tdeappdir}/kfmclient_dir.desktop
+%{tde_tdeappdir}/kfmclient_html.desktop
+%{tde_tdeappdir}/kfmclient_war.desktop
+%{tde_tdeappdir}/khtml_filter.desktop
+%{tde_tdeappdir}/konqbrowser.desktop
+%{tde_tdeappdir}/konquerorsu.desktop
+%{tde_datadir}/applnk/.hidden/konqfilemgr.desktop
+%{tde_datadir}/applnk/Internet/keditbookmarks.desktop
+%{tde_datadir}/applnk/konqueror.desktop
+%{tde_datadir}/apps/kconf_update/kfmclient_3_2.upd
+%{tde_datadir}/apps/kconf_update/kfmclient_3_2_update.sh
+%{tde_datadir}/apps/kconf_update/konqsidebartng.upd
+%{tde_datadir}/apps/kconf_update/move_konqsidebartng_entries.sh
+%{tde_datadir}/apps/keditbookmarks/keditbookmarks-genui.rc
+%{tde_datadir}/apps/keditbookmarks/keditbookmarksui.rc
+%{tde_datadir}/apps/khtml/kpartplugins/khtmlkttsd.desktop
+%{tde_datadir}/apps/khtml/kpartplugins/khtmlkttsd.rc
+%{tde_datadir}/apps/konqiconview/
+%{tde_datadir}/apps/konqlistview/
+%exclude %{tde_datadir}/apps/konqsidebartng/virtual_folders/services/fonts.desktop
+%{tde_datadir}/apps/konqsidebartng/
+%{tde_datadir}/apps/konqueror/about/
+%{tde_datadir}/apps/konqueror/icons/
+%{tde_datadir}/apps/konqueror/konq-simplebrowser.rc
+%{tde_datadir}/apps/konqueror/konqueror.rc
+%{tde_datadir}/apps/konqueror/pics/indicator_connect.png
+%{tde_datadir}/apps/konqueror/pics/indicator_empty.png
+%{tde_datadir}/apps/konqueror/pics/indicator_noconnect.png
+%{tde_datadir}/apps/konqueror/pics/indicator_viewactive.png
+%{tde_datadir}/apps/konqueror/profiles/
+%exclude %{tde_datadir}/apps/konqueror/servicemenus/kdesktopSetAsBackground.desktop
+%exclude %{tde_datadir}/apps/konqueror/servicemenus/konsolehere.desktop
+%exclude %{tde_datadir}/apps/konqueror/servicemenus/installfont.desktop
+%{tde_datadir}/apps/konqueror/servicemenus/*.desktop
+%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase
+%{tde_datadir}/apps/konqueror/tiles/*.png
+%{tde_datadir}/autostart/konqy_preload.desktop
+%{tde_datadir}/config.kcfg/keditbookmarks.kcfg
+%{tde_datadir}/config.kcfg/konq_listview.kcfg
+%{tde_datadir}/config.kcfg/konqueror.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/keditbookmarks.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kfm_home.svgz
+%{tde_datadir}/icons/hicolor/*/apps/kfm.png
+%{tde_datadir}/icons/hicolor/*/apps/konqueror.*
+%{tde_datadir}/services/kded/konqy_preloader.desktop
+%{tde_datadir}/services/konq_*.desktop
+%{tde_datadir}/servicetypes/konqaboutpage.desktop
+%{tde_tdedocdir}/HTML/en/konqueror/
+
+%post -n trinity-konqueror
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+%if 0%{?suse_version}
+update-alternatives --install \
+%else
+alternatives --install \
+%endif
+ %{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop \
+ media_safelyremove.desktop_konqueror \
+ %{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase \
+ 10 || :
+
+%postun -n trinity-konqueror
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%preun -n trinity-konqueror
+if [ $1 -eq 0 ]; then
+%if 0%{?suse_version}
+ update-alternatives --remove \
+%else
+ alternatives --remove \
+%endif
+ media_safelyremove.desktop_konqueror \
+ %{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase || :
+fi
+
+##########
+
+%package -n trinity-konqueror-devel
+Summary: Development files for konqueror
+Group: Development/Libraries
+Requires: trinity-konqueror = %{version}-%{release}
+
+%description -n trinity-konqueror-devel
+%{summary}
+
+%files -n trinity-konqueror-devel
+%{tde_tdeincludedir}/konqsidebarplugin.h
+%{tde_tdeincludedir}/KonquerorIface.h
+%{tde_libdir}/libkonqsidebarplugin.la
+%{tde_libdir}/libkonqsidebarplugin.so
+
+%post -n trinity-konqueror-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-konqueror-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-konqueror-nsplugins
+Summary: Netscape plugin support for Konqueror
+Group: Applications/Utilities
+Requires: trinity-konqueror = %{version}-%{release}
+
+%description -n trinity-konqueror-nsplugins
+This package includes support for Netscape plugins in Konqueror.
+
+%files -n trinity-konqueror-nsplugins
+%defattr(-,root,root,-)
+%{tde_bindir}/nspluginscan
+%{tde_bindir}/nspluginviewer
+%{tde_tdelibdir}/kcm_nsplugins.la
+%{tde_tdelibdir}/kcm_nsplugins.so
+%{tde_tdelibdir}/libnsplugin.la
+%{tde_tdelibdir}/libnsplugin.so
+%{tde_tdeappdir}/khtml_plugins.desktop
+%{tde_datadir}/apps/plugin/nspluginpart.rc
+
+%post -n trinity-konqueror-nsplugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-konqueror-nsplugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-konsole
+Summary: X terminal emulator for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-konsole
+Konsole is an X terminal emulation which provides a command-line interface
+(CLI) while using the graphical K Desktop Environment. Konsole helps to
+better organize user's desktop by containing multiple sessions in a single
+window (a less cluttered desktop).
+
+Its advanced features include a simple configuration and the ability to use
+multiple terminal shells in a single window
+
+Using Konsole, a user can open:
+* Linux console sessions
+* Midnight Commander file manager sessions
+* Shell sessions
+* Root consoles sessions
+
+%files -n trinity-konsole
+%defattr(-,root,root,-)
+%{tde_bindir}/konsole
+%{tde_tdelibdir}/kcm_konsole.la
+%{tde_tdelibdir}/kcm_konsole.so
+%{tde_tdelibdir}/kded_kwrited.la
+%{tde_tdelibdir}/kded_kwrited.so
+%{tde_tdelibdir}/konsole.la
+%{tde_tdelibdir}/konsole.so
+%{tde_tdelibdir}/libkonsolepart.la
+%{tde_tdelibdir}/libkonsolepart.so
+%{tde_libdir}/lib[kt]deinit_konsole.la
+%{tde_libdir}/lib[kt]deinit_konsole.so
+%{tde_tdeappdir}/konsole.desktop
+%{tde_tdeappdir}/konsolesu.desktop
+%{tde_datadir}/applnk/.hidden/kcmkonsole.desktop
+%{tde_datadir}/apps/kconf_update/konsole.upd
+%{tde_datadir}/apps/kconf_update/schemaStrip.pl
+%{tde_datadir}/apps/konqueror/servicemenus/konsolehere.desktop
+%{tde_datadir}/apps/konsole/
+%{tde_datadir}/icons/hicolor/*/apps/konsole.*
+%{tde_datadir}/mimelnk/application/x-konsole.desktop
+%{tde_datadir}/services/kded/kwrited.desktop
+%{tde_datadir}/services/konsolepart.desktop
+%{tde_datadir}/services/konsole-script.desktop
+%{tde_datadir}/services/kwrited.desktop
+%{tde_datadir}/servicetypes/terminalemulator.desktop
+%{tde_tdedocdir}/HTML/en/konsole/
+%{tde_tdedocdir}/HTML/en/kcontrol/kcmkonsole/
+
+%post -n trinity-konsole
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-konsole
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kpager
+Summary: desktop pager for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kpager
+This package contains TDE's desktop pager, which displays your virtual
+desktops iconically in a window, along with icons of any running
+applications. It is used to switch between applications or desktops.
+
+%files -n trinity-kpager
+%defattr(-,root,root,-)
+%{tde_bindir}/kpager
+%{tde_tdeappdir}/kpager.desktop
+%{tde_datadir}/applnk/Utilities/kpager.desktop
+%{tde_datadir}/icons/hicolor/*/apps/kpager.png
+%{tde_tdedocdir}/HTML/en/kpager/
+
+%post -n trinity-kpager
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kpager
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kpersonalizer
+Summary: installation personalizer for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kpersonalizer
+TDE Personalizer is the application that configures the TDE desktop for you.
+It's a very useful wizard that allows you to quickly change the TDE desktop to
+suit your own needs. When you run TDE for the first time, KPersonalizer is
+automatically started. KPersonalizer can also be called later.
+
+%files -n trinity-kpersonalizer
+%defattr(-,root,root,-)
+%{tde_bindir}/kpersonalizer
+%{tde_tdeappdir}/kpersonalizer.desktop
+%{tde_datadir}/applnk/System/kpersonalizer.desktop
+%{tde_datadir}/apps/kpersonalizer/
+%{tde_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
+
+%post -n trinity-kpersonalizer
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kpersonalizer
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-ksmserver
+Summary: session manager for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-twin = %{version}-%{release}
+
+%description -n trinity-ksmserver
+This package contains the KDE session manager. It is responsible for
+restoring your TDE session on login. It is also needed to properly
+start a KDE session. It registers KDE with X display managers, and
+provides the 'starttde' command, for starting an X session with KDE
+from the console.
+
+If you are running TDE for the first time for a certain user,
+kpersonalizer is used to help with setup. If it is not present,
+KDE will start, but many good defaults will not be set.
+
+%files -n trinity-ksmserver
+%defattr(-,root,root,-)
+%{tde_bindir}/ksmserver
+%{tde_bindir}/start[kt]de
+%{tde_tdelibdir}/ksmserver.la
+%{tde_tdelibdir}/ksmserver.so
+%{tde_libdir}/lib[kt]deinit_ksmserver.la
+%{tde_libdir}/lib[kt]deinit_ksmserver.so
+%{tde_datadir}/apps/kconf_update/ksmserver.upd
+%{tde_datadir}/apps/kconf_update/move_session_config.sh
+%{tde_datadir}/apps/ksmserver/pics/shutdownkonq.png
+
+# Remove conflicts with redhat-menus
+%if "%{?tde_prefix}" != "/usr"
+%{tde_bindir}/plasma-desktop
+%endif
+
+%post -n trinity-ksmserver
+/sbin/ldconfig || :
+
+%postun -n trinity-ksmserver
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksplash
+Summary: the TDE splash screen
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-ksplash
+This package includes the TDE Splash screen, which is seen when
+a TDE session is launched.
+
+%files -n trinity-ksplash
+%defattr(-,root,root,-)
+%{tde_bindir}/ksplash
+%{tde_bindir}/ksplashsimple
+%{tde_tdelibdir}/kcm_ksplashthemes.la
+%{tde_tdelibdir}/kcm_ksplashthemes.so
+%{tde_tdelibdir}/ksplashdefault.la
+%{tde_tdelibdir}/ksplashdefault.so
+%{tde_tdelibdir}/ksplashunified.la
+%{tde_tdelibdir}/ksplashunified.so
+%{tde_tdelibdir}/ksplashredmond.la
+%{tde_tdelibdir}/ksplashredmond.so
+%{tde_tdelibdir}/ksplashstandard.la
+%{tde_tdelibdir}/ksplashstandard.so
+%{tde_libdir}/libksplashthemes.so.*
+%{tde_tdeappdir}/ksplashthememgr.desktop
+%{tde_datadir}/apps/ksplash
+%{tde_datadir}/services/ksplashdefault.desktop
+%{tde_datadir}/services/ksplash.desktop
+%{tde_datadir}/services/ksplashunified.desktop
+%{tde_datadir}/services/ksplashredmond.desktop
+%{tde_datadir}/services/ksplashstandard.desktop
+%{tde_datadir}/servicetypes/ksplashplugins.desktop
+%{tde_tdedocdir}/HTML/en/ksplashml/
+
+%post -n trinity-ksplash
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+%postun -n trinity-ksplash
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksplash-devel
+Summary: Development files for ksplash
+Group: Development/Libraries
+Requires: trinity-ksplash = %{version}-%{release}
+
+%description -n trinity-ksplash-devel
+%{summary}
+
+%files -n trinity-ksplash-devel
+%{tde_tdeincludedir}/ksplash/*
+%{tde_libdir}/libksplashthemes.la
+%{tde_libdir}/libksplashthemes.so
+
+%post -n trinity-ksplash-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-ksplash-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksysguard
+Summary: system guard for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-ksysguardd = %{version}-%{release}
+
+%description -n trinity-ksysguard
+TDE System Guard allows you to monitor various statistics about your
+computer.
+
+%files -n trinity-ksysguard
+%defattr(-,root,root,-)
+%{tde_bindir}/kpm
+%{tde_bindir}/ksysguard
+%{tde_tdelibdir}/sysguard_panelapplet.la
+%{tde_tdelibdir}/sysguard_panelapplet.so
+%{tde_libdir}/libksgrd.so.*
+%{tde_tdeappdir}/ksysguard.desktop
+%{tde_datadir}/apps/kicker/applets/ksysguardapplet.desktop
+%{tde_datadir}/apps/ksysguard/
+%{tde_datadir}/icons/crystalsvg/*/apps/ksysguard.png
+%{tde_datadir}/mimelnk/application/x-ksysguard.desktop
+%{tde_tdedocdir}/HTML/en/ksysguard/
+
+%post -n trinity-ksysguard
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-ksysguard
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksysguard-devel
+Summary: Development files for ksysguard
+Group: Development/Libraries
+Requires: trinity-ksysguard = %{version}-%{release}
+
+%description -n trinity-ksysguard-devel
+%{summary}
+
+%files -n trinity-ksysguard-devel
+%{tde_tdeincludedir}/ksgrd/*
+%{tde_libdir}/libksgrd.la
+%{tde_libdir}/libksgrd.so
+
+%post -n trinity-ksysguard-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-ksysguard-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksysguardd
+Summary: system guard daemon for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-ksysguardd
+TDE System Guard Daemon is the daemon part of ksysguard. The daemon can
+be installed on a remote machine to enable ksysguard on another machine
+to monitor it through the daemon running there.
+
+%files -n trinity-ksysguardd
+%defattr(-,root,root,-)
+%{tde_bindir}/ksysguardd
+%config(noreplace) %{_sysconfdir}/ksysguarddrc.tde
+
+%post -n trinity-ksysguardd
+# Dirty hack to install '/etc/ksysguarddrc' alongside with KDE4
+[ -r "%{_sysconfdir}/ksysguarddrc" ] || cp -f "%{_sysconfdir}/ksysguarddrc.tde" "%{_sysconfdir}/ksysguarddrc"
+
+##########
+
+%package -n trinity-ktip
+Summary: useful tips for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-ktip
+ktip provides many useful tips on using KDE when you log in.
+
+%files -n trinity-ktip
+%defattr(-,root,root,-)
+%{tde_bindir}/ktip
+%{tde_tdeappdir}/ktip.desktop
+%{tde_datadir}/applnk/Toys/ktip.desktop
+%{tde_datadir}/apps/kdewizard/pics/wizard_small.png
+%{tde_datadir}/apps/kdewizard/tips/
+%{tde_datadir}/autostart/ktip.desktop
+%{tde_datadir}/icons/hicolor/*/apps/ktip.*
+
+%post -n trinity-ktip
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-ktip
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-twin
+Summary: the TDE window manager
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-twin
+This package contains the default X window manager for KDE.
+
+%files -n trinity-twin
+%defattr(-,root,root,-)
+%{tde_bindir}/kompmgr
+%{tde_bindir}/[kt]win
+%{tde_bindir}/[kt]win_killer_helper
+#%{tde_bindir}/[kt]win_resumer_helper
+%{tde_bindir}/[kt]win_rules_dialog
+%{tde_libdir}/kconf_update_bin/[kt]win_update_default_rules
+%{tde_libdir}/kconf_update_bin/[kt]win_update_window_settings
+%{tde_tdelibdir}/kcm_[kt]win*.la
+%{tde_tdelibdir}/kcm_[kt]win*.so
+%{tde_tdelibdir}/[kt]win*.la
+%{tde_tdelibdir}/[kt]win*.so
+%{tde_libdir}/lib[kt]decorations.so.*
+%{tde_libdir}/lib[kt]deinit_[kt]win_rules_dialog.la
+%{tde_libdir}/lib[kt]deinit_[kt]win_rules_dialog.so
+%{tde_libdir}/lib[kt]deinit_[kt]win.la
+%{tde_libdir}/lib[kt]deinit_[kt]win.so
+%{tde_tdeappdir}/showdesktop.desktop
+%{tde_tdeappdir}/[kt]windecoration.desktop
+%{tde_tdeappdir}/[kt]winoptions.desktop
+%{tde_tdeappdir}/[kt]winrules.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winactions.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winadvanced.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winfocus.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winmoving.desktop
+%{tde_datadir}/applnk/.hidden/[kt]wintranslucency.desktop
+%{tde_datadir}/apps/kconf_update/[kt]win3_plugin.pl
+%{tde_datadir}/apps/kconf_update/[kt]win3_plugin.upd
+%{tde_datadir}/apps/kconf_update/[kt]win_focus1.sh
+%{tde_datadir}/apps/kconf_update/[kt]win_focus1.upd
+%{tde_datadir}/apps/kconf_update/[kt]win_focus2.sh
+%{tde_datadir}/apps/kconf_update/[kt]win_focus2.upd
+%{tde_datadir}/apps/kconf_update/[kt]win_fsp_workarounds_1.upd
+%{tde_datadir}/apps/kconf_update/[kt]winiconify.upd
+%{tde_datadir}/apps/kconf_update/[kt]winsticky.upd
+%{tde_datadir}/apps/kconf_update/[kt]win.upd
+%{tde_datadir}/apps/kconf_update/[kt]winupdatewindowsettings.upd
+%{tde_datadir}/apps/kconf_update/pluginlibFix.pl
+%{tde_datadir}/apps/[kt]win/
+%{tde_datadir}/config.kcfg/[kt]win.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/[kt]win.png
+%{tde_tdedocdir}/HTML/en/kompmgr/
+
+%post -n trinity-twin
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-twin
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-twin-devel
+Summary: Development files for twin
+Group: Development/Libraries
+Requires: trinity-twin = %{version}-%{release}
+
+%description -n trinity-twin-devel
+%{summary}
+
+%files -n trinity-twin-devel
+%{tde_tdeincludedir}/[kt]win/
+%{tde_tdeincludedir}/kcommondecoration.h
+%{tde_tdeincludedir}/kdecoration.h
+%{tde_tdeincludedir}/kdecoration_p.h
+%{tde_tdeincludedir}/kdecoration_plugins_p.h
+%{tde_tdeincludedir}/kdecorationfactory.h
+%{tde_tdeincludedir}/KWinInterface.h
+%{tde_libdir}/libkdecorations.la
+%{tde_libdir}/libkdecorations.so
+
+%post -n trinity-twin-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-twin-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libkonq
+Summary: core libraries for Konqueror
+Group: Environment/Libraries
+
+%description -n trinity-libkonq
+These libraries are used by several TDE applications, most notably
+Konqueror and the kdesktop package.
+
+%files -n trinity-libkonq
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/kded_favicons.la
+%{tde_tdelibdir}/kded_favicons.so
+%{tde_tdelibdir}/konq_sound.la
+%{tde_tdelibdir}/konq_sound.so
+%{tde_libdir}/libkonq.so.*
+%{tde_datadir}/apps/kbookmark/directory_bookmarkbar.desktop
+%{tde_datadir}/apps/kconf_update/favicons.upd
+%{tde_datadir}/apps/kconf_update/move_favicons.sh
+%{tde_datadir}/apps/konqueror/pics/arrow_bottomleft.png
+%{tde_datadir}/apps/konqueror/pics/arrow_bottomright.png
+%{tde_datadir}/apps/konqueror/pics/arrow_topleft.png
+%{tde_datadir}/apps/konqueror/pics/arrow_topright.png
+%{tde_datadir}/apps/konqueror/pics/thumbnailfont_7x4.png
+%{tde_datadir}/services/kded/favicons.desktop
+%{tde_datadir}/servicetypes/konqpopupmenuplugin.desktop
+
+%post -n trinity-libkonq
+/sbin/ldconfig || :
+
+%postun -n trinity-libkonq
+/sbin/ldconfig || :
+
+##########
+
+%package libtqt3-integration
+Summary: Integration library between TQt3 and TDE
+Group: Environment/Libraries
+
+Obsoletes: tdebase-libtqt3-integration < %{version}-%{release}
+Provides: tdebase-libtqt3-integration = %{version}-%{release}
+
+%description libtqt3-integration
+These libraries allow you to use TDE dialogs in native TQt3 applications.
+
+%files libtqt3-integration
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/plugins/integration/libqtkde.la
+%{tde_tdelibdir}/plugins/integration/libqtkde.so
+%{tde_tdelibdir}/plugins/integration/libqtkde.so.*
+%{tde_tdelibdir}/kded_kdeintegration.la
+%{tde_tdelibdir}/kded_kdeintegration.so
+%{tde_datadir}/services/kded/kdeintegration.desktop
+
+##########
+
+%package -n trinity-libkonq-devel
+Summary: development files for Konqueror's core libraries
+Group: Development/Libraries
+Requires: trinity-libkonq = %{version}-%{release}
+
+%description -n trinity-libkonq-devel
+This package contains headers and other development files for the core
+Konqueror libraries.
+
+%files -n trinity-libkonq-devel
+%defattr(-,root,root,-)
+%{tde_tdeincludedir}/kfileivi.h
+%{tde_tdeincludedir}/kivdirectoryoverlay.h
+%{tde_tdeincludedir}/knewmenu.h
+%{tde_tdeincludedir}/konqbookmarkmanager.h
+%{tde_tdeincludedir}/konq_*.h
+%{tde_tdeincludedir}/libkonq_export.h
+%{tde_libdir}/libkonq.la
+%{tde_libdir}/libkonq.so
+
+%post -n trinity-libkonq-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-libkonq-devel
+/sbin/ldconfig || :
+
+##########
+
+%if 0%{?suse_version} || 0%{?pclinuxos}
+%debug_package
+%endif
+
+##########
+
+%prep
+%setup -q -n kdebase-3.5.13.1
+
+%patch1 -p1 -b .icon
+%patch11 -p1 -b .openterminalhere
+%if 0%{?rhel} || 0%{?fedora}
+%patch13 -p1 -b .Xsession
+%endif
+%if 0%{?suse_version}
+%patch14 -p1 -b .Xsession
+%endif
+%patch15 -p1 -b .tdeicon
+%if 0%{?rhel} || 0%{?mgaversion} || 0%{?mdkversion}
+%patch21 -p1 -b .man
+%endif
+%patch30 -p1 -b .xtestsupport
+%patch31 -p1 -b .startkde
+%patch32 -p1 -b .pid
+
+%if 0%{?rhel} == 4
+%patch201 -p1 -b .libdetect
+%patch202 -p1 -b .dbustqt
+%patch203 -p1 -b .consolekit
+%patch204 -p1 -b .composite
+%patch205 -p1 -b .hal04
+%patch206 -p1 -b .rhel4
+%endif
+
+# Applies an optional distro-specific graphical theme
+%if "%{?tde_bg}" != ""
+# KDM Background
+%__sed -i "kdm/kfrontend/genkdmconf.c" \
+ -e 's|"Wallpaper=isadora.png\n"|"Wallpaper=%{tde_bg}\n"|'
+
+# TDE user default background
+%__sed -i "kpersonalizer/keyecandypage.cpp" \
+ -e 's|#define DEFAULT_WALLPAPER "isadora.png"|#define DEFAULT_WALLPAPER "%{tde_bg}"|'
+%__sed -i "startkde" \
+ -e 's|/usr/share/wallpapers/isadora.png.desktop|%{tde_bg}|' \
+ -e 's|Wallpaper=isadora.png|Wallpaper=%{tde_bg}|'
+%endif
+
+# TDE branding: removes KUbuntu references [Bug #617]
+%__sed -i "kcontrol/kdm/kdm-appear.cpp" \
+ -e "s|Welcome to Kubuntu |Welcome to %{tde_aboutlabel} |"
+%__sed -i "konqueror/about/konq_aboutpage.cc" \
+ -e "s|About Kubuntu|About %{tde_aboutlabel}|" \
+ -e "s|help:/kubuntu/|%{tde_aboutpage}|" \
+ -e "s|Kubuntu Documentation|%{tde_aboutlabel} Documentation|"
+%__sed -i "konqueror/about/launch.html" \
+ -e "s|help:/kubuntu/about-kubuntu/index.html|%{tde_aboutpage}|"
+%__sed -i "kdm/config.def" \
+ -e "s|Welcome to Trinity |Welcome to %{tde_aboutlabel} |"
+
+# TDE default directory in 'startkde' script (KDEDIR)
+%__sed -i "startkde" \
+ -e "s|/opt/trinity|%{tde_prefix}|g"
+
+# TDE default start button icon
+%__sed -i "startkde" \
+ -e "s|%%{tde_starticon}|%{tde_starticon}|g"
+
+
+%build
+unset QTDIR || : ; . /etc/profile.d/qt3.sh
+export PATH="%{tde_bindir}:${PATH}"
+export PKG_CONFIG_PATH="%{tde_libdir}/pkgconfig"
+export CMAKE_INCLUDE_PATH="%{tde_includedir}:%{tde_includedir}/tqt"
+export LD_LIBRARY_PATH="%{tde_libdir}"
+
+# Avoids building against KDE3's old stuff, if installed
+export KDEDIR=%{tde_prefix}
+
+# Shitty hack for RHEL4 ...
+if [ -d /usr/X11R6 ]; then
+ export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH=}:/usr/X11R6/include:/usr/X11R6/%{_lib}"
+ export CFLAGS="${CFLAGS} -I/usr/X11R6/include -L/usr/X11R6/%{_lib}"
+ export CXXFLAGS="${CXXFLAGS} -I/usr/X11R6/include -L/usr/X11R6/%{_lib}"
+fi
+
+%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
+%__mkdir_p build
+cd build
+%endif
+
+%cmake \
+ -DBIN_INSTALL_DIR=%{tde_bindir} \
+ -DINCLUDE_INSTALL_DIR=%{tde_tdeincludedir} \
+ -DLIB_INSTALL_DIR=%{tde_libdir} \
+ -DSHARE_INSTALL_PREFIX=%{tde_datadir} \
+ -DCMAKE_SKIP_RPATH="OFF" \
+ -DWITH_SASL=ON \
+ -DWITH_LDAP=ON \
+ -DWITH_SAMBA=ON \
+ %{?with_exr:-DWITH_OPENEXR=ON} \
+ %{?with_hal:-DWITH_HAL=ON} \
+ %{?with_xscreensaver:-DWITH_XSCREENSAVER=ON} \
+%if 0%{?rhel} == 4
+ -DWITH_XTEST=OFF \
+%else
+ -DWITH_XTEST=ON \
+%endif
+ -DWITH_XCURSOR=ON \
+ -DWITH_XFIXES=ON \
+ %{?with_xrandr:-DWITH_XRANDR=ON} \
+ -DWITH_XDAMAGE=ON \
+ -DWITH_XEXT=ON \
+ -DWITH_LIBUSB=ON \
+ -DWITH_LIBRAW1394=ON \
+ -DWITH_PAM=ON \
+ -DWITH_XDMCP=ON \
+ -DWITH_XINERAMA=ON \
+ -DWITH_XCOMPOSITE=ON \
+ -DWITH_XRENDER=ON \
+ -DWITH_ARTS=ON \
+ -DWITH_I8K=ON \
+ -DBUILD_ALL=ON \
+ -DKCHECKPASS_PAM_SERVICE="kcheckpass-trinity" \
+%if 0%{?suse_version}
+ -DKDM_PAM_SERVICE="xdm" \
+ -DKSCREENSAVER_PAM_SERVICE="kcheckpass-trinity" \
+%else
+ -DKDM_PAM_SERVICE="kdm-trinity" \
+ -DKSCREENSAVER_PAM_SERVICE="kscreensaver-trinity" \
+%endif
+ %{!?with_tsak:-DBUILD_TSAK=OFF} \
+ ..
+
+%__make %{?_smp_mflags}
+
+
+%install
+%__rm -rf %{?buildroot}
+%__make install DESTDIR=%{?buildroot} -C build
+
+
+# Under RHEL/Fedora/Suse, static 'xsessions' files go to '/usr/share/xsessions'.
+
+# Adds a GDM/KDM/XDM session called 'TDE'
+%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
+%__install -D -m 644 \
+ "%{?buildroot}%{tde_datadir}/apps/kdm/sessions/tde.desktop" \
+ "%{?buildroot}%{_datadir}/xsessions/tde.desktop"
+
+# Force session name to be 'TDE'
+%__sed -i "%{?buildroot}%{_datadir}/xsessions/tde.desktop" \
+ -e "s,^Name=.*,Name=TDE,"
+%endif
+
+# Mageia/Mandriva stores its session file in different folder than RHEL/Fedora
+# Generated files for TDM/KDM4 are in '/usr/share/apps/kdm/sessions'
+%if 0%{?mgaversion} || 0%{?mdkversion}
+%__install -d -m 755 %{?buildroot}%{_sysconfdir}/X11/wmsession.d
+cat <<EOF >"%{?buildroot}%{_sysconfdir}/X11/wmsession.d/45TDE"
+NAME=TDE
+ICON=kde-wmsession.xpm
+DESC=The Trinity Desktop Environment
+EXEC=%{tde_bindir}/startkde
+SCRIPT:
+exec %{tde_bindir}/startkde
+EOF
+
+%__install -d -m 755 %{?buildroot}%{_datadir}/X11/dm.d
+cat <<EOF >"%{?buildroot}%{_datadir}/X11/dm.d/45TDE.conf"
+NAME=TDM
+DESCRIPTION=TDM (Trinity Display Manager)
+PACKAGE=trinity-tdm
+EXEC=%{tde_bindir}/kdm
+FNDSESSION_EXEC="/usr/sbin/chksession -K"
+EOF
+%endif
+
+# Renames '/etc/ksysguarddrc' to avoid conflict with KDE4 'ksysguard'
+%__mv -f \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc.tde
+
+# TDE 3.5.12: add script "plasma-desktop" to avoid conflict with KDE4
+%if "%{?tde_prefix}" != "/usr"
+%__install -m 755 "%{SOURCE1}" "%{?buildroot}%{tde_bindir}"
+%endif
+
+# PAM configuration files
+%if 0%{?suse_version}
+%__install -D -m 644 "%{SOURCE4}" "%{?buildroot}%{_sysconfdir}/pam.d/kcheckpass-trinity"
+%else
+%__install -D -m 644 "%{SOURCE2}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity"
+%__install -D -m 644 "%{SOURCE3}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity-np"
+%__install -D -m 644 "%{SOURCE4}" "%{?buildroot}%{_sysconfdir}/pam.d/kcheckpass-trinity"
+%__install -D -m 644 "%{SOURCE5}" "%{?buildroot}%{_sysconfdir}/pam.d/kscreensaver-trinity"
+%endif
+
+# KDM configuration for RHEL/Fedora
+%__sed -i "%{?buildroot}%{tde_datadir}/config/kdm/kdmrc" \
+%if 0%{?fedora} >= 16 || 0%{?suse_version} >= 1220
+ -e "s/^#*MinShowUID=.*/MinShowUID=1000/"
+%else
+ -e "s/^#*MinShowUID=.*/MinShowUID=500/"
+%endif
+
+# Moves the XDG configuration files to TDE directory
+%if "%{tde_prefix}" != "/usr"
+%__mkdir_p "%{?buildroot}%{tde_prefix}/etc"
+%__mv -f "%{?buildroot}%{_sysconfdir}/xdg" "%{?buildroot}%{tde_prefix}/etc"
+%endif
+
+# Symlinks 'usb.ids'
+%if 0%{?suse_version} == 0
+%__rm -f "%{?buildroot}%{tde_datadir}/apps/usb.ids"
+%__ln_s -f "/usr/share/hwdata/usb.ids" "%{?buildroot}%{tde_datadir}/apps/usb.ids"
+%endif
+
+# Makes 'media_safelyremove.desktop' an alternative
+%__mv -f %{buildroot}%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop %{buildroot}%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase
+%__ln_s /etc/alternatives/media_safelyremove.desktop_tdebase %{buildroot}%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop
+
+# SUSE: creates DM config file, used by '/etc/init.d/xdm'
+# You must set 'DISPLAYMANAGER=tdm' in '/etc/sysconfig/displaymanager'
+%if 0%{?suse_version}
+%__install -D -m 644 "%{SOURCE6}" "%{?buildroot}/usr/lib/X11/displaymanagers/tdm"
+%__sed -i "%{?buildroot}/usr/lib/X11/displaymanagers/tdm" -e "s|/opt/trinity/bin|%{tde_bindir}|g"
+%endif
+
+%clean
+%__rm -rf %{?buildroot}
+
+
+
+
+%changelog
+* Thu Nov 29 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13.1-2
+- openSUSE: fix TDM detection by XDM scripts
+
+* Mon Sep 24 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13.1-1
+- Initial build for TDE 3.5.13.1
diff --git a/redhat/tdebase/trinity-kdebase-3.5.13.spec b/redhat/tdebase/trinity-kdebase-3.5.13.spec
new file mode 100644
index 000000000..13cfdd037
--- /dev/null
+++ b/redhat/tdebase/trinity-kdebase-3.5.13.spec
@@ -0,0 +1,3467 @@
+# If TDE is built in a specific prefix (e.g. /opt/trinity), the release will be suffixed with ".opt".
+%if "%{?tde_prefix}" != "/usr"
+%define _variant .opt
+%endif
+
+# TDE 3.5.13 specific building variables
+%define tde_bindir %{tde_prefix}/bin
+%define tde_datadir %{tde_prefix}/share
+%define tde_docdir %{tde_datadir}/doc
+%define tde_includedir %{tde_prefix}/include
+%define tde_libdir %{tde_prefix}/%{_lib}
+
+%define tde_tdeappdir %{tde_datadir}/applications/kde
+%define tde_tdedocdir %{tde_docdir}/kde
+%define tde_tdeincludedir %{tde_includedir}/kde
+%define tde_tdelibdir %{tde_libdir}/trinity
+
+# Older RHEL/Fedora versions use packages named "qt", "qt-devel", ..
+# whereas newer versions use "qt3", "qt3-devel" ...
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 8 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?suse_version}
+%define _qt_suffix 3
+%endif
+
+
+Name: trinity-tdebase
+Version: 3.5.13
+Release: 27%{?release}%{?dist}%{?_variant}
+License: GPL
+Summary: Trinity Base Programs
+Group: User Interface/Desktops
+
+Obsoletes: trinity-kdebase < %{version}-%{release}
+Provides: trinity-kdebase = %{version}-%{release}
+Obsoletes: trinity-kdebase-libs < %{version}-%{release}
+Obsoletes: trinity-kdebase-extras < %{version}-%{release}
+Provides: trinity-kdebase-extras = %{version}-%{release}
+Obsoletes: tdebase < %{version}-%{release}
+Provides: tdebase = %{version}-%{release}
+
+
+Vendor: Trinity Project
+Packager: Francois Andriot <francois.andriot@free.fr>
+URL: http://www.trinitydesktop.org/
+
+Prefix: %{tde_prefix}
+BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+
+Source0: kdebase-%{version}.tar.gz
+
+# Wrapper script to prevent Plasma launch at Trinity Startup
+Source1: plasma-desktop
+
+# Pam configuration files for RHEL / Fedora
+%if 0%{?suse_version}
+Source4: pamd.kcheckpass-trinity.opensuse%{?suse_version}
+%else
+Source2: pamd.kdm-trinity%{?dist}
+Source3: pamd.kdm-trinity-np%{?dist}
+Source4: pamd.kcheckpass-trinity%{?dist}
+Source5: pamd.kscreensaver-trinity%{?dist}
+%endif
+
+# [kdebase] Fix corrupted PNG images [Bug #298]
+Source6: tiles-fixed-png-images.tar.gz
+
+# TDE 3.5.13 patches
+## [kdebase] Missing LDFLAGS cause FTBFS
+Patch2: tdebase-3.5.13.1-missing_ldflags.patch
+## [kdebase/kdm] adds gcrypt support [Bug #624]
+Patch7: kdebase-3.5.13-kdm-crypt.patch
+## [kdebase/kioslave/media/mediamanager] FTBFS missing dbus-tqt includes [RHEL/Fedora]
+Patch8: kdebase-3.5.13-mediamanager_ftbfs.patch
+## [kdebase/startkde] Hardcoded path '/usr/lib/xxx' in startkde, not suitable for x86_64 [RHEL/Fedora]
+Patch9: kdebase-3.5.13-startkde_ldpreload.patch
+## [kdebase/kdesu] Remove 'ignore' button on 'kdesu' dialog box [RHEL/Fedora]
+Patch10: kdebase-3.5.13-kdesu-noignorebutton.patch
+## [kdebase/kdesktop] Modifies 'open terminal here' on desktop [RHEL/Fedora]
+Patch11: kdebase-3.5.12-desktop-openterminalhere.patch
+## [kdebase/kioslave] Forces HAL backend to use HAL mount options [Bug #986]
+Patch12: kdebase-3.5.12-halmountoptions.patch
+## [kdebase/kdm/kfrontend] Global Xsession file is '/etc/X11/xinit/Xsession' [RHEL/Fedora]
+Patch13: kdebase-3.5.13-genkdmconf_Xsession_location.patch
+## [kdebase/kicker/kicker/ui] Fix kickoff menu issues [Bug #508]
+Patch14: kdebase-3.5.13-kickoff_unstable.patch
+## [kdebase/startkde] Sets default Start Icon in 'kickerrc' [RHEL/Fedora]
+Patch15: kdebase-3.5.13-startkde_icon.patch
+## [kdebase/startkde] Fixes duplicate and incorrect TDE directories location [Bug #741]
+Patch16: kdebase-3.5.13-startkde_directories.patch
+## [kdebase/kate] Restores the 'number of files' and sorting widgets to the Kate configuration [Bug #244]
+Patch20: kdebase-3.5.13-kate_mru.patch
+## [kdebase/kioslave/man] Fix kio_man for older distros without 'man-db' [Bug #714]
+Patch21: kdebase-3.5.13-kio_man_utf8.patch
+## [kdebase/konqueror] Re-enable 'open tab in background' [Bug #245]
+Patch22: kdebase-3.5.13-konq_menu_tab_background.patch
+## [kdebase/konqueror/sidebar] Fix error message on documents parent folder [Bug #723]
+Patch23: kdebase-3.5.13-konqsidebar_documents.patch
+## [kdebase/konqueror/listview] Konqueror Icon Activation Effect [Bug #335]
+Patch24: kdebase-3.5.13-konq_icon_effect.patch
+## [kdebase/kdesu] Restores the "Keep password" check box to the kdesu dialog box [Bug #388]
+Patch25: kdebase-3.5.13-kdesu_showkeeppassword.patch
+## [kdebase/kpersonalizer] Repair KPersonalizer settings to match system defaults [Bug #759]
+Patch26: kdebase-3.5.13-kpersonalizer_default_doubleclick.patch
+## [kdebase/kicker] Restores the original KDE3 clock [Bug #387]
+Patch27: kdebase-3.5.13-restore_kde3_clock.patch
+## [kdebase/kcontrol/randr] Implement X11 event merging in krandrtray [Bug #758]
+Patch28: kdebase-3.5.13-randrtray_merge_x11_reconfig_requests.patch
+## [kdebase/kdesktop/lock] Fix multihead screen locking [Bug #669]
+Patch29: kdebase-3.5.13-fix_multihead_desktop_lock.patch
+## [kdebase/kdm/kfrontend] Allows to hide KDM menu button [RHEL/Fedora]
+Patch30: kdebase-3.5.12-kdm_hide_menu_button.patch
+## [kdebase/kxkb] Enables xtest support
+Patch31: kdebase-3.5.13-enable_xtest_support.patch
+## [kdebase/kdm/kfrontend] fix KDM high CPU usage when inactive [Bug #690]
+Patch32: kdebase-3.5.13-fix_kdm_cpu_usage.patch
+## [kdebase/tsak] Add keyboard hotplug (add/remove) support to tsak [Bug #587]
+Patch33: kdebase-3.5.13-tsak_keyboard_hotplug.patch
+## [kdebase/tsak] Replicate LED status from virtual keyboards to physical keyboards [Bug #561]
+Patch34: kdebase-3.5.13-replicate_led_status_on_virtual_keyboard.patch
+## [kdebase/kwin] do not show hostname in titlebar if it's FQDN of localhost [Bug #889]
+Patch35: kdebase-3.5.13-fix_fqdn_in_title.patch
+## [kdebase/kicker/applets] Adds option to disable desktop switch on mouse wheel cycling [Bug #908]
+Patch36: kdebase-3.5.13-option_to_disable_scroll_desktop.patch
+## [kdebase] Fix Keramik window decoration in KWIN [Bug #905]
+Patch37: kdebase-3.5.13-kwin-keramic-pics-emb.patch
+## [kdebase/kdesktop] Fix device icon placement on desktop [Bug #392]
+Patch38: kdebase-3.5.13-fix_device_icon_placement.patch
+## [kdebase/kdesktop/lock] Fix security hole in kdesktop_lock
+Patch39: kdebase-3.5.13-fix_kdesktop_lock_security_issue.patch
+## [kdebase/kdesktop/lock] Allow minimal managed window interaction inside the lock process [Bug #810]
+Patch40: kdebase-3.5.13-allow_minimal_window_interaction_inside_lock_process.patch
+## [kdebase/kwin] Corrects a potential ABI compat problem
+Patch41: kdebase-3.5.13-fix_potential_ABI_compat_problem.patch
+## [kdebase] Fix kdebase translations in desktop files - part 2 [Bug #890]
+Patch42: kdebase-3.5.13-fix_translations_in_desktop_files.patch
+## [kdebase/kate] Kate: fix focus broken when using the --use parameter [Bug #692]
+Patch43: kdebase-3.5.13-kate_focus_fix.patch
+## [kdebase/kicker] Ensures that 'pagersettings.kcfg' is installed [Bug #908, Commit bd9c1479]
+Patch44: kdebase-3.5.13-ensure_pagersettings_is_installed.patch
+## [kdebase] Fix "Malformed URL $( kxdglauncher --getpath xdgname DOCUMENTS )" error dialog.
+Patch45: kdebase-3.5.13-fix_kxdglauncher_document.patch
+## [kdebase/kioslave] Fix sftp failure on newer systems [Bug #897]
+Patch46: kdebase-3.5.13-fix_kio_sftp.patch
+## [kdebase/kicker] Fix compilation with GCC 4.7 [Bug #958]
+Patch47: kdebase-3.5.13-kicker-easyvector.patch
+## [kdebase/kioslave] Fix sftp when nonstandard port is specified in ssh config [Bug #897]
+Patch48: kdebase-3.5.13-fix_kio_sftp_nonstandard_ports.patch
+## [kdebase/kdm] Start minimal dcop system to support twin in tdm [Commit #66a19439]
+Patch49: kdebase-3.5.13-start_dcop_in_tdm.patch
+## [kdebase/kdesktop/lock] Update lock process to engage the lock in near real time [Commit #8d521d0b]
+Patch50: kdebase-3.5.13-engage_lock_in_near_real_time.patch
+## [kdebase/kdesktop/lock] Commit the rest of 8d521d0b, not merged due to GIT glitch [Commit #49526413]
+Patch51: kdebase-3.5.13-engage_lock_in_near_real_time_continued.patch
+## [kdebase/kdesktop/lock] Fix desktop lock failure due to race condition within signal handler between qt and xcb [Commit #67a3a8f3]
+Patch52: kdebase-3.5.13-fix_lock_failure.patch
+## [kdebase/kioslave] Temporary fix for a probable race condition on some systems. [Bug #760] [Commit #d41f5217]
+Patch53: kdebase-3.5.13-fix_race_condition.patch
+## [kdebase] Adds USB default mount options in control panel [Bug #986]
+Patch54: kdebase-3.5.13-add_usbstorage_panel.patch
+## [tdebase] Add the ability to reorder documents in kate [Commit #46a657f7]
+Patch55: kdebase-3.5.13-add_reorder_documents_in_kate.patch
+## [tdebase] Add drag and drop to kate file list in manual mode [Commit #b0fa10df]
+Patch56: kdebase-3.5.13-add_drag_drop_to_kate_file_list.patch
+## [tdebase] Disable keyboard shortcuts for file location moving, as they did not work properly
+## and have very little practical use [Commit #9a948c1a]
+Patch57: kdebase-3.5.13-disable_keyboard_shortcuts_for_file_location_moving.patch
+## [tdebase] Fix KHTML smooth scrolling control center option [Bug #1001] [Commit #b45b4bd7]
+Patch58: kdebase-3.5.13-fix_khtml_smooth_scrolling.patch
+## [tdebase] Fix fancy logout not allowing interaction with save dialogs [Bug #922]
+## Fix desktop wallpaper export failing when triggered by krootbacking or ksmserver and konsole or kdesktop_lock not previously loaded [Commit #d2f8fca9]
+Patch59: kdebase-3.5.13-fix_fancy_logout.patch
+## [tdebase] Update default konqueror maximum image preview size to 10MB. [Commit #03e19305]
+Patch60: kdebase-3.5.13-update_default_konq_max_image_prev_size.patch
+## [tdebase] Fix menu crash with disabled search field [Bug #1081] [Commit #0afb2d8a]
+Patch61: kdebase-3.5.13-fix_menu_crash_with_disabled_search.patch
+## [tdebase] Add xscreensaver support to CMake [Bug #659] [Commit #80deb529]
+Patch62: kdebase-3.5.13-add_xscreensaver_support.patch
+## [tdebase] Forcibly prevent transient override redirect windows from showing up over the lock screen [Bug #1079] [Commit #553923b2]
+Patch63: kdebase-3.5.13-prevent_tooltip_over_lockscreen.patch
+## [tdebase] Fix tsak FTBFS on RHEL6
+Patch64: kdebase-3.5.13-fix_tsak_ftbfs.patch
+## [tdebase] Do not require DBUS-TQT if TSAK is not built
+Patch65: kdebase-3.5.13-do_not_require_dbustqt_if_no_tsak.patch
+## [kdebase/kdm/kfrontend] Global Xsession file is '/etc/X11/xdm/Xsession' [RHEL4/Suse]
+Patch66: kdebase-3.5.13-genkdmconf_Xsession_location_xdm.patch
+## [kdebase/kdm/backend] Fix DBUS include directory
+Patch67: kdebase-3.5.13-fix_dbus_include.patch
+
+## [tdebase] Upgrade to v3.5.13-sru branch
+Patch100: kdebase-3.5.13-upgrade_to_sru_20120806.patch.gz
+## [tdebase] Fix for SAK dialog are displayed even if TSAK is not built.
+Patch101: kdebase-3.5.13-disable_tsak_dialog_if_not_built.patch
+
+### Patches for RHEL4 (should not go upstream)
+
+## [tdebase] Fix build on RHEL4, detect old libraries without pkg file
+Patch201: kdebase-3.5.13-fix_lib_detection.patch
+## [tdebase] Do not build against DBUS-TQT, only DBUS and DBUS-QT
+Patch202: kdebase-3.5.13-build_without_dbustqt.patch
+## [tdebase] Do not build against ConsoleKit
+Patch203: kdebase-3.5.13-build_without_consolekit.patch
+## [tdebase] Add WITH_COMPOSITE option to CMakeLists.txt
+Patch204: kdebase-3.5.13-add_disable_composite_option.patch
+## [tdebase] Downgrade halbackend to support Hal 0.4
+Patch205: kdebase-3.5.13-support_hal_04.patch
+## [tdebase] Other(s) FTBFS ...
+Patch206: kdebase-3.5.13-fix_rhel4_compilation.patch
+
+### FEDORA / RHEL distribution-specific settings ###
+
+# Fedora 15 Theme: "Lovelock"
+%if 0%{?fedora} == 15
+Requires: lovelock-backgrounds-single
+%define tde_bg /usr/share/backgrounds/lovelock/default/standard/lovelock.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 15
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# Fedora 16 Theme: "Verne"
+%if 0%{?fedora} == 16
+Requires: verne-backgrounds-single
+%define tde_bg /usr/share/backgrounds/verne/default/standard/verne.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 16
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# Fedora 17 Theme: "Beefy Miracle"
+%if 0%{?fedora} == 17
+Requires: beefy-miracle-backgrounds-single
+%define tde_bg /usr/share/backgrounds/beefy-miracle/default/standard/beefy-miracle.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/fedora-logo-icon.png
+
+Requires: fedora-release-notes
+%define tde_aboutlabel Fedora 17
+%define tde_aboutpage /usr/share/doc/HTML/fedora-release-notes/index.html
+%endif
+
+# RHEL 4 Theme
+%if 0%{?rhel} == 4
+Requires: desktop-backgrounds-basic
+%define tde_bg /usr/share/backgrounds/images/default.png
+Requires: redhat-logos
+%define tde_starticon /usr/share/pixmaps/redhat/rpmlogo-64.xpm
+
+Requires: indexhtml
+%define tde_aboutlabel Enterprise Linux 4
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# RHEL 5 Theme
+%if 0%{?rhel} == 5
+Requires: desktop-backgrounds-basic
+%define tde_bg /usr/share/backgrounds/images/default.jpg
+%define tde_starticon /usr/share/pixmaps/redhat-starthere.png
+
+Requires: indexhtml
+%define tde_aboutlabel Enterprise Linux 5
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# RHEL 6 Theme
+%if 0%{?rhel} == 6
+Requires: redhat-logos
+%define tde_bg /usr/share/backgrounds/default.png
+%define tde_starticon /usr/share/icons/hicolor/96x96/apps/system-logo-icon.png
+
+Requires: redhat-indexhtml
+%define tde_aboutlabel Enterprise Linux 6
+%define tde_aboutpage /usr/share/doc/HTML/index.html
+%endif
+
+# Mageia 2 Theme
+%if 0%{?mgaversion} == 2
+Requires: mageia-theme-Default
+%define tde_bg /usr/share/mga/backgrounds/default.jpg
+%define tde_starticon /usr/share/icons/hicolor/scalable/apps/mageia-menu.svg
+
+Requires: indexhtml
+%define tde_aboutlabel Mageia 2
+%define tde_aboutpage /usr/share/mga/about/index.html
+%endif
+
+# Mandriva 2011 Theme: "rosa"
+%if "%{?mdkversion}" == "201100"
+Requires: mandriva-theme
+%define tde_bg /usr/share/mdk/backgrounds/default.jpg
+%define tde_starticon /usr/share/icons/mandriva.png
+
+Requires: indexhtml
+%define tde_aboutlabel Mandriva 2011
+%define tde_aboutpage /usr/share/mdk/about/index.html
+%endif
+
+# OpenSuse 12.2 Theme
+%if "%{?suse_version}" == "1220"
+Requires: wallpaper-branding
+%define tde_bg /usr/share/wallpapers/openSUSEdefault/contents/images/1600x1200.jpg
+Requires: hicolor-icon-theme-branding
+%define tde_starticon /usr/share/icons/hicolor/scalable/apps/distributor.svg
+
+Requires: opensuse-manuals_en
+%define tde_aboutlabel OpenSuse 12.2
+%define tde_aboutpage /usr/share/doc/manual/opensuse-manuals_en/book.opensuse.startup.html
+%endif
+
+BuildRequires: cmake >= 2.8
+BuildRequires: tqtinterface-devel
+BuildRequires: trinity-arts-devel
+BuildRequires: trinity-tdelibs-devel
+BuildRequires: gcc-c++ make
+BuildRequires: qt%{?_qt_suffix}-devel
+BuildRequires: openssl-devel
+BuildRequires: audiofile-devel
+BuildRequires: alsa-lib-devel
+BuildRequires: libraw1394-devel
+BuildRequires: libvorbis-devel
+BuildRequires: pam-devel
+BuildRequires: libusb-devel
+BuildRequires: esound-devel
+BuildRequires: glib2-devel
+BuildRequires: pcre-devel
+
+%if 0%{?suse_version}
+BuildRequires: openldap2-devel
+%else
+BuildRequires: lm_sensors-devel
+BuildRequires: openldap-devel
+%endif
+
+
+# TSAK support requires libudev-devel
+# On RHEL5, udev is built statically, so TSAK cannot build.
+# On RHEL5, xrandr library is too old.
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 6 || 0%{?suse_version}
+%define with_tsak 1
+%define with_xrandr 1
+BuildRequires: libudev-devel
+%endif
+
+# On RHEL4, we do not have openexr
+# On RHEL4, we do not use HAL
+%if 0%{?fedora} >= 15 || 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} >= 5 || 0%{?suse_version}
+%define with_exr 1
+BuildRequires: OpenEXR-devel
+%define with_hal 1
+BuildRequires: hal-devel >= 0.4.8
+%endif
+
+
+%if 0%{?fedora} >= 17
+BuildRequires: perl-Digest-MD5
+%endif
+
+%if 0%{?rhel} == 4
+BuildRequires: xorg-x11-devel
+BuildRequires: samba-common
+# Dbus bindings were rebuilt with Qt support
+BuildRequires: dbus-devel >= 0.22-12.EL.9p1
+%else
+BuildRequires: imake
+%if 0%{?suse_version}
+BuildRequires: dbus-1-devel
+%else
+BuildRequires: dbus-devel
+BuildRequires: nas-devel
+%endif
+BuildRequires: dbus-tqt-devel
+BuildRequires: avahi-tqt-devel
+BuildRequires: libxkbfile-devel
+BuildRequires: libsmbclient-devel
+BuildRequires: libfontenc-devel
+
+%if 0%{?mgaversion} || 0%{?mdkversion}
+BuildRequires: %{_lib}avahi-client-devel
+BuildRequires: %{_lib}jack-devel
+BuildRequires: %{_lib}xcomposite%{?mgaversion:1}-devel
+BuildRequires: %{_lib}xdamage-devel
+BuildRequires: %{_lib}xdmcp%{?mgaversion:6}-devel
+BuildRequires: %{_lib}xtst-devel
+BuildRequires: x11-font-util
+BuildRequires: x11-proto-devel
+BuildRequires: %{_lib}xscrnsaver%{?mgaversion:1}-devel
+Requires: %{_lib}avahi-client3
+%else
+BuildRequires: avahi-devel
+BuildRequires: jack-audio-connection-kit-devel
+BuildRequires: libXcomposite-devel
+BuildRequires: libXdamage-devel
+BuildRequires: libXdmcp-devel
+BuildRequires: libXtst-devel
+%if 0%{?suse_version}
+BuildRequires: font-util
+BuildRequires: bdftopcf
+%else
+BuildRequires: xorg-x11-font-utils
+%endif
+BuildRequires: xorg-x11-proto-devel
+%if 0%{?rhel} == 5
+BuildRequires: gnome-screensaver
+%else
+BuildRequires: xscreensaver
+%endif
+Requires: avahi-tqt
+%endif
+%endif
+
+# tdebase is a metapackage that installs all sub-packages
+Requires: %{name}-runtime-data-common = %{version}-%{release}
+Requires: %{name}-data = %{version}-%{release}
+Requires: %{name}-bin = %{version}-%{release}
+Requires: %{name}-kio-plugins = %{version}-%{release}
+Requires: %{name}-kio-pim-plugins = %{version}-%{release}
+Requires: trinity-kappfinder = %{version}-%{release}
+Requires: trinity-kate = %{version}-%{release}
+Requires: trinity-kwrite = %{version}-%{release}
+Requires: trinity-kcontrol = %{version}-%{release}
+Requires: trinity-kdepasswd = %{version}-%{release}
+Requires: trinity-tdeprint = %{version}-%{release}
+Requires: trinity-kdesktop = %{version}-%{release}
+Requires: trinity-tdm = %{version}-%{release}
+Requires: trinity-kfind = %{version}-%{release}
+Requires: trinity-khelpcenter = %{version}-%{release}
+Requires: trinity-kicker = %{version}-%{release}
+Requires: trinity-klipper = %{version}-%{release}
+Requires: trinity-kmenuedit = %{version}-%{release}
+Requires: trinity-konqueror = %{version}-%{release}
+Requires: trinity-konqueror-nsplugins = %{version}-%{release}
+Requires: trinity-konsole = %{version}-%{release}
+Requires: trinity-kpager = %{version}-%{release}
+Requires: trinity-kpersonalizer = %{version}-%{release}
+Requires: trinity-ksmserver = %{version}-%{release}
+Requires: trinity-ksplash = %{version}-%{release}
+Requires: trinity-ksysguard = %{version}-%{release}
+Requires: trinity-ksysguardd = %{version}-%{release}
+Requires: trinity-ktip = %{version}-%{release}
+Requires: trinity-twin = %{version}-%{release}
+Requires: trinity-libkonq = %{version}-%{release}
+Requires: %{name}-libtqt3-integration = %{version}-%{release}
+
+Requires: tqtinterface
+Requires: trinity-arts
+Requires: trinity-tdelibs
+Requires: qt%{?_qt_suffix}
+Requires: openssl
+
+%if 0%{?rhel} == 4
+Requires: dbus-qt
+%else
+Requires: dbus-tqt
+Requires: avahi
+%endif
+
+# RHEL 6 Configuration files are provided in separate packages
+%if 0%{?rhel} || 0%{?fedora}
+%if "%{?tde_prefix}" == "/usr"
+Requires: kde-settings-kdm
+%endif
+Requires: redhat-menus
+%endif
+
+%if 0%{?suse_version}
+Requires: desktop-data-openSUSE
+%endif
+
+%description
+TDE (the Trinity Desktop Environment) is a powerful Open Source graphical
+desktop environment for Unix workstations. It combines ease of use,
+contemporary functionality, and outstanding graphical design with the
+technological superiority of the Unix operating system.
+
+This metapackage includes the nucleus of TDE, namely the minimal package
+set necessary to run TDE as a desktop environment. This includes the
+window manager, taskbar, control center, a text editor, file manager,
+web browser, X terminal emulator, and many other programs and components.
+
+%files
+%defattr(-,root,root,-)
+%doc AUTHORS COPYING COPYING-DOCS README README.pam
+
+##########
+
+%package devel
+Summary: %{summary} - Development files
+Group: Development/Libraries
+Requires: %{name} = %{version}-%{release}
+Requires: trinity-tdelibs-devel
+
+Requires: %{name}-bin-devel = %{version}-%{release}
+Requires: trinity-kate-devel = %{version}-%{release}
+Requires: trinity-kcontrol-devel = %{version}-%{release}
+Requires: trinity-kdesktop-devel = %{version}-%{release}
+Requires: trinity-kicker-devel = %{version}-%{release}
+Requires: trinity-konqueror-devel = %{version}-%{release}
+Requires: trinity-ksplash-devel = %{version}-%{release}
+Requires: trinity-ksysguard-devel = %{version}-%{release}
+Requires: trinity-libkonq-devel = %{version}-%{release}
+Requires: trinity-tdm-devel = %{version}-%{release}
+Requires: trinity-twin-devel = %{version}-%{release}
+
+Provides: trinity-kdebase-devel = %{version}-%{release}
+Obsoletes: trinity-kdebase-devel < %{version}-%{release}
+Provides: tdebase-devel = %{version}-%{release}
+Obsoletes: tdebase-devel < %{version}-%{release}
+
+Obsoletes: trinity-kdebase-cmake < %{version}-%{release}
+Obsoletes: tdebase-cmake < %{version}-%{release}
+
+%description devel
+This is a meta-package that installs all tdebase development packages.
+
+Header files for developing applications using %{name}.
+Install tdebase-devel if you want to develop or compile Konqueror,
+Kate plugins or KWin styles.
+
+%files devel
+%{tde_datadir}/cmake/*.cmake
+
+##########
+
+%package kio-pim-plugins
+Summary: PIM KIOslaves from %{name}
+Group: Environment/Libraries
+
+Provides: trinity-kdebase-pim-ioslaves = %{version}-%{release}
+Obsoletes: trinity-kdebase-pim-ioslaves < %{version}-%{release}
+Provides: tdebase-kio-pim-plugins = %{version}-%{release}
+Obsoletes: tdebase-kio-pim-plugins < %{version}-%{release}
+
+%description kio-pim-plugins
+Protocol handlers (KIOslaves) for personal information management, including:
+ * kio_ldap
+ * kio_nntp
+ * kio_pop3
+ * kio_smtp
+
+%files kio-pim-plugins
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/kio_ldap.la
+%{tde_tdelibdir}/kio_ldap.so
+%{tde_tdelibdir}/kio_nntp.la
+%{tde_tdelibdir}/kio_nntp.so
+%{tde_tdelibdir}/kio_pop3.la
+%{tde_tdelibdir}/kio_pop3.so
+%{tde_tdelibdir}/kio_smtp.la
+%{tde_tdelibdir}/kio_smtp.so
+%{tde_datadir}/services/ldap.protocol
+%{tde_datadir}/services/ldaps.protocol
+%{tde_datadir}/services/nntp.protocol
+%{tde_datadir}/services/nntps.protocol
+%{tde_datadir}/services/pop3.protocol
+%{tde_datadir}/services/pop3s.protocol
+%{tde_datadir}/services/smtp.protocol
+%{tde_datadir}/services/smtps.protocol
+
+##########
+
+%package runtime-data-common
+Summary: Shared common files for Trinity and KDE4
+Group: Environment/Libraries
+
+Provides: tdebase-runtime-data-common = %{version}-%{release}
+Obsoletes: tdebase-runtime-data-common < %{version}-%{release}
+
+%description runtime-data-common
+Shared common files for both Trinity and KDE4
+Such as the desktop right-click-"Create New" list
+
+%files runtime-data-common
+%defattr(-,root,root,-)
+%{tde_datadir}/autostart/khotkeys.desktop
+%{tde_datadir}/desktop-directories/*
+%{tde_datadir}/icons/hicolor/*/apps/kxkb.png
+%{tde_datadir}/icons/hicolor/*/apps/knetattach.*
+%{tde_datadir}/icons/hicolor/*/apps/khotkeys.png
+%{tde_datadir}/icons/hicolor/*/apps/kmenuedit.png
+%{tde_datadir}/icons/hicolor/*/apps/ksplash.png
+%{tde_datadir}/locale/en_US/entry.desktop
+%{tde_datadir}/locale/l10n/*.desktop
+%{tde_datadir}/locale/l10n/*/entry.desktop
+%{tde_datadir}/locale/l10n/*/flag.png
+%{tde_datadir}/sounds/pop.wav
+%{tde_datadir}/templates
+
+%post runtime-data-common
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun runtime-data-common
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kappfinder
+Summary: non-KDE application finder for KDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kappfinder
+kappfinder searches your workstation for many common applications and
+creates menu entries for them.
+
+%files -n trinity-kappfinder
+%defattr(-,root,root,-)
+%{tde_bindir}/kappfinder
+%{tde_tdeappdir}/kappfinder.desktop
+%{tde_datadir}/applnk/System/kappfinder.desktop
+%{tde_datadir}/apps/kappfinder
+%{tde_datadir}/icons/hicolor/*/apps/kappfinder.png
+
+%post -n trinity-kappfinder
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kappfinder
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-libkateinterfaces
+Summary: Common libraries used by kwrite and kate
+Group: Environment/Libraries
+
+%description -n trinity-libkateinterfaces
+%{summary}
+
+%files -n trinity-libkateinterfaces
+%{tde_libdir}/libkateinterfaces.so.*
+
+%post -n trinity-libkateinterfaces
+/sbin/ldconfig || :
+
+%postun -n trinity-libkateinterfaces
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kate
+Summary: advanced text editor for TDE
+Group: Applications/Text
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-kwrite = %{version}-%{release}
+Requires: trinity-libkateinterfaces = %{version}-%{release}
+
+%description -n trinity-kate
+Kate is a multi document editor, based on a rewritten version of the kwrite
+editing widget of TDE.
+
+It is a multi-view editor that lets you view several instances of the same
+document with all instances being synced, or view more files at the same
+time for easy reference or simultaneous editing. The terminal emulation
+and sidebar are docked windows that can be plugged out of the main window,
+or replaced therein according to your preference.
+
+Some random features:
+* Editing of big files
+* Extensible syntax highlighting
+* Folding
+* Dynamic word wrap
+* Selectable encoding
+* Filter command
+* Global grep dialog
+
+%files -n trinity-kate
+%defattr(-,root,root,-)
+%{tde_bindir}/kate
+%{tde_tdelibdir}/kate.la
+%{tde_tdelibdir}/kate.so
+%{tde_libdir}/libkateutils.so.*
+%{tde_libdir}/lib[kt]deinit_kate.la
+%{tde_libdir}/lib[kt]deinit_kate.so
+%{tde_tdeappdir}/kate.desktop
+%{tde_datadir}/apps/kate/
+%{tde_datadir}/apps/kconf_update/kate-2.4.upd
+%{tde_datadir}/config/katerc
+%{tde_datadir}/icons/hicolor/*/apps/kate.png
+%{tde_datadir}/icons/hicolor/*/apps/kate2.svgz
+%{tde_datadir}/servicetypes/kateplugin.desktop
+%{tde_tdedocdir}/HTML/en/kate/
+
+%post -n trinity-kate
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+%postun -n trinity-kate
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kate-devel
+Summary: Development files for kate
+Group: Development/Libraries
+Requires: trinity-kate = %{version}-%{release}
+
+%description -n trinity-kate-devel
+%{summary}
+
+%files -n trinity-kate-devel
+%{tde_tdeincludedir}/kate/
+%{tde_libdir}/libkateutils.so
+%{tde_libdir}/libkateutils.la
+%{tde_libdir}/libkateinterfaces.so
+%{tde_libdir}/libkateinterfaces.la
+
+%post -n trinity-kate-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-kate-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kwrite
+Summary: advanced text editor for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-libkateinterfaces = %{version}-%{release}
+
+%description -n trinity-kwrite
+Kwrite is a text editor for TDE.
+
+%files -n trinity-kwrite
+%defattr(-,root,root,-)
+%{tde_bindir}/kwrite
+%{tde_tdelibdir}/kwrite.la
+%{tde_tdelibdir}/kwrite.so
+%{tde_libdir}/lib[kt]deinit_kwrite.la
+%{tde_libdir}/lib[kt]deinit_kwrite.so
+%{tde_tdeappdir}/kwrite.desktop
+%{tde_datadir}/apps/kwrite/kwriteui.rc
+%{tde_datadir}/icons/hicolor/*/apps/kwrite.png
+%{tde_datadir}/icons/hicolor/*/apps/kwrite2.svgz
+%{tde_tdedocdir}/HTML/en/kwrite/
+
+
+%post -n trinity-kwrite
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kwrite
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-kcontrol
+Summary: control center for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: usbutils
+
+%if 0%{?suse_version} == 0
+Requires: hwdata
+%endif
+
+%description -n trinity-kcontrol
+The TDE Control Center provides you with a centralized and convenient
+way to configure all of your TDE settings.
+
+It is made up of multiple modules. Each module is a separate application,
+but the control center organizes all of these programs into a convenient
+location.
+
+In combination with udev KControl supports the advanced
+configuration of Logitech mice, though the user must be a member of the
+plugdev group.
+
+%files -n trinity-kcontrol
+%defattr(-,root,root,-)
+%{tde_bindir}/kaccess
+%{tde_bindir}/kcontrol
+%{tde_bindir}/kdeinstallktheme
+%{tde_bindir}/keditfiletype
+%{tde_bindir}/kfontinst
+%{tde_bindir}/kfontview
+%{tde_bindir}/kinfocenter
+%{tde_bindir}/klocaldomainurifilterhelper
+%{tde_bindir}/krdb
+%{tde_tdelibdir}/fontthumbnail.la
+%{tde_tdelibdir}/fontthumbnail.so
+%{tde_tdelibdir}/kaccess.la
+%{tde_tdelibdir}/kaccess.so
+%{tde_tdelibdir}/kcm_access.la
+%{tde_tdelibdir}/kcm_access.so
+%{tde_tdelibdir}/kcm_arts.la
+%{tde_tdelibdir}/kcm_arts.so
+%{tde_tdelibdir}/kcm_background.la
+%{tde_tdelibdir}/kcm_background.so
+%{tde_tdelibdir}/kcm_bell.la
+%{tde_tdelibdir}/kcm_bell.so
+%{tde_tdelibdir}/kcm_clock.la
+%{tde_tdelibdir}/kcm_clock.so
+%{tde_tdelibdir}/kcm_colors.la
+%{tde_tdelibdir}/kcm_colors.so
+%{tde_tdelibdir}/kcm_componentchooser.la
+%{tde_tdelibdir}/kcm_componentchooser.so
+%{tde_tdelibdir}/kcm_crypto.la
+%{tde_tdelibdir}/kcm_crypto.so
+%{tde_tdelibdir}/kcm_css.la
+%{tde_tdelibdir}/kcm_css.so
+%{tde_tdelibdir}/kcm_display.la
+%{tde_tdelibdir}/kcm_display.so
+%{tde_tdelibdir}/kcm_energy.la
+%{tde_tdelibdir}/kcm_energy.so
+%{tde_tdelibdir}/kcm_filetypes.la
+%{tde_tdelibdir}/kcm_filetypes.so
+%{tde_tdelibdir}/kcm_fontinst.la
+%{tde_tdelibdir}/kcm_fontinst.so
+%{tde_tdelibdir}/kcm_fonts.la
+%{tde_tdelibdir}/kcm_fonts.so
+#%{tde_tdelibdir}/kcm_hwmanager.la
+#%{tde_tdelibdir}/kcm_hwmanager.so
+%{tde_tdelibdir}/kcm_icons.la
+%{tde_tdelibdir}/kcm_icons.so
+%{tde_tdelibdir}/kcm_info.la
+%{tde_tdelibdir}/kcm_info.so
+%{tde_tdelibdir}/kcm_input.la
+%{tde_tdelibdir}/kcm_input.so
+%{tde_tdelibdir}/kcm_ioslaveinfo.la
+%{tde_tdelibdir}/kcm_ioslaveinfo.so
+%{tde_tdelibdir}/kcm_joystick.la
+%{tde_tdelibdir}/kcm_joystick.so
+%{tde_tdelibdir}/kcm_kded.la
+%{tde_tdelibdir}/kcm_kded.so
+%{tde_tdelibdir}/kcm_[kt]dm.la
+%{tde_tdelibdir}/kcm_[kt]dm.so
+%{tde_tdelibdir}/kcm_kdnssd.so
+%{tde_tdelibdir}/kcm_kdnssd.la
+%{tde_tdelibdir}/kcm_keys.la
+%{tde_tdelibdir}/kcm_keys.so
+%{tde_tdelibdir}/kcm_kicker.la
+%{tde_tdelibdir}/kcm_kicker.so
+%{tde_tdelibdir}/kcm_kio.la
+%{tde_tdelibdir}/kcm_kio.so
+%{tde_tdelibdir}/kcm_knotify.la
+%{tde_tdelibdir}/kcm_knotify.so
+%{tde_tdelibdir}/kcm_konqhtml.la
+%{tde_tdelibdir}/kcm_konqhtml.so
+%{tde_tdelibdir}/kcm_konq.la
+%{tde_tdelibdir}/kcm_konq.so
+%{tde_tdelibdir}/kcm_kthememanager.la
+%{tde_tdelibdir}/kcm_kthememanager.so
+%{tde_tdelibdir}/kcm_kurifilt.la
+%{tde_tdelibdir}/kcm_kurifilt.so
+%{tde_tdelibdir}/kcm_launch.la
+%{tde_tdelibdir}/kcm_launch.so
+%{tde_tdelibdir}/kcm_locale.la
+%{tde_tdelibdir}/kcm_locale.so
+%{tde_tdelibdir}/kcm_nic.la
+%{tde_tdelibdir}/kcm_nic.so
+%{tde_tdelibdir}/kcm_performance.la
+%{tde_tdelibdir}/kcm_performance.so
+%{tde_tdelibdir}/kcm_privacy.la
+%{tde_tdelibdir}/kcm_privacy.so
+%{tde_tdelibdir}/kcm_samba.la
+%{tde_tdelibdir}/kcm_samba.so
+%{tde_tdelibdir}/kcm_screensaver.la
+%{tde_tdelibdir}/kcm_screensaver.so
+%{tde_tdelibdir}/kcm_smserver.la
+%{tde_tdelibdir}/kcm_smserver.so
+%{tde_tdelibdir}/kcm_spellchecking.la
+%{tde_tdelibdir}/kcm_spellchecking.so
+%{tde_tdelibdir}/kcm_style.la
+%{tde_tdelibdir}/kcm_style.so
+%{tde_tdelibdir}/kcm_taskbar.la
+%{tde_tdelibdir}/kcm_taskbar.so
+%{tde_tdelibdir}/kcm_usb.la
+%{tde_tdelibdir}/kcm_usb.so
+%{tde_tdelibdir}/kcm_view1394.la
+%{tde_tdelibdir}/kcm_view1394.so
+%{tde_tdelibdir}/kcm_xinerama.la
+%{tde_tdelibdir}/kcm_xinerama.so
+%{tde_tdelibdir}/kcontrol.la
+%{tde_tdelibdir}/kcontrol.so
+%{tde_tdelibdir}/kfile_font.la
+%{tde_tdelibdir}/kfile_font.so
+%{tde_tdelibdir}/kio_fonts.la
+%{tde_tdelibdir}/kio_fonts.so
+%{tde_tdelibdir}/kstyle_keramik_config.la
+%{tde_tdelibdir}/kstyle_keramik_config.so
+%{tde_tdelibdir}/libkfontviewpart.la
+%{tde_tdelibdir}/libkfontviewpart.so
+%{tde_tdelibdir}/libkshorturifilter.la
+%{tde_tdelibdir}/libkshorturifilter.so
+%{tde_tdelibdir}/libkuriikwsfilter.la
+%{tde_tdelibdir}/libkuriikwsfilter.so
+%{tde_tdelibdir}/libkurisearchfilter.la
+%{tde_tdelibdir}/libkurisearchfilter.so
+%{tde_tdelibdir}/liblocaldomainurifilter.la
+%{tde_tdelibdir}/liblocaldomainurifilter.so
+%{tde_libdir}/lib[kt]deinit_kaccess.la
+%{tde_libdir}/lib[kt]deinit_kaccess.so
+%{tde_libdir}/lib[kt]deinit_kcontrol.la
+%{tde_libdir}/lib[kt]deinit_kcontrol.so
+%{tde_libdir}/libkfontinst.so.*
+%{tde_tdeappdir}/arts.desktop
+%{tde_tdeappdir}/background.desktop
+%{tde_tdeappdir}/bell.desktop
+%{tde_tdeappdir}/cache.desktop
+%{tde_tdeappdir}/cdinfo.desktop
+%{tde_tdeappdir}/clock.desktop
+%{tde_tdeappdir}/colors.desktop
+%{tde_tdeappdir}/componentchooser.desktop
+%{tde_tdeappdir}/cookies.desktop
+%{tde_tdeappdir}/crypto.desktop
+%{tde_tdeappdir}/desktopbehavior.desktop
+%{tde_tdeappdir}/desktop.desktop
+%{tde_tdeappdir}/desktoppath.desktop
+%{tde_tdeappdir}/devices.desktop
+%{tde_tdeappdir}/display.desktop
+%{tde_tdeappdir}/dma.desktop
+%{tde_tdeappdir}/ebrowsing.desktop
+%{tde_tdeappdir}/filebrowser.desktop
+%{tde_tdeappdir}/filetypes.desktop
+%{tde_tdeappdir}/fonts.desktop
+#%{tde_tdeappdir}/hwmanager.desktop
+%{tde_tdeappdir}/icons.desktop
+%{tde_tdeappdir}/installktheme.desktop
+%{tde_tdeappdir}/interrupts.desktop
+%{tde_tdeappdir}/ioports.desktop
+%{tde_tdeappdir}/ioslaveinfo.desktop
+%{tde_tdeappdir}/joystick.desktop
+%{tde_tdeappdir}/kcm_kdnssd.desktop
+%{tde_tdeappdir}/kcmaccess.desktop
+%{tde_tdeappdir}/kcmcss.desktop
+%{tde_tdeappdir}/kcmfontinst.desktop
+%{tde_tdeappdir}/kcmkded.desktop
+%{tde_tdeappdir}/kcmlaunch.desktop
+%{tde_tdeappdir}/kcmnotify.desktop
+%{tde_tdeappdir}/kcmperformance.desktop
+%{tde_tdeappdir}/kcmsmserver.desktop
+%{tde_tdeappdir}/kcmtaskbar.desktop
+%{tde_tdeappdir}/kcmusb.desktop
+%{tde_tdeappdir}/kcmview1394.desktop
+%{tde_tdeappdir}/KControl.desktop
+%{tde_tdeappdir}/[kt]dm.desktop
+%{tde_tdeappdir}/keys.desktop
+%{tde_tdeappdir}/kfontview.desktop
+%{tde_tdeappdir}/khtml_behavior.desktop
+%{tde_tdeappdir}/khtml_fonts.desktop
+%{tde_tdeappdir}/khtml_java_js.desktop
+%{tde_tdeappdir}/kinfocenter.desktop
+%{tde_tdeappdir}/kthememanager.desktop
+%{tde_tdeappdir}/lanbrowser.desktop
+%{tde_tdeappdir}/language.desktop
+%{tde_tdeappdir}/media.desktop
+%{tde_tdeappdir}/memory.desktop
+%{tde_tdeappdir}/mouse.desktop
+%{tde_tdeappdir}/netpref.desktop
+%{tde_tdeappdir}/nic.desktop
+%{tde_tdeappdir}/opengl.desktop
+%{tde_tdeappdir}/panel_appearance.desktop
+%{tde_tdeappdir}/panel.desktop
+%{tde_tdeappdir}/partitions.desktop
+%{tde_tdeappdir}/pci.desktop
+%{tde_tdeappdir}/privacy.desktop
+%{tde_tdeappdir}/processor.desktop
+%{tde_tdeappdir}/proxy.desktop
+%{tde_tdeappdir}/screensaver.desktop
+%{tde_tdeappdir}/scsi.desktop
+%{tde_tdeappdir}/smbstatus.desktop
+%{tde_tdeappdir}/sound.desktop
+%{tde_tdeappdir}/spellchecking.desktop
+%{tde_tdeappdir}/style.desktop
+%{tde_tdeappdir}/useragent.desktop
+%{tde_tdeappdir}/xserver.desktop
+%{tde_datadir}/applnk/.hidden/energy.desktop
+%{tde_datadir}/applnk/.hidden/fileappearance.desktop
+%{tde_datadir}/applnk/.hidden/filebehavior.desktop
+%{tde_datadir}/applnk/.hidden/filepreviews.desktop
+%{tde_datadir}/applnk/.hidden/kcmkonqyperformance.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_appearance.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config.desktop
+%{tde_datadir}/applnk/.hidden/smb.desktop
+%{tde_datadir}/applnk/.hidden/xinerama.desktop
+%{tde_datadir}/applnk/Settings/LookNFeel/
+%{tde_datadir}/applnk/Settings/WebBrowsing/khtml_appearance.desktop
+%{tde_datadir}/applnk/Settings/WebBrowsing/nsplugin.desktop
+%{tde_datadir}/applnk/Settings/WebBrowsing/smb.desktop
+%{tde_datadir}/apps/kcm_componentchooser/kcm_browser.desktop
+%{tde_datadir}/apps/kcm_componentchooser/kcm_kemail.desktop
+%{tde_datadir}/apps/kcm_componentchooser/kcm_terminal.desktop
+%{tde_datadir}/apps/konqsidebartng/virtual_folders/services/fonts.desktop
+%{tde_datadir}/apps/konqueror/servicemenus/installfont.desktop
+%{tde_datadir}/mimelnk/application/x-ktheme.desktop
+%{tde_datadir}/mimelnk/fonts/folder.desktop
+%{tde_datadir}/mimelnk/fonts/package.desktop
+%{tde_datadir}/mimelnk/fonts/system-folder.desktop
+%{tde_datadir}/services/fonts.protocol
+%{tde_datadir}/services/fontthumbnail.desktop
+%{tde_datadir}/services/kaccess.desktop
+%{tde_datadir}/services/kfile_font.desktop
+%{tde_datadir}/services/kfontviewpart.desktop
+%{tde_datadir}/services/kshorturifilter.desktop
+%{tde_datadir}/services/kuriikwsfilter.desktop
+%{tde_datadir}/services/kurisearchfilter.desktop
+%{tde_datadir}/services/localdomainurifilter.desktop
+
+%{tde_datadir}/apps/usb.ids
+%{tde_datadir}/apps/kcmview1394/oui.db
+
+# The following features are not compiled under RHEL 5
+%if 0%{?rhel} >= 6 || 0%{?fedora} >= 15 || 0%{?mdkversion} || 0%{?mgaversion} || 0%{?suse_version}
+%{tde_bindir}/krandrtray
+%{tde_tdelibdir}/kcm_displayconfig.la
+%{tde_tdelibdir}/kcm_displayconfig.so
+%{tde_tdelibdir}/kcm_iccconfig.la
+%{tde_tdelibdir}/kcm_iccconfig.so
+%{tde_tdelibdir}/kcm_randr.la
+%{tde_tdelibdir}/kcm_randr.so
+%{tde_tdeappdir}/displayconfig.desktop
+%{tde_tdeappdir}/iccconfig.desktop
+%{tde_tdeappdir}/krandrtray.desktop
+%{tde_datadir}/applnk/.hidden/randr.desktop
+%{tde_datadir}/autostart/krandrtray-autostart.desktop
+%endif
+
+%post -n trinity-kcontrol
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kcontrol
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-kcontrol-devel
+Summary: Development files for kcontrol
+Group: Development/Libraries
+Requires: trinity-kcontrol = %{version}-%{release}
+
+%description -n trinity-kcontrol-devel
+%{summary}
+
+%files -n trinity-kcontrol-devel
+%{tde_libdir}/libkfontinst.la
+%{tde_libdir}/libkfontinst.so
+
+%post -n trinity-kcontrol-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-kcontrol-devel
+/sbin/ldconfig || :
+
+##########
+
+%package bin
+Summary: core binaries for the TDE base module
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: pam
+
+Provides: tdebase-bin = %{version}-%{release}
+Obsoletes: tdebase-bin < %{version}-%{release}
+
+%description bin
+This package contains miscellaneous programs needed by other
+TDE applications, particularly those in the TDE base module.
+
+%files bin
+%defattr(-,root,root,-)
+%{tde_bindir}/krootbacking
+#%{tde_bindir}/tdeinit_phase1
+%if 0%{?with_tsak}
+%attr(4511,root,root) %{tde_bindir}/[kt]dmtsak
+%{tde_bindir}/tsak
+%endif
+%{tde_bindir}/kdebugdialog
+%{tde_bindir}/kreadconfig
+%{tde_bindir}/kwriteconfig
+%{tde_bindir}/kstart
+%{tde_datadir}/config/kxkb_groups
+%{tde_bindir}/drkonqi
+%{tde_bindir}/kapplymousetheme
+%{tde_bindir}/kblankscrn.kss
+%attr(4755,root,root) %{tde_bindir}/kcheckpass
+%{tde_bindir}/kcminit
+%{tde_bindir}/kcminit_startup
+%{tde_bindir}/kdcop
+%{tde_bindir}/[kt]desu
+%attr(0755,root,root) %{tde_bindir}/[kt]desud
+%{tde_bindir}/kdialog
+%{tde_bindir}/khotkeys
+%{tde_bindir}/knetattach
+%{tde_bindir}/krandom.kss
+%{tde_bindir}/ksystraycmd
+%{tde_bindir}/kxkb
+%{tde_libdir}/kconf_update_bin/khotkeys_update
+%{tde_tdelibdir}/kcminit.la
+%{tde_tdelibdir}/kcminit.so
+%{tde_tdelibdir}/kcminit_startup.la
+%{tde_tdelibdir}/kcminit_startup.so
+%{tde_tdelibdir}/kcm_keyboard.la
+%{tde_tdelibdir}/kcm_keyboard.so
+%{tde_tdelibdir}/kcm_khotkeys_init.la
+%{tde_tdelibdir}/kcm_khotkeys_init.so
+%{tde_tdelibdir}/kcm_khotkeys.la
+%{tde_tdelibdir}/kcm_khotkeys.so
+%{tde_tdelibdir}/kded_khotkeys.la
+%{tde_tdelibdir}/kded_khotkeys.so
+%{tde_tdelibdir}/kgreet_classic.la
+%{tde_tdelibdir}/kgreet_classic.so
+%{tde_tdelibdir}/kgreet_winbind.la
+%{tde_tdelibdir}/kgreet_winbind.so
+%{tde_tdelibdir}/khotkeys.la
+%{tde_tdelibdir}/khotkeys.so
+%{tde_tdelibdir}/khotkeys_arts.la
+%{tde_tdelibdir}/khotkeys_arts.so
+%{tde_tdelibdir}/kxkb.la
+%{tde_tdelibdir}/kxkb.so
+%{tde_libdir}/lib[kt]deinit_kcminit.la
+%{tde_libdir}/lib[kt]deinit_kcminit.so
+%{tde_libdir}/lib[kt]deinit_kcminit_startup.la
+%{tde_libdir}/lib[kt]deinit_kcminit_startup.so
+%{tde_libdir}/lib[kt]deinit_khotkeys.la
+%{tde_libdir}/lib[kt]deinit_khotkeys.so
+%{tde_libdir}/lib[kt]deinit_kxkb.la
+%{tde_libdir}/lib[kt]deinit_kxkb.so
+%{tde_libdir}/libkhotkeys_shared.so.*
+%{tde_tdeappdir}/keyboard.desktop
+%{tde_tdeappdir}/keyboard_layout.desktop
+%{tde_tdeappdir}/khotkeys.desktop
+%{tde_tdeappdir}/knetattach.desktop
+%{tde_datadir}/applnk/System/ScreenSavers/
+%{tde_datadir}/apps/drkonqi/
+%{tde_datadir}/apps/kconf_update/khotkeys_32b1_update.upd
+%{tde_datadir}/apps/kconf_update/khotkeys_printscreen.upd
+%{tde_datadir}/apps/kconf_update/konqueror_gestures_trinity21_update.upd
+%{tde_datadir}/apps/kdcop/kdcopui.rc
+%{tde_datadir}/apps/khotkeys/
+%{tde_datadir}/services/kded/khotkeys.desktop
+%{tde_datadir}/services/kxkb.desktop
+%{_sysconfdir}/pam.d/kcheckpass-trinity
+%if 0%{?suse_version} == 0
+%{_sysconfdir}/pam.d/kscreensaver-trinity
+%endif
+%{tde_tdedocdir}/HTML/en/kdcop/
+%{tde_tdedocdir}/HTML/en/kdebugdialog//
+%{tde_tdedocdir}/HTML/en/[kt]desu/
+%{tde_tdedocdir}/HTML/en/knetattach/
+%{tde_tdedocdir}/HTML/en/kxkb/
+
+%post bin
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun bin
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package bin-devel
+Summary: Development files for core binaries for the TDE base module
+Group: Development/Libraries
+Requires: %{name}-bin = %{version}-%{release}
+
+Obsoletes: tdebase-bin-devel < %{version}-%{release}
+Provides: tdebase-bin-devel = %{version}-%{release}
+
+%description bin-devel
+%{summary}
+
+%files bin-devel
+%{tde_libdir}/libkhotkeys_shared.la
+%{tde_libdir}/libkhotkeys_shared.so
+
+%post bin-devel
+/sbin/ldconfig || :
+
+%postun bin-devel
+/sbin/ldconfig || :
+
+##########
+
+%package data
+Summary: shared data files for the TDE base module
+Group: Environment/Libraries
+Requires: %{name}-runtime-data-common = %{version}-%{release}
+
+Obsoletes: tdebase-data < %{version}-%{release}
+Provides: tdebase-data = %{version}-%{release}
+
+%description data
+This package contains the architecture-independent shared data files
+needed for a basic TDE desktop installation.
+
+%files data
+%defattr(-,root,root,-)
+%{tde_datadir}/config/kshorturifilterrc
+%{tde_datadir}/applnk/.hidden/battery.desktop
+%{tde_datadir}/applnk/.hidden/bwarning.desktop
+%{tde_datadir}/applnk/.hidden/cwarning.desktop
+%{tde_datadir}/applnk/.hidden/.directory
+%{tde_datadir}/applnk/.hidden/email.desktop
+%{tde_datadir}/applnk/.hidden/kcmkonq.desktop
+%{tde_datadir}/applnk/.hidden/kcmkxmlrpcd.desktop
+%{tde_datadir}/applnk/.hidden/konqhtml.desktop
+%{tde_datadir}/applnk/.hidden/passwords.desktop
+%{tde_datadir}/applnk/.hidden/power.desktop
+%{tde_datadir}/applnk/.hidden/socks.desktop
+%{tde_datadir}/applnk/.hidden/userinfo.desktop
+%{tde_datadir}/applnk/.hidden/virtualdesktops.desktop
+%{tde_datadir}/apps/kaccess/eventsrc
+%{tde_datadir}/apps/kcmcss/template.css
+%{tde_datadir}/apps/kcminput/
+%{tde_datadir}/apps/kcmkeys/
+%{tde_datadir}/apps/kcmlocale/pics/background.png
+%{tde_datadir}/apps/kconf_update/convertShortcuts.pl
+%{tde_datadir}/apps/kconf_update/kaccel.upd
+%{tde_datadir}/apps/kconf_update/kcmdisplayrc.upd
+%{tde_datadir}/apps/kconf_update/kuriikwsfilter.upd
+%{tde_datadir}/apps/kconf_update/mouse_cursor_theme.upd
+%{tde_datadir}/apps/kconf_update/socks.upd
+%{tde_datadir}/apps/kcontrol/
+%{tde_datadir}/apps/kdisplay/
+%{tde_datadir}/apps/kfontview/
+%{tde_datadir}/apps/kinfocenter/kinfocenterui.rc
+%{tde_datadir}/apps/kthememanager/themes/*
+%{tde_datadir}/icons/crystalsvg/*/apps/access.png
+%{tde_datadir}/icons/crystalsvg/*/apps/acroread.png
+%{tde_datadir}/icons/crystalsvg/*/apps/applixware.png
+%{tde_datadir}/icons/crystalsvg/*/apps/arts.png
+%{tde_datadir}/icons/crystalsvg/*/apps/background.png
+%{tde_datadir}/icons/crystalsvg/*/apps/bell.png
+%{tde_datadir}/icons/crystalsvg/*/apps/cache.png
+%{tde_datadir}/icons/crystalsvg/*/apps/clanbomber.png
+%{tde_datadir}/icons/crystalsvg/*/apps/clock.png
+%{tde_datadir}/icons/crystalsvg/*/apps/colors.png
+%{tde_datadir}/icons/crystalsvg/*/apps/date.png
+%{tde_datadir}/icons/crystalsvg/*/apps/email.png
+%{tde_datadir}/icons/crystalsvg/*/apps/energy.png
+%{tde_datadir}/icons/crystalsvg/*/apps/energy_star.png
+%{tde_datadir}/icons/crystalsvg/*/apps/filetypes.png
+%{tde_datadir}/icons/crystalsvg/*/apps/fonts.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gimp.png
+%{tde_datadir}/icons/crystalsvg/*/apps/help_index.png
+%{tde_datadir}/icons/crystalsvg/*/apps/hwinfo.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmdevices.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmdf.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmkwm.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmmemory.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmpartitions.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmpci.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcontrol.png
+%{tde_datadir}/icons/crystalsvg/*/apps/[kt]dmconfig.png
+%{tde_datadir}/icons/crystalsvg/*/apps/key_bindings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kfm_home.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kscreensaver.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kthememgr.png
+%{tde_datadir}/icons/crystalsvg/*/apps/licq.png
+%{tde_datadir}/icons/crystalsvg/*/apps/linuxconf.png
+%{tde_datadir}/icons/crystalsvg/*/apps/locale.png
+%{tde_datadir}/icons/crystalsvg/*/apps/looknfeel.png
+%{tde_datadir}/icons/crystalsvg/*/apps/multimedia.png
+%{tde_datadir}/icons/crystalsvg/*/apps/netscape.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_applications.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_development.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_favourite.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_multimedia.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_network.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_settings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_toys.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_utilities.png
+%{tde_datadir}/icons/crystalsvg/*/apps/penguin.png
+%{tde_datadir}/icons/crystalsvg/*/apps/personal.png
+%{tde_datadir}/icons/crystalsvg/*/apps/phppg.png
+%{tde_datadir}/icons/crystalsvg/*/apps/proxy.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pysol.png
+%{tde_datadir}/icons/crystalsvg/*/apps/randr.png
+%{tde_datadir}/icons/crystalsvg/*/apps/samba.png
+%{tde_datadir}/icons/crystalsvg/*/apps/staroffice.png
+%{tde_datadir}/icons/crystalsvg/*/apps/stylesheet.png
+%{tde_datadir}/icons/crystalsvg/*/apps/terminal.png
+%{tde_datadir}/icons/crystalsvg/*/apps/tux.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wp.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xclock.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xfmail.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xmag.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xpaint.png
+%{tde_datadir}/icons/crystalsvg/scalable/apps/access.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/acroread.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/aim.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/aktion.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/antivirus.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/applixware.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/arts.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/background.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/bell.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/browser.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/cache.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/camera.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/clanbomber.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/clock.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/colors.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/core.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/date.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/display.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/download_manager.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/email.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/energy.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/error.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/fifteenpieces.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/filetypes.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/fonts.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/galeon.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/gnome_apps.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/hardware.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/hwinfo.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/ieee1394.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/kcmdevices.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/kcmkwm.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/kcmx.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/locale.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/my_mac.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/netscape.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/openoffice.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/package_development.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/package_toys.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/penguin.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/personal.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/quicktime.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/realplayer.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/samba.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/shell.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/staroffice.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/stylesheet.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/terminal.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/tux.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/wine.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/x.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xapp.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xcalc.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xchat.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xclock.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xeyes.svgz
+%{tde_datadir}/icons/crystalsvg/scalable/apps/xpaint.svgz
+%{tde_datadir}/icons/crystalsvg/*/devices/laptop.png
+%{tde_datadir}/icons/crystalsvg/*/devices/laptop.svgz
+%{tde_datadir}/icons/crystalsvg/*/actions/newfont.png
+%{tde_datadir}/icons/crystalsvg/*/apps/abiword.png
+%{tde_datadir}/icons/crystalsvg/*/apps/agent.png
+%{tde_datadir}/icons/crystalsvg/*/apps/alevt.png
+%{tde_datadir}/icons/crystalsvg/*/apps/assistant.png
+%{tde_datadir}/icons/crystalsvg/*/apps/blender.png
+%{tde_datadir}/icons/crystalsvg/*/apps/bluefish.png
+%{tde_datadir}/icons/crystalsvg/*/apps/cookie.png
+%{tde_datadir}/icons/crystalsvg/*/apps/designer.png
+%{tde_datadir}/icons/crystalsvg/*/apps/dia.png
+%{tde_datadir}/icons/crystalsvg/*/apps/dlgedit.png
+%{tde_datadir}/icons/crystalsvg/*/apps/eclipse.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_languages.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_mathematics.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_miscellaneous.png
+%{tde_datadir}/icons/crystalsvg/*/apps/edu_science.png
+%{tde_datadir}/icons/crystalsvg/*/apps/emacs.png
+%{tde_datadir}/icons/crystalsvg/*/apps/enhanced_browsing.png
+%{tde_datadir}/icons/crystalsvg/*/apps/evolution.png
+%{tde_datadir}/icons/crystalsvg/*/apps/fifteenpieces.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gabber.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gaim.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnome_apps.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnomemeeting.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnucash.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gnumeric.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gv.png
+%{tde_datadir}/icons/crystalsvg/*/apps/gvim.png
+%{tde_datadir}/icons/crystalsvg/*/apps/icons.png
+%{tde_datadir}/icons/crystalsvg/*/apps/iconthemes.png
+%{tde_datadir}/icons/crystalsvg/*/apps/ieee1394.png
+%{tde_datadir}/icons/crystalsvg/*/apps/input_devices_settings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmkicker.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmmidi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmprocessor.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmscsi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmsound.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmsystem.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmx.png
+%{tde_datadir}/icons/crystalsvg/*/apps/keyboard.png
+%{tde_datadir}/icons/crystalsvg/*/apps/keyboard_layout.png
+%{tde_datadir}/icons/crystalsvg/*/apps/knotify.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kvirc.png
+%{tde_datadir}/icons/crystalsvg/*/apps/linguist.png
+%{tde_datadir}/icons/crystalsvg/*/apps/lyx.png
+%{tde_datadir}/icons/crystalsvg/*/apps/mac.png
+%{tde_datadir}/icons/crystalsvg/*/apps/mathematica.png
+%{tde_datadir}/icons/crystalsvg/*/apps/nedit.png
+%{tde_datadir}/icons/crystalsvg/*/apps/opera.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_application.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_editors.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_edutainment.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_arcade.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_board.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_card.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_games_strategy.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_graphics.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_system.png
+%{tde_datadir}/icons/crystalsvg/*/apps/package_wordprocessing.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pan.png
+%{tde_datadir}/icons/crystalsvg/*/apps/panel_settings.png
+%{tde_datadir}/icons/crystalsvg/*/apps/plan.png
+%{tde_datadir}/icons/crystalsvg/*/apps/planner.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pybliographic.png
+%{tde_datadir}/icons/crystalsvg/*/apps/realplayer.png
+%{tde_datadir}/icons/crystalsvg/*/apps/remote.png
+%{tde_datadir}/icons/crystalsvg/*/apps/scribus.png
+%{tde_datadir}/icons/crystalsvg/*/apps/sodipodi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/style.png
+%{tde_datadir}/icons/crystalsvg/*/apps/usb.png
+%{tde_datadir}/icons/crystalsvg/*/apps/vnc.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wabi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wine.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xcalc.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xchat.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xclipboard.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xconsole.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xedit.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xemacs.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xeyes.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xfig.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xload.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xmms.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xosview.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xv.png
+%{tde_datadir}/icons/crystalsvg/*/apps/galeon.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmdrkonqi.png
+%{tde_datadir}/icons/crystalsvg/*/apps/pinguin.png
+%{tde_datadir}/icons/crystalsvg/*/apps/x.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xapp.png
+%{tde_datadir}/icons/crystalsvg/*/apps/xawtv.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kcmopengl.png
+%{tde_datadir}/icons/crystalsvg/*/apps/wmaker_apps.png
+%{tde_datadir}/icons/crystalsvg/*/apps/qtella.png
+%{tde_datadir}/services/searchproviders
+%{tde_datadir}/services/useragentstrings/*.desktop
+%{tde_datadir}/servicetypes/searchprovider.desktop
+%{tde_datadir}/servicetypes/uasprovider.desktop
+%exclude %{tde_datadir}/sounds/pop.wav
+%{tde_datadir}/sounds/
+%{tde_datadir}/wallpapers/*
+
+%if "%{tde_prefix}" != "/usr"
+%{tde_prefix}/etc/xdg/menus/applications-merged/kde-essential.menu
+%{tde_prefix}/etc/xdg/menus/kde-information.menu
+%{tde_prefix}/etc/xdg/menus/kde-screensavers.menu
+%{tde_prefix}/etc/xdg/menus/kde-settings.menu
+%else
+%{_sysconfdir}/xdg/menus/applications-merged/kde-essential.menu
+%{_sysconfdir}/xdg/menus/kde-information.menu
+%{_sysconfdir}/xdg/menus/kde-screensavers.menu
+%{_sysconfdir}/xdg/menus/kde-settings.menu
+%endif
+
+%{tde_tdedocdir}/HTML/en/kcontrol/
+%exclude %{tde_tdedocdir}/HTML/en/kcontrol/kcmkonsole/
+%{tde_tdedocdir}/HTML/en/kinfocenter/
+
+%post data
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%if 0%{?mdkversion}
+# Mandriva-specific: we have to choose a background for current distribution variant (Free, One, Powerpack, ...)
+# First, we read the "product" key in /etc/product.id
+eval $(tr "," ";" </etc/product.id) 2>/dev/null
+# Then, we create a symbolic link to the corresponding background
+%__ln -sf "/usr/share/mdk/backgrounds/Mandriva-${product:-Free}-1280x1024-1300.jpg" "%{tde_bg}"
+%endif
+
+%postun data
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package kio-plugins
+Summary: core I/O slaves for TDE
+Group: Applications/Utilities
+Requires: trinity-kdesktop = %{version}-%{release}
+Requires: cyrus-sasl
+Requires: psmisc
+%if 0%{?with_hal}
+Requires: hal >= 0.4.8
+%endif
+%if 0%{?rhel} == 4 || 0%{?suse_version}
+Requires: cryptsetup
+%else
+Requires: cryptsetup-luks
+%endif
+
+Obsoletes: tdebase-kio-plugins < %{version}-%{release}
+Provides: tdebase-kio-plugins = %{version}-%{release}
+
+%description kio-plugins
+This package includes the base kioslaves. They include, amongst many
+others, file, http, and ftp.
+
+It also includes the media kioslave, which handles removable devices,
+and which works best with hal (and therefore udev) and pmount. Media
+also extends the functionality of many other kioslaves. To use this
+service, please make sure that your user is a member of the plugdev
+group.
+
+%files kio-plugins
+%defattr(-,root,root,-)
+%{tde_bindir}/kio_media_mounthelper
+%{tde_bindir}/ktrash
+%{tde_tdelibdir}/cursorthumbnail.la
+%{tde_tdelibdir}/cursorthumbnail.so
+%{tde_tdelibdir}/djvuthumbnail.la
+%{tde_tdelibdir}/djvuthumbnail.so
+%{tde_tdelibdir}/htmlthumbnail.la
+%{tde_tdelibdir}/htmlthumbnail.so
+%{tde_tdelibdir}/imagethumbnail.la
+%{tde_tdelibdir}/imagethumbnail.so
+%{tde_tdelibdir}/kcm_cgi.la
+%{tde_tdelibdir}/kcm_cgi.so
+%{tde_tdelibdir}/kcm_media.la
+%{tde_tdelibdir}/kcm_media.so
+%{tde_tdelibdir}/kded_homedirnotify.la
+%{tde_tdelibdir}/kded_homedirnotify.so
+%{tde_tdelibdir}/kded_mediamanager.la
+%{tde_tdelibdir}/kded_mediamanager.so
+%{tde_tdelibdir}/kded_medianotifier.la
+%{tde_tdelibdir}/kded_medianotifier.so
+%{tde_tdelibdir}/kded_remotedirnotify.la
+%{tde_tdelibdir}/kded_remotedirnotify.so
+%{tde_tdelibdir}/kded_systemdirnotify.la
+%{tde_tdelibdir}/kded_systemdirnotify.so
+%{tde_tdelibdir}/kfile_media.la
+%{tde_tdelibdir}/kfile_media.so
+%{tde_tdelibdir}/kfile_trash.la
+%{tde_tdelibdir}/kfile_trash.so
+%{tde_tdelibdir}/kio_about.la
+%{tde_tdelibdir}/kio_about.so
+%{tde_tdelibdir}/kio_cgi.la
+%{tde_tdelibdir}/kio_cgi.so
+%{tde_tdelibdir}/kio_filter.la
+%{tde_tdelibdir}/kio_filter.so
+%{tde_tdelibdir}/kio_finger.la
+%{tde_tdelibdir}/kio_finger.so
+%{tde_tdelibdir}/kio_fish.la
+%{tde_tdelibdir}/kio_fish.so
+%{tde_tdelibdir}/kio_floppy.la
+%{tde_tdelibdir}/kio_floppy.so
+%{tde_tdelibdir}/kio_home.la
+%{tde_tdelibdir}/kio_home.so
+%{tde_tdelibdir}/kio_info.la
+%{tde_tdelibdir}/kio_info.so
+%{tde_tdelibdir}/kio_mac.la
+%{tde_tdelibdir}/kio_mac.so
+%{tde_tdelibdir}/kio_man.la
+%{tde_tdelibdir}/kio_man.so
+%{tde_tdelibdir}/kio_media.la
+%{tde_tdelibdir}/kio_media.so
+%{tde_tdelibdir}/kio_nfs.la
+%{tde_tdelibdir}/kio_nfs.so
+%{tde_tdelibdir}/kio_remote.la
+%{tde_tdelibdir}/kio_remote.so
+%{tde_tdelibdir}/kio_settings.la
+%{tde_tdelibdir}/kio_settings.so
+%{tde_tdelibdir}/kio_sftp.la
+%{tde_tdelibdir}/kio_sftp.so
+%{tde_tdelibdir}/kio_smb.la
+%{tde_tdelibdir}/kio_smb.so
+%{tde_tdelibdir}/kio_system.la
+%{tde_tdelibdir}/kio_system.so
+%{tde_tdelibdir}/kio_tar.la
+%{tde_tdelibdir}/kio_tar.so
+%{tde_tdelibdir}/kio_thumbnail.la
+%{tde_tdelibdir}/kio_thumbnail.so
+%{tde_tdelibdir}/kio_trash.la
+%{tde_tdelibdir}/kio_trash.so
+%{tde_tdelibdir}/libkmanpart.la
+%{tde_tdelibdir}/libkmanpart.so
+%{tde_tdelibdir}/textthumbnail.la
+%{tde_tdelibdir}/textthumbnail.so
+%{tde_tdeappdir}/kcmcgi.desktop
+%{tde_datadir}/apps/kio_finger/kio_finger.css
+%{tde_datadir}/apps/kio_finger/kio_finger.pl
+%{tde_datadir}/apps/kio_info/kde-info2html
+%{tde_datadir}/apps/kio_info/kde-info2html.conf
+%{tde_datadir}/apps/kio_man/kio_man.css
+%{tde_datadir}/apps/konqueror/dirtree/remote/smb-network.desktop
+%{tde_datadir}/apps/remoteview/smb-network.desktop
+%{tde_datadir}/apps/systemview/*.desktop
+%{tde_datadir}/config.kcfg/mediamanagersettings.kcfg
+%{tde_datadir}/mimelnk/application/x-smb-server.desktop
+%{tde_datadir}/mimelnk/application/x-smb-workgroup.desktop
+%{tde_datadir}/mimelnk/inode/system_directory.desktop
+%{tde_datadir}/mimelnk/media/*.desktop
+%{tde_datadir}/services/about.protocol
+%{tde_datadir}/services/applications.protocol
+%{tde_datadir}/services/ar.protocol
+%{tde_datadir}/services/bzip.protocol
+%{tde_datadir}/services/bzip2.protocol
+%{tde_datadir}/services/cgi.protocol
+%{tde_datadir}/services/cursorthumbnail.desktop
+%{tde_datadir}/services/djvuthumbnail.desktop
+%{tde_datadir}/services/finger.protocol
+%{tde_datadir}/services/fish.protocol
+%{tde_datadir}/services/floppy.protocol
+%{tde_datadir}/services/gzip.protocol
+%{tde_datadir}/services/home.protocol
+%{tde_datadir}/services/htmlthumbnail.desktop
+%{tde_datadir}/services/imagethumbnail.desktop
+%{tde_datadir}/services/info.protocol
+%{tde_datadir}/services/kded/homedirnotify.desktop
+%{tde_datadir}/services/kded/mediamanager.desktop
+%{tde_datadir}/services/kded/medianotifier.desktop
+%{tde_datadir}/services/kded/remotedirnotify.desktop
+%{tde_datadir}/services/kded/systemdirnotify.desktop
+%{tde_datadir}/services/kfile_media.desktop
+%{tde_datadir}/services/kfile_trash_system.desktop
+%{tde_datadir}/services/kmanpart.desktop
+%{tde_datadir}/services/mac.protocol
+%{tde_datadir}/services/man.protocol
+%{tde_datadir}/services/media.protocol
+%{tde_datadir}/services/nfs.protocol
+%{tde_datadir}/services/nxfish.protocol
+%{tde_datadir}/services/programs.protocol
+%{tde_datadir}/services/remote.protocol
+%{tde_datadir}/services/settings.protocol
+%{tde_datadir}/services/sftp.protocol
+%{tde_datadir}/services/smb.protocol
+%{tde_datadir}/services/system.protocol
+%{tde_datadir}/services/tar.protocol
+%{tde_datadir}/services/textthumbnail.desktop
+%{tde_datadir}/services/thumbnail.protocol
+%{tde_datadir}/services/trash.protocol
+%{tde_datadir}/services/zip.protocol
+%{tde_datadir}/servicetypes/thumbcreator.desktop
+%{tde_datadir}/services/kfile_trash.desktop
+%{tde_tdedocdir}/HTML/en/kioslave/
+%if 0%{?with_exr}
+%{tde_tdelibdir}/exrthumbnail.la
+%{tde_tdelibdir}/exrthumbnail.so
+%{tde_datadir}/services/exrthumbnail.desktop
+%endif
+%if 0%{?with_hal}
+%{tde_tdelibdir}/media_propsdlgplugin.la
+%{tde_tdelibdir}/media_propsdlgplugin.so
+%{tde_datadir}/services/media_propsdlgplugin.desktop
+%endif
+
+%post kio-plugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun kio-plugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+
+##########
+
+%package -n trinity-kdepasswd
+Summary: password changer for TDE
+Group: Applications/Utilities
+
+%description -n trinity-kdepasswd
+This is a simple application which allows users to change their
+system passwords.
+
+%files -n trinity-kdepasswd
+%defattr(-,root,root,-)
+%{tde_bindir}/kdepasswd
+%{tde_tdelibdir}/kcm_useraccount.la
+%{tde_tdelibdir}/kcm_useraccount.so
+%{tde_tdeappdir}/kcm_useraccount.desktop
+%{tde_tdeappdir}/kdepasswd.desktop
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/default1.png
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/default2.png
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/default3.png
+%exclude %{tde_datadir}/apps/[kt]dm/pics/users/root1.png
+%{tde_datadir}/apps/[kt]dm/pics/users/*.png
+%{tde_datadir}/config.kcfg/kcm_useraccount.kcfg
+%{tde_datadir}/config.kcfg/kcm_useraccount_pass.kcfg
+
+%post -n trinity-kdepasswd
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-kdepasswd
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-tdeprint
+Summary: print system for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: psutils
+
+%description -n trinity-tdeprint
+This package contains the TDE printing subsystem. It can use CUPS,
+lpd-ng or the traditional lpd. It also includes support for fax and
+pdf printing.
+
+Installation of smbclient will make you able to use smb shared printers.
+
+%files -n trinity-tdeprint
+%defattr(-,root,root,-)
+%{tde_bindir}/[kt]deprintfax
+%{tde_bindir}/kjobviewer
+%{tde_bindir}/kprinter
+%{tde_tdelibdir}/kcm_printmgr.la
+%{tde_tdelibdir}/kcm_printmgr.so
+%{tde_tdelibdir}/kio_print.la
+%{tde_tdelibdir}/kio_print.so
+%{tde_tdelibdir}/kjobviewer.la
+%{tde_tdelibdir}/kjobviewer.so
+%{tde_tdelibdir}/kprinter.la
+%{tde_tdelibdir}/kprinter.so
+%{tde_tdelibdir}/lib[kt]deprint_part.la
+%{tde_tdelibdir}/lib[kt]deprint_part.so
+%{tde_libdir}/lib[kt]deinit_kjobviewer.la
+%{tde_libdir}/lib[kt]deinit_kjobviewer.so
+%{tde_libdir}/lib[kt]deinit_kprinter.la
+%{tde_libdir}/lib[kt]deinit_kprinter.so
+%{tde_tdeappdir}/[kt]deprintfax.desktop
+%{tde_tdeappdir}/[kt]jobviewer.desktop
+%{tde_tdeappdir}/printers.desktop
+%{tde_datadir}/apps/[kt]deprint/
+%{tde_datadir}/apps/[kt]deprintfax/
+%{tde_datadir}/apps/[kt]jobviewer/
+%{tde_datadir}/apps/[kt]deprint_part/kdeprint_part.rc
+%{tde_datadir}/icons/hicolor/*/apps/kdeprintfax.png
+%{tde_datadir}/icons/hicolor/*/apps/kjobviewer.png
+%{tde_datadir}/icons/hicolor/*/apps/printmgr.png
+%{tde_datadir}/icons/hicolor/scalable/apps/kdeprintfax.svgz
+%{tde_datadir}/icons/hicolor/scalable/apps/kjobviewer.svgz
+%{tde_datadir}/icons/hicolor/scalable/apps/printmgr.svgz
+%{tde_datadir}/mimelnk/print/class.desktop
+%{tde_datadir}/mimelnk/print/driver.desktop
+%{tde_datadir}/mimelnk/print/folder.desktop
+%{tde_datadir}/mimelnk/print/jobs.desktop
+%{tde_datadir}/mimelnk/print/manager.desktop
+%{tde_datadir}/mimelnk/print/printer.desktop
+%{tde_datadir}/mimelnk/print/printermodel.desktop
+%{tde_datadir}/services/kdeprint_part.desktop
+%{tde_datadir}/services/print.protocol
+%{tde_datadir}/services/printdb.protocol
+%{tde_tdedocdir}/HTML/en/[kt]deprint/
+
+%post -n trinity-tdeprint
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-tdeprint
+/sbin/ldconfig || :
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kdesktop
+Summary: miscellaneous binaries and files for the TDE desktop
+Group: Applications/Utilities
+Requires: %{name}-bin = %{version}-%{release}
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-libkonq = %{version}-%{release}
+Requires: eject
+%if 0%{?rhel} >= 5 || 0%{?fedora} || 0%{?mgaversion} || 0%{?mdkversion}
+Requires: xdg-utils
+%endif
+
+%description -n trinity-kdesktop
+This package contains miscellaneous binaries and files integral to
+the TDE desktop.
+
+%files -n trinity-kdesktop
+%defattr(-,root,root,-)
+%{tde_datadir}/config/kdesktop_custom_menu1
+%{tde_datadir}/config/kdesktop_custom_menu2
+%{tde_bindir}/kcheckrunning
+%{tde_bindir}/kxdglauncher
+%{tde_bindir}/kdeeject
+%{tde_bindir}/kdesktop
+%{tde_bindir}/kdesktop_lock
+%{tde_bindir}/kwebdesktop
+%{tde_tdelibdir}/kdesktop.la
+%{tde_tdelibdir}/kdesktop.so
+%{tde_libdir}/lib[kt]deinit_kdesktop.la
+%{tde_libdir}/lib[kt]deinit_kdesktop.so
+%{tde_datadir}/apps/kdesktop/
+%{tde_datadir}/apps/konqueror/servicemenus/kdesktopSetAsBackground.desktop
+%{tde_datadir}/autostart/kdesktop.desktop
+%{tde_datadir}/config.kcfg/kdesktop.kcfg
+%{tde_datadir}/config.kcfg/klaunch.kcfg
+%{tde_datadir}/config.kcfg/kwebdesktop.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/error.png
+
+%post -n trinity-kdesktop
+/sbin/ldconfig || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kdesktop
+/sbin/ldconfig || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kdesktop-devel
+Summary: Development files for kdesktop
+Group: Development/Libraries
+Requires: trinity-kdesktop = %{version}-%{release}
+
+%description -n trinity-kdesktop-devel
+%{summary}
+
+%files -n trinity-kdesktop-devel
+%{tde_tdeincludedir}/KBackgroundIface.h
+%{tde_tdeincludedir}/KDesktopIface.h
+%{tde_tdeincludedir}/KScreensaverIface.h
+
+##########
+
+%package -n trinity-tdm
+Summary: X Display manager for TDE
+Group: Applications/Utilities
+Requires: %{name}-bin = %{version}-%{release}
+Requires: %{name}-data = %{version}-%{release}
+Requires: pam
+
+# Provides the global Xsession script (/etc/X11/xinit/Xsession or /etc/X11/Xsession)
+%if 0%{?mgaversion} || 0%{?mdkversion} || 0%{?rhel} == 4
+Requires: xinitrc
+%endif
+%if 0%{?suse_version}
+Requires: xdm
+%endif
+%if 0%{?rhel} >= 5 || 0%{?fedora}
+Requires: xorg-x11-xinit
+%endif
+
+# Required for Fedora LiveCD
+Provides: service(graphical-login)
+
+%description -n trinity-tdm
+tdm manages a collection of X servers, which may be on the local host or
+remote machines. It provides services similar to those provided by init,
+getty, and login on character-based terminals: prompting for login name and
+password, authenticating the user, and running a session. tdm supports XDMCP
+(X Display Manager Control Protocol) and can also be used to run a chooser
+process which presents the user with a menu of possible hosts that offer
+XDMCP display management.
+
+A collection of icons to associate with individual users is included with
+TDE, but as part of the kdepasswd package.
+
+The menu package will help to provide TDM with a list of window managers
+that can be launched, if the window manager does not register with TDM
+already. Most users won't need this.
+
+%files -n trinity-tdm
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/kgreet_pam.la
+%{tde_tdelibdir}/kgreet_pam.so
+%{tde_bindir}/gen[kt]dmconf
+%{tde_bindir}/[kt]dm
+%{tde_bindir}/[kt]dm_config
+%{tde_bindir}/[kt]dmctl
+%{tde_bindir}/[kt]dm_greet
+%{tde_bindir}/krootimage
+%{tde_datadir}/apps/[kt]dm/pics/kdelogo.png
+%{tde_datadir}/apps/[kt]dm/pics/kdelogo-crystal.png
+%{tde_datadir}/apps/[kt]dm/pics/shutdown.jpg
+%{tde_datadir}/apps/[kt]dm/pics/users/default1.png
+%{tde_datadir}/apps/[kt]dm/pics/users/default2.png
+%{tde_datadir}/apps/[kt]dm/pics/users/default3.png
+%{tde_datadir}/apps/[kt]dm/pics/users/root1.png
+%{tde_datadir}/apps/[kt]dm/sessions/*.desktop
+%{tde_datadir}/apps/[kt]dm/themes/
+%{tde_datadir}/config/[kt]dm/
+%{tde_tdedocdir}/HTML/en/[kt]dm/
+%if 0%{?suse_version} == 0
+%{_sysconfdir}/pam.d/kdm-trinity
+%{_sysconfdir}/pam.d/kdm-trinity-np
+%endif
+
+# Distribution specific stuff
+%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
+%{_usr}/share/xsessions/tde.desktop
+%endif
+
+# https://wiki.mageia.org/en/How_to_add_a_new_Window_Manager_or_Display_Manager
+%if 0%{?mgaversion} || 0%{?mdkversion}
+%{_sysconfdir}/X11/wmsession.d/45TDE
+%{_datadir}/X11/dm.d/45TDE.conf
+%endif
+
+##########
+
+%package -n trinity-tdm-devel
+Summary: Development files for tdm
+Group: Development/Libraries
+Requires: trinity-tdm = %{version}-%{release}
+
+%description -n trinity-tdm-devel
+%{summary}
+
+%files -n trinity-tdm-devel
+%{tde_tdeincludedir}/kgreeterplugin.h
+
+##########
+
+%package -n trinity-kfind
+Summary: file-find utility for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kfind
+kfind can be used to find files and directories on your
+workstations.
+
+%files -n trinity-kfind
+%defattr(-,root,root,-)
+%{tde_bindir}/kfind
+%{tde_tdelibdir}/libkfindpart.la
+%{tde_tdelibdir}/libkfindpart.so
+%{tde_tdeappdir}/Kfind.desktop
+%{tde_datadir}/apps/kfindpart/
+%{tde_datadir}/icons/hicolor/*/apps/kfind.png
+%{tde_datadir}/services/kfindpart.desktop
+%{tde_datadir}/servicetypes/findpart.desktop
+%{tde_tdedocdir}/HTML/en/kfind/
+
+%post -n trinity-kfind
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kfind
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-khelpcenter
+Summary: help center for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: htdig
+
+%description -n trinity-khelpcenter
+The TDE Help Center provides documentation on how to use the KDE desktop.
+
+The htdig package is needed to build a searchable archive of TDE
+documentation.
+
+%files -n trinity-khelpcenter
+%defattr(-,root,root,-)
+%{tde_bindir}/khc_beagle_index.pl
+%{tde_bindir}/khc_beagle_search.pl
+%{tde_bindir}/khc_docbookdig.pl
+%{tde_bindir}/khc_htdig.pl
+%{tde_bindir}/khc_htsearch.pl
+%{tde_bindir}/khc_indexbuilder
+%{tde_bindir}/khc_mansearch.pl
+%{tde_bindir}/khelpcenter
+%{tde_tdelibdir}/khelpcenter.la
+%{tde_tdelibdir}/khelpcenter.so
+%{tde_libdir}/lib[kt]deinit_khelpcenter.la
+%{tde_libdir}/lib[kt]deinit_khelpcenter.so
+%{tde_tdeappdir}/Help.desktop
+%{tde_datadir}/apps/khelpcenter/
+%{tde_datadir}/config.kcfg/khelpcenter.kcfg
+%{tde_datadir}/icons/hicolor/*/apps/khelpcenter.*
+%{tde_datadir}/services/khelpcenter.desktop
+%{tde_tdedocdir}/HTML/en/khelpcenter/
+
+%post -n trinity-khelpcenter
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-khelpcenter
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kicker
+Summary: desktop panel for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kicker
+Kicker provides the TDE panel on you desktop. It can be used as a
+program launcher and can load plugins to provide additional
+functionality.
+
+%files -n trinity-kicker
+%defattr(-,root,root,-)
+%{tde_bindir}/appletproxy
+%{tde_bindir}/extensionproxy
+%{tde_bindir}/kasbar
+%{tde_bindir}/kicker
+%{tde_libdir}/kconf_update_bin/kicker-3.4-reverseLayout
+%{tde_tdelibdir}/appletproxy.la
+%{tde_tdelibdir}/appletproxy.so
+%{tde_tdelibdir}/clock_panelapplet.la
+%{tde_tdelibdir}/clock_panelapplet.so
+%{tde_tdelibdir}/dockbar_panelextension.la
+%{tde_tdelibdir}/dockbar_panelextension.so
+%{tde_tdelibdir}/extensionproxy.la
+%{tde_tdelibdir}/extensionproxy.so
+%{tde_tdelibdir}/kasbar_panelextension.la
+%{tde_tdelibdir}/kasbar_panelextension.so
+%{tde_tdelibdir}/kicker.la
+%{tde_tdelibdir}/kickermenu_find.la
+%{tde_tdelibdir}/kickermenu_find.so
+%{tde_tdelibdir}/kickermenu_kate.so
+%{tde_tdelibdir}/kickermenu_kate.la
+%{tde_tdelibdir}/kickermenu_[kt]deprint.la
+%{tde_tdelibdir}/kickermenu_[kt]deprint.so
+%{tde_tdelibdir}/kickermenu_konqueror.la
+%{tde_tdelibdir}/kickermenu_konqueror.so
+%{tde_tdelibdir}/kickermenu_konsole.la
+%{tde_tdelibdir}/kickermenu_konsole.so
+%{tde_tdelibdir}/kickermenu_prefmenu.la
+%{tde_tdelibdir}/kickermenu_prefmenu.so
+%{tde_tdelibdir}/kickermenu_recentdocs.la
+%{tde_tdelibdir}/kickermenu_recentdocs.so
+%{tde_tdelibdir}/kickermenu_remotemenu.la
+%{tde_tdelibdir}/kickermenu_remotemenu.so
+%{tde_tdelibdir}/kickermenu_systemmenu.la
+%{tde_tdelibdir}/kickermenu_systemmenu.so
+%{tde_tdelibdir}/kicker.so
+%{tde_tdelibdir}/launcher_panelapplet.la
+%{tde_tdelibdir}/launcher_panelapplet.so
+%{tde_tdelibdir}/lockout_panelapplet.la
+%{tde_tdelibdir}/lockout_panelapplet.so
+%{tde_tdelibdir}/media_panelapplet.la
+%{tde_tdelibdir}/media_panelapplet.so
+%{tde_tdelibdir}/menu_panelapplet.la
+%{tde_tdelibdir}/menu_panelapplet.so
+%{tde_tdelibdir}/minipager_panelapplet.la
+%{tde_tdelibdir}/minipager_panelapplet.so
+%{tde_tdelibdir}/naughty_panelapplet.la
+%{tde_tdelibdir}/naughty_panelapplet.so
+%{tde_tdelibdir}/run_panelapplet.la
+%{tde_tdelibdir}/run_panelapplet.so
+%{tde_tdelibdir}/sidebar_panelextension.la
+%{tde_tdelibdir}/sidebar_panelextension.so
+%{tde_tdelibdir}/systemtray_panelapplet.la
+%{tde_tdelibdir}/systemtray_panelapplet.so
+%{tde_tdelibdir}/taskbar_panelapplet.la
+%{tde_tdelibdir}/taskbar_panelapplet.so
+%{tde_tdelibdir}/taskbar_panelextension.la
+%{tde_tdelibdir}/taskbar_panelextension.so
+%{tde_tdelibdir}/trash_panelapplet.la
+%{tde_tdelibdir}/trash_panelapplet.so
+%{tde_libdir}/libkasbar.so.*
+%{tde_libdir}/lib[kt]deinit_appletproxy.la
+%{tde_libdir}/lib[kt]deinit_appletproxy.so
+%{tde_libdir}/lib[kt]deinit_extensionproxy.la
+%{tde_libdir}/lib[kt]deinit_extensionproxy.so
+%{tde_libdir}/lib[kt]deinit_kicker.la
+%{tde_libdir}/lib[kt]deinit_kicker.so
+%{tde_libdir}/libkickermain.so.*
+%{tde_libdir}/libtaskbar.so.*
+%{tde_libdir}/libtaskmanager.so.*
+%{tde_libdir}/libkickoffsearch_interfaces.so.*
+%{tde_tdeappdir}/kcmkicker.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_arrangement.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_hiding.desktop
+%{tde_datadir}/applnk/.hidden/kicker_config_menus.desktop
+%{tde_datadir}/apps/clockapplet/pics/lcd.png
+%{tde_datadir}/apps/kconf_update/kicker-3.1-properSizeSetting.pl
+%{tde_datadir}/apps/kconf_update/kicker-3.5-kconfigXTize.pl
+%{tde_datadir}/apps/kconf_update/kicker-3.5-taskbarEnums.pl
+%{tde_datadir}/apps/kconf_update/kickerrc.upd
+%{tde_datadir}/apps/kicker/
+%exclude %{tde_datadir}/apps/kicker/applets/klipper.desktop
+%exclude %{tde_datadir}/apps/kicker/applets/ksysguardapplet.desktop
+%{tde_datadir}/apps/naughtyapplet/pics/naughty-happy.png
+%{tde_datadir}/apps/naughtyapplet/pics/naughty-sad.png
+%{tde_datadir}/autostart/panel.desktop
+%{tde_datadir}/config.kcfg/kickerSettings.kcfg
+%{tde_datadir}/config.kcfg/launcherapplet.kcfg
+%{tde_datadir}/config.kcfg/pagersettings.kcfg
+%{tde_datadir}/config.kcfg/taskbar.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/systemtray.png
+%{tde_datadir}/icons/crystalsvg/*/apps/taskbar.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kbinaryclock.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kdisknav.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kicker.png
+%{tde_datadir}/icons/crystalsvg/*/apps/panel.png
+%{tde_datadir}/icons/crystalsvg/*/apps/runprocesscatcher.png
+%{tde_datadir}/icons/crystalsvg/*/apps/window_list.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kbinaryclock.svgz
+%{tde_datadir}/icons/crystalsvg/*/apps/systemtray.svgz
+%{tde_datadir}/servicetypes/kickoffsearchplugin.desktop
+%{tde_tdedocdir}/HTML/en/kicker/
+
+%post -n trinity-kicker
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-kicker
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kicker-devel
+Summary: Development files for kicker
+Group: Development/Libraries
+Requires: trinity-kicker = %{version}-%{release}
+
+%description -n trinity-kicker-devel
+%{summary}
+
+%files -n trinity-kicker-devel
+%{tde_tdeincludedir}/kickoff-search-plugin.h
+%{tde_tdeincludedir}/kickoffsearchinterface.h
+%{tde_libdir}/libkasbar.la
+%{tde_libdir}/libkasbar.so
+%{tde_libdir}/libkickermain.la
+%{tde_libdir}/libkickermain.so
+%{tde_libdir}/libkickoffsearch_interfaces.la
+%{tde_libdir}/libkickoffsearch_interfaces.so
+%{tde_libdir}/libtaskbar.la
+%{tde_libdir}/libtaskbar.so
+%{tde_libdir}/libtaskmanager.la
+%{tde_libdir}/libtaskmanager.so
+
+%post -n trinity-kicker-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-kicker-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-klipper
+Summary: clipboard utility for Trinity
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-klipper
+klipper provides standard clipboard functions (cut and paste, history
+saving) plus additional features, like the ability to offer actions to
+take dependent on the clipboard contents. For example, it can launch a
+web browser if the clipboard contains a URL.
+
+%files -n trinity-klipper
+%defattr(-,root,root,-)
+%{tde_bindir}/klipper
+%{tde_datadir}/config/klipperrc
+%{tde_tdelibdir}/klipper.la
+%{tde_tdelibdir}/klipper.so
+%{tde_tdelibdir}/klipper_panelapplet.la
+%{tde_tdelibdir}/klipper_panelapplet.so
+%{tde_libdir}/lib[kt]deinit_klipper.la
+%{tde_libdir}/lib[kt]deinit_klipper.so
+%{tde_tdeappdir}/klipper.desktop
+%{tde_datadir}/apps/kconf_update/klipper-1-2.pl
+%{tde_datadir}/apps/kconf_update/klipper-trinity1.sh
+%{tde_datadir}/apps/kconf_update/klipperrc.upd
+%{tde_datadir}/apps/kconf_update/klippershortcuts.upd
+%{tde_datadir}/apps/kicker/applets/klipper.desktop
+%{tde_datadir}/autostart/klipper.desktop
+%{tde_datadir}/icons/hicolor/*/apps/klipper.*
+%{tde_tdedocdir}/HTML/en/klipper/
+
+%post -n trinity-klipper
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-klipper
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kmenuedit
+Summary: menu editor for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kmenuedit
+The TDE menu editor allows you to make customisations to the KDE menu
+structure.
+
+%files -n trinity-kmenuedit
+%defattr(-,root,root,-)
+%{tde_bindir}/kcontroledit
+%{tde_bindir}/kmenuedit
+%{tde_tdelibdir}/kcontroledit.la
+%{tde_tdelibdir}/kcontroledit.so
+%{tde_tdelibdir}/kmenuedit.la
+%{tde_tdelibdir}/kmenuedit.so
+%{tde_libdir}/lib[kt]deinit_kcontroledit.la
+%{tde_libdir}/lib[kt]deinit_kcontroledit.so
+%{tde_libdir}/lib[kt]deinit_kmenuedit.la
+%{tde_libdir}/lib[kt]deinit_kmenuedit.so
+%{tde_tdeappdir}/kmenuedit.desktop
+%{tde_datadir}/applnk/System/kmenuedit.desktop
+%{tde_datadir}/apps/kcontroledit/
+%{tde_datadir}/apps/kmenuedit/
+%{tde_tdedocdir}/HTML/en/kmenuedit/
+
+%post -n trinity-kmenuedit
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+%postun -n trinity-kmenuedit
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-konqueror
+Summary: TDE's advanced file manager, web browser and document viewer
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-kcontrol = %{version}-%{release}
+Requires: %{name}-kio-plugins = %{version}-%{release}
+Requires: trinity-kdesktop = %{version}-%{release}
+Requires: trinity-kfind = %{version}-%{release}
+Requires: trinity-libkonq = %{version}-%{release}
+
+%description -n trinity-konqueror
+Konqueror is the file manager for the Trinity Desktop Environment.
+It supports basic file management on local UNIX filesystems,
+from simple cut/copy and paste operations to advanced remote
+and local network file browsing.
+
+It is also the canvas for all the latest TDE technology,
+from KIO slaves (which provide mechanisms for file access) to
+component embedding via the KParts object interface, and it
+is one of the most customizable applications available.
+
+Konqueror is an Open Source web browser with HTML4.0 compliance,
+supporting Java applets, JavaScript, CSS1 and (partially) CSS2,
+as well as Netscape plugins (for example, Flash or RealVideo plugins).
+
+It is a universal viewing application, capable of embedding
+read-only viewing components in itself to view documents without
+ever launching another application.
+
+%files -n trinity-konqueror
+%defattr(-,root,root,-)
+%{tde_datadir}/config/konqsidebartng.rc
+%{tde_bindir}/kbookmarkmerger
+%{tde_bindir}/keditbookmarks
+%{tde_bindir}/kfmclient
+%{tde_bindir}/konqueror
+%{tde_tdelibdir}/kcm_history.la
+%{tde_tdelibdir}/kcm_history.so
+%{tde_tdelibdir}/kded_konqy_preloader.la
+%{tde_tdelibdir}/kded_konqy_preloader.so
+%{tde_tdelibdir}/keditbookmarks.la
+%{tde_tdelibdir}/keditbookmarks.so
+%{tde_tdelibdir}/kfmclient.la
+%{tde_tdelibdir}/kfmclient.so
+%{tde_tdelibdir}/konq_aboutpage.la
+%{tde_tdelibdir}/konq_aboutpage.so
+%{tde_tdelibdir}/konq_iconview.la
+%{tde_tdelibdir}/konq_iconview.so
+%{tde_tdelibdir}/konq_listview.la
+%{tde_tdelibdir}/konq_listview.so
+%{tde_tdelibdir}/konq_remoteencoding.la
+%{tde_tdelibdir}/konq_remoteencoding.so
+%{tde_tdelibdir}/konq_shellcmdplugin.la
+%{tde_tdelibdir}/konq_shellcmdplugin.so
+%{tde_tdelibdir}/konq_sidebar.la
+%{tde_tdelibdir}/konq_sidebar.so
+%{tde_tdelibdir}/konq_sidebartree_bookmarks.la
+%{tde_tdelibdir}/konq_sidebartree_bookmarks.so
+%{tde_tdelibdir}/konq_sidebartree_dirtree.la
+%{tde_tdelibdir}/konq_sidebartree_dirtree.so
+%{tde_tdelibdir}/konq_sidebartree_history.la
+%{tde_tdelibdir}/konq_sidebartree_history.so
+%{tde_tdelibdir}/konqsidebar_tree.la
+%{tde_tdelibdir}/konqsidebar_tree.so
+%{tde_tdelibdir}/konqsidebar_web.la
+%{tde_tdelibdir}/konqsidebar_web.so
+%{tde_tdelibdir}/konqueror.la
+%{tde_tdelibdir}/konqueror.so
+%{tde_tdelibdir}/libkhtmlkttsdplugin.la
+%{tde_tdelibdir}/libkhtmlkttsdplugin.so
+%{tde_libdir}/lib[kt]deinit_keditbookmarks.la
+%{tde_libdir}/lib[kt]deinit_keditbookmarks.so
+%{tde_libdir}/lib[kt]deinit_kfmclient.la
+%{tde_libdir}/lib[kt]deinit_kfmclient.so
+%{tde_libdir}/lib[kt]deinit_konqueror.la
+%{tde_libdir}/lib[kt]deinit_konqueror.so
+%{tde_libdir}/libkonqsidebarplugin.so.*
+%{tde_tdeappdir}/Home.desktop
+%{tde_tdeappdir}/kcmhistory.desktop
+%{tde_tdeappdir}/kfmclient.desktop
+%{tde_tdeappdir}/kfmclient_dir.desktop
+%{tde_tdeappdir}/kfmclient_html.desktop
+%{tde_tdeappdir}/kfmclient_war.desktop
+%{tde_tdeappdir}/khtml_filter.desktop
+%{tde_tdeappdir}/konqbrowser.desktop
+%{tde_tdeappdir}/konquerorsu.desktop
+%{tde_datadir}/applnk/.hidden/konqfilemgr.desktop
+%{tde_datadir}/applnk/Internet/keditbookmarks.desktop
+%{tde_datadir}/applnk/konqueror.desktop
+%{tde_datadir}/apps/kconf_update/kfmclient_3_2.upd
+%{tde_datadir}/apps/kconf_update/kfmclient_3_2_update.sh
+%{tde_datadir}/apps/kconf_update/konqsidebartng.upd
+%{tde_datadir}/apps/kconf_update/move_konqsidebartng_entries.sh
+%{tde_datadir}/apps/keditbookmarks/keditbookmarks-genui.rc
+%{tde_datadir}/apps/keditbookmarks/keditbookmarksui.rc
+%{tde_datadir}/apps/khtml/kpartplugins/khtmlkttsd.desktop
+%{tde_datadir}/apps/khtml/kpartplugins/khtmlkttsd.rc
+%{tde_datadir}/apps/konqiconview/
+%{tde_datadir}/apps/konqlistview/
+%exclude %{tde_datadir}/apps/konqsidebartng/virtual_folders/services/fonts.desktop
+%{tde_datadir}/apps/konqsidebartng/
+%{tde_datadir}/apps/konqueror/about/
+%{tde_datadir}/apps/konqueror/icons/
+%{tde_datadir}/apps/konqueror/konq-simplebrowser.rc
+%{tde_datadir}/apps/konqueror/konqueror.rc
+%{tde_datadir}/apps/konqueror/pics/indicator_connect.png
+%{tde_datadir}/apps/konqueror/pics/indicator_empty.png
+%{tde_datadir}/apps/konqueror/pics/indicator_noconnect.png
+%{tde_datadir}/apps/konqueror/pics/indicator_viewactive.png
+%{tde_datadir}/apps/konqueror/profiles/
+%exclude %{tde_datadir}/apps/konqueror/servicemenus/kdesktopSetAsBackground.desktop
+%exclude %{tde_datadir}/apps/konqueror/servicemenus/konsolehere.desktop
+%exclude %{tde_datadir}/apps/konqueror/servicemenus/installfont.desktop
+%{tde_datadir}/apps/konqueror/servicemenus/*.desktop
+%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase
+%{tde_datadir}/apps/konqueror/tiles/*.png
+%{tde_datadir}/autostart/konqy_preload.desktop
+%{tde_datadir}/config.kcfg/keditbookmarks.kcfg
+%{tde_datadir}/config.kcfg/konq_listview.kcfg
+%{tde_datadir}/config.kcfg/konqueror.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/keditbookmarks.png
+%{tde_datadir}/icons/crystalsvg/*/apps/kfm_home.svgz
+%{tde_datadir}/icons/hicolor/*/apps/kfm.png
+%{tde_datadir}/icons/hicolor/*/apps/konqueror.*
+%{tde_datadir}/services/kded/konqy_preloader.desktop
+%{tde_datadir}/services/konq_*.desktop
+%{tde_datadir}/servicetypes/konqaboutpage.desktop
+%{tde_tdedocdir}/HTML/en/konqueror/
+
+%post -n trinity-konqueror
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+%if 0%{?suse_version}
+update-alternatives --install \
+%else
+alternatives --install \
+%endif
+ %{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop \
+ media_safelyremove.desktop_konqueror \
+ %{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase \
+ 10 || :
+
+%postun -n trinity-konqueror
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%preun -n trinity-konqueror
+if [ $1 -eq 0 ]; then
+%if 0%{?suse_version}
+ update-alternatives --remove \
+%else
+ alternatives --remove \
+%endif
+ media_safelyremove.desktop_konqueror \
+ %{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase || :
+fi
+
+##########
+
+%package -n trinity-konqueror-devel
+Summary: Development files for konqueror
+Group: Development/Libraries
+Requires: trinity-konqueror = %{version}-%{release}
+
+%description -n trinity-konqueror-devel
+%{summary}
+
+%files -n trinity-konqueror-devel
+%{tde_tdeincludedir}/konqsidebarplugin.h
+%{tde_tdeincludedir}/KonquerorIface.h
+%{tde_libdir}/libkonqsidebarplugin.la
+%{tde_libdir}/libkonqsidebarplugin.so
+
+%post -n trinity-konqueror-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-konqueror-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-konqueror-nsplugins
+Summary: Netscape plugin support for Konqueror
+Group: Applications/Utilities
+Requires: trinity-konqueror = %{version}-%{release}
+
+%description -n trinity-konqueror-nsplugins
+This package includes support for Netscape plugins in Konqueror.
+
+%files -n trinity-konqueror-nsplugins
+%defattr(-,root,root,-)
+%{tde_bindir}/nspluginscan
+%{tde_bindir}/nspluginviewer
+%{tde_tdelibdir}/kcm_nsplugins.la
+%{tde_tdelibdir}/kcm_nsplugins.so
+%{tde_tdelibdir}/libnsplugin.la
+%{tde_tdelibdir}/libnsplugin.so
+%{tde_tdeappdir}/khtml_plugins.desktop
+%{tde_datadir}/apps/plugin/nspluginpart.rc
+
+%post -n trinity-konqueror-nsplugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+%postun -n trinity-konqueror-nsplugins
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+
+##########
+
+%package -n trinity-konsole
+Summary: X terminal emulator for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-konsole
+Konsole is an X terminal emulation which provides a command-line interface
+(CLI) while using the graphical K Desktop Environment. Konsole helps to
+better organize user's desktop by containing multiple sessions in a single
+window (a less cluttered desktop).
+
+Its advanced features include a simple configuration and the ability to use
+multiple terminal shells in a single window
+
+Using Konsole, a user can open:
+* Linux console sessions
+* Midnight Commander file manager sessions
+* Shell sessions
+* Root consoles sessions
+
+%files -n trinity-konsole
+%defattr(-,root,root,-)
+%{tde_bindir}/konsole
+%{tde_tdelibdir}/kcm_konsole.la
+%{tde_tdelibdir}/kcm_konsole.so
+%{tde_tdelibdir}/kded_kwrited.la
+%{tde_tdelibdir}/kded_kwrited.so
+%{tde_tdelibdir}/konsole.la
+%{tde_tdelibdir}/konsole.so
+%{tde_tdelibdir}/libkonsolepart.la
+%{tde_tdelibdir}/libkonsolepart.so
+%{tde_libdir}/lib[kt]deinit_konsole.la
+%{tde_libdir}/lib[kt]deinit_konsole.so
+%{tde_tdeappdir}/konsole.desktop
+%{tde_tdeappdir}/konsolesu.desktop
+%{tde_datadir}/applnk/.hidden/kcmkonsole.desktop
+%{tde_datadir}/apps/kconf_update/konsole.upd
+%{tde_datadir}/apps/kconf_update/schemaStrip.pl
+%{tde_datadir}/apps/konqueror/servicemenus/konsolehere.desktop
+%{tde_datadir}/apps/konsole/
+%{tde_datadir}/icons/hicolor/*/apps/konsole.*
+%{tde_datadir}/mimelnk/application/x-konsole.desktop
+%{tde_datadir}/services/kded/kwrited.desktop
+%{tde_datadir}/services/konsolepart.desktop
+%{tde_datadir}/services/konsole-script.desktop
+%{tde_datadir}/services/kwrited.desktop
+%{tde_datadir}/servicetypes/terminalemulator.desktop
+%{tde_tdedocdir}/HTML/en/konsole/
+%{tde_tdedocdir}/HTML/en/kcontrol/kcmkonsole/
+
+%post -n trinity-konsole
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-konsole
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-kpager
+Summary: desktop pager for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kpager
+This package contains TDE's desktop pager, which displays your virtual
+desktops iconically in a window, along with icons of any running
+applications. It is used to switch between applications or desktops.
+
+%files -n trinity-kpager
+%defattr(-,root,root,-)
+%{tde_bindir}/kpager
+%{tde_tdeappdir}/kpager.desktop
+%{tde_datadir}/applnk/Utilities/kpager.desktop
+%{tde_datadir}/icons/hicolor/*/apps/kpager.png
+%{tde_tdedocdir}/HTML/en/kpager/
+
+%post -n trinity-kpager
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kpager
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-kpersonalizer
+Summary: installation personalizer for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-kpersonalizer
+TDE Personalizer is the application that configures the TDE desktop for you.
+It's a very useful wizard that allows you to quickly change the TDE desktop to
+suit your own needs. When you run TDE for the first time, KPersonalizer is
+automatically started. KPersonalizer can also be called later.
+
+%files -n trinity-kpersonalizer
+%defattr(-,root,root,-)
+%{tde_bindir}/kpersonalizer
+%{tde_tdeappdir}/kpersonalizer.desktop
+%{tde_datadir}/applnk/System/kpersonalizer.desktop
+%{tde_datadir}/apps/kpersonalizer/
+%{tde_datadir}/icons/crystalsvg/*/apps/kpersonalizer.png
+
+%post -n trinity-kpersonalizer
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-kpersonalizer
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-ksmserver
+Summary: session manager for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-twin = %{version}-%{release}
+
+%description -n trinity-ksmserver
+This package contains the KDE session manager. It is responsible for
+restoring your TDE session on login. It is also needed to properly
+start a KDE session. It registers KDE with X display managers, and
+provides the 'starttde' command, for starting an X session with KDE
+from the console.
+
+If you are running TDE for the first time for a certain user,
+kpersonalizer is used to help with setup. If it is not present,
+KDE will start, but many good defaults will not be set.
+
+%files -n trinity-ksmserver
+%defattr(-,root,root,-)
+%{tde_bindir}/ksmserver
+%{tde_bindir}/start[kt]de
+%{tde_tdelibdir}/ksmserver.la
+%{tde_tdelibdir}/ksmserver.so
+%{tde_libdir}/lib[kt]deinit_ksmserver.la
+%{tde_libdir}/lib[kt]deinit_ksmserver.so
+%{tde_datadir}/apps/kconf_update/ksmserver.upd
+%{tde_datadir}/apps/kconf_update/move_session_config.sh
+%{tde_datadir}/apps/ksmserver/pics/shutdownkonq.png
+
+# Remove conflicts with redhat-menus
+%if "%{?tde_prefix}" != "/usr"
+%{tde_bindir}/plasma-desktop
+%endif
+
+%post -n trinity-ksmserver
+/sbin/ldconfig || :
+
+%postun -n trinity-ksmserver
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksplash
+Summary: the TDE splash screen
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-ksplash
+This package includes the TDE Splash screen, which is seen when
+a TDE session is launched.
+
+%files -n trinity-ksplash
+%defattr(-,root,root,-)
+%{tde_bindir}/ksplash
+%{tde_bindir}/ksplashsimple
+%{tde_tdelibdir}/kcm_ksplashthemes.la
+%{tde_tdelibdir}/kcm_ksplashthemes.so
+%{tde_tdelibdir}/ksplashdefault.la
+%{tde_tdelibdir}/ksplashdefault.so
+%{tde_tdelibdir}/ksplashunified.la
+%{tde_tdelibdir}/ksplashunified.so
+%{tde_tdelibdir}/ksplashredmond.la
+%{tde_tdelibdir}/ksplashredmond.so
+%{tde_tdelibdir}/ksplashstandard.la
+%{tde_tdelibdir}/ksplashstandard.so
+%{tde_libdir}/libksplashthemes.so.*
+%{tde_tdeappdir}/ksplashthememgr.desktop
+%{tde_datadir}/apps/ksplash
+%{tde_datadir}/services/ksplashdefault.desktop
+%{tde_datadir}/services/ksplash.desktop
+%{tde_datadir}/services/ksplashunified.desktop
+%{tde_datadir}/services/ksplashredmond.desktop
+%{tde_datadir}/services/ksplashstandard.desktop
+%{tde_datadir}/servicetypes/ksplashplugins.desktop
+%{tde_tdedocdir}/HTML/en/ksplashml/
+
+%post -n trinity-ksplash
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+%postun -n trinity-ksplash
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksplash-devel
+Summary: Development files for ksplash
+Group: Development/Libraries
+Requires: trinity-ksplash = %{version}-%{release}
+
+%description -n trinity-ksplash-devel
+%{summary}
+
+%files -n trinity-ksplash-devel
+%{tde_tdeincludedir}/ksplash/*
+%{tde_libdir}/libksplashthemes.la
+%{tde_libdir}/libksplashthemes.so
+
+%post -n trinity-ksplash-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-ksplash-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksysguard
+Summary: system guard for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+Requires: trinity-ksysguardd = %{version}-%{release}
+
+%description -n trinity-ksysguard
+TDE System Guard allows you to monitor various statistics about your
+computer.
+
+%files -n trinity-ksysguard
+%defattr(-,root,root,-)
+%{tde_bindir}/kpm
+%{tde_bindir}/ksysguard
+%{tde_tdelibdir}/sysguard_panelapplet.la
+%{tde_tdelibdir}/sysguard_panelapplet.so
+%{tde_libdir}/libksgrd.so.*
+%{tde_tdeappdir}/ksysguard.desktop
+%{tde_datadir}/apps/kicker/applets/ksysguardapplet.desktop
+%{tde_datadir}/apps/ksysguard/
+%{tde_datadir}/icons/crystalsvg/*/apps/ksysguard.png
+%{tde_datadir}/mimelnk/application/x-ksysguard.desktop
+%{tde_tdedocdir}/HTML/en/ksysguard/
+
+%post -n trinity-ksysguard
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-ksysguard
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksysguard-devel
+Summary: Development files for ksysguard
+Group: Development/Libraries
+Requires: trinity-ksysguard = %{version}-%{release}
+
+%description -n trinity-ksysguard-devel
+%{summary}
+
+%files -n trinity-ksysguard-devel
+%{tde_tdeincludedir}/ksgrd/*
+%{tde_libdir}/libksgrd.la
+%{tde_libdir}/libksgrd.so
+
+%post -n trinity-ksysguard-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-ksysguard-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-ksysguardd
+Summary: system guard daemon for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-ksysguardd
+TDE System Guard Daemon is the daemon part of ksysguard. The daemon can
+be installed on a remote machine to enable ksysguard on another machine
+to monitor it through the daemon running there.
+
+%files -n trinity-ksysguardd
+%defattr(-,root,root,-)
+%{tde_bindir}/ksysguardd
+%config(noreplace) %{_sysconfdir}/ksysguarddrc.tde
+
+%post -n trinity-ksysguardd
+# Dirty hack to install '/etc/ksysguarddrc' alongside with KDE4
+[ -r "%{_sysconfdir}/ksysguarddrc" ] || cp -f "%{_sysconfdir}/ksysguarddrc.tde" "%{_sysconfdir}/ksysguarddrc"
+
+##########
+
+%package -n trinity-ktip
+Summary: useful tips for TDE
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-ktip
+ktip provides many useful tips on using KDE when you log in.
+
+%files -n trinity-ktip
+%defattr(-,root,root,-)
+%{tde_bindir}/ktip
+%{tde_tdeappdir}/ktip.desktop
+%{tde_datadir}/applnk/Toys/ktip.desktop
+%{tde_datadir}/apps/kdewizard/pics/wizard_small.png
+%{tde_datadir}/apps/kdewizard/tips/
+%{tde_datadir}/autostart/ktip.desktop
+%{tde_datadir}/icons/hicolor/*/apps/ktip.*
+
+%post -n trinity-ktip
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+%postun -n trinity-ktip
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in hicolor ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+
+##########
+
+%package -n trinity-twin
+Summary: the TDE window manager
+Group: Applications/Utilities
+Requires: %{name}-data = %{version}-%{release}
+
+%description -n trinity-twin
+This package contains the default X window manager for KDE.
+
+%files -n trinity-twin
+%defattr(-,root,root,-)
+%{tde_bindir}/kompmgr
+%{tde_bindir}/[kt]win
+%{tde_bindir}/[kt]win_killer_helper
+#%{tde_bindir}/[kt]win_resumer_helper
+%{tde_bindir}/[kt]win_rules_dialog
+%{tde_libdir}/kconf_update_bin/[kt]win_update_default_rules
+%{tde_libdir}/kconf_update_bin/[kt]win_update_window_settings
+%{tde_tdelibdir}/kcm_[kt]win*.la
+%{tde_tdelibdir}/kcm_[kt]win*.so
+%{tde_tdelibdir}/[kt]win*.la
+%{tde_tdelibdir}/[kt]win*.so
+%{tde_libdir}/lib[kt]decorations.so.*
+%{tde_libdir}/lib[kt]deinit_[kt]win_rules_dialog.la
+%{tde_libdir}/lib[kt]deinit_[kt]win_rules_dialog.so
+%{tde_libdir}/lib[kt]deinit_[kt]win.la
+%{tde_libdir}/lib[kt]deinit_[kt]win.so
+%{tde_tdeappdir}/showdesktop.desktop
+%{tde_tdeappdir}/[kt]windecoration.desktop
+%{tde_tdeappdir}/[kt]winoptions.desktop
+%{tde_tdeappdir}/[kt]winrules.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winactions.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winadvanced.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winfocus.desktop
+%{tde_datadir}/applnk/.hidden/[kt]winmoving.desktop
+%{tde_datadir}/applnk/.hidden/[kt]wintranslucency.desktop
+%{tde_datadir}/apps/kconf_update/[kt]win3_plugin.pl
+%{tde_datadir}/apps/kconf_update/[kt]win3_plugin.upd
+%{tde_datadir}/apps/kconf_update/[kt]win_focus1.sh
+%{tde_datadir}/apps/kconf_update/[kt]win_focus1.upd
+%{tde_datadir}/apps/kconf_update/[kt]win_focus2.sh
+%{tde_datadir}/apps/kconf_update/[kt]win_focus2.upd
+%{tde_datadir}/apps/kconf_update/[kt]win_fsp_workarounds_1.upd
+%{tde_datadir}/apps/kconf_update/[kt]winiconify.upd
+%{tde_datadir}/apps/kconf_update/[kt]winsticky.upd
+%{tde_datadir}/apps/kconf_update/[kt]win.upd
+%{tde_datadir}/apps/kconf_update/[kt]winupdatewindowsettings.upd
+%{tde_datadir}/apps/kconf_update/pluginlibFix.pl
+%{tde_datadir}/apps/[kt]win/
+%{tde_datadir}/config.kcfg/[kt]win.kcfg
+%{tde_datadir}/icons/crystalsvg/*/apps/[kt]win.png
+%{tde_tdedocdir}/HTML/en/kompmgr/
+
+%post -n trinity-twin
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+%postun -n trinity-twin
+update-desktop-database %{tde_appdir} 2> /dev/null || :
+for f in crystalsvg ; do
+ touch --no-create %{tde_datadir}/icons/${f} 2> /dev/null || :
+ gtk-update-icon-cache --quiet %{tde_datadir}/icons/${f} 2> /dev/null || :
+done
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-twin-devel
+Summary: Development files for twin
+Group: Development/Libraries
+Requires: trinity-twin = %{version}-%{release}
+
+%description -n trinity-twin-devel
+%{summary}
+
+%files -n trinity-twin-devel
+%{tde_tdeincludedir}/[kt]win/
+%{tde_tdeincludedir}/kcommondecoration.h
+%{tde_tdeincludedir}/kdecoration.h
+%{tde_tdeincludedir}/kdecoration_p.h
+%{tde_tdeincludedir}/kdecoration_plugins_p.h
+%{tde_tdeincludedir}/kdecorationfactory.h
+%{tde_tdeincludedir}/KWinInterface.h
+%{tde_libdir}/libkdecorations.la
+%{tde_libdir}/libkdecorations.so
+
+%post -n trinity-twin-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-twin-devel
+/sbin/ldconfig || :
+
+##########
+
+%package -n trinity-libkonq
+Summary: core libraries for Konqueror
+Group: Environment/Libraries
+
+%description -n trinity-libkonq
+These libraries are used by several TDE applications, most notably
+Konqueror and the kdesktop package.
+
+%files -n trinity-libkonq
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/kded_favicons.la
+%{tde_tdelibdir}/kded_favicons.so
+%{tde_tdelibdir}/konq_sound.la
+%{tde_tdelibdir}/konq_sound.so
+%{tde_libdir}/libkonq.so.*
+%{tde_datadir}/apps/kbookmark/directory_bookmarkbar.desktop
+%{tde_datadir}/apps/kconf_update/favicons.upd
+%{tde_datadir}/apps/kconf_update/move_favicons.sh
+%{tde_datadir}/apps/konqueror/pics/arrow_bottomleft.png
+%{tde_datadir}/apps/konqueror/pics/arrow_bottomright.png
+%{tde_datadir}/apps/konqueror/pics/arrow_topleft.png
+%{tde_datadir}/apps/konqueror/pics/arrow_topright.png
+%{tde_datadir}/apps/konqueror/pics/thumbnailfont_7x4.png
+%{tde_datadir}/services/kded/favicons.desktop
+%{tde_datadir}/servicetypes/konqpopupmenuplugin.desktop
+
+%post -n trinity-libkonq
+/sbin/ldconfig || :
+
+%postun -n trinity-libkonq
+/sbin/ldconfig || :
+
+##########
+
+%package libtqt3-integration
+Summary: Integration library between TQt3 and TDE
+Group: Environment/Libraries
+
+Obsoletes: tdebase-libtqt3-integration < %{version}-%{release}
+Provides: tdebase-libtqt3-integration = %{version}-%{release}
+
+%description libtqt3-integration
+These libraries allow you to use TDE dialogs in native TQt3 applications.
+
+%files libtqt3-integration
+%defattr(-,root,root,-)
+%{tde_tdelibdir}/plugins/integration/libqtkde.la
+%{tde_tdelibdir}/plugins/integration/libqtkde.so
+%{tde_tdelibdir}/plugins/integration/libqtkde.so.*
+%{tde_tdelibdir}/kded_kdeintegration.la
+%{tde_tdelibdir}/kded_kdeintegration.so
+%{tde_datadir}/services/kded/kdeintegration.desktop
+
+##########
+
+%package -n trinity-libkonq-devel
+Summary: development files for Konqueror's core libraries
+Group: Development/Libraries
+Requires: trinity-libkonq = %{version}-%{release}
+
+%description -n trinity-libkonq-devel
+This package contains headers and other development files for the core
+Konqueror libraries.
+
+%files -n trinity-libkonq-devel
+%defattr(-,root,root,-)
+%{tde_tdeincludedir}/kfileivi.h
+%{tde_tdeincludedir}/kivdirectoryoverlay.h
+%{tde_tdeincludedir}/knewmenu.h
+%{tde_tdeincludedir}/konqbookmarkmanager.h
+%{tde_tdeincludedir}/konq_*.h
+%{tde_tdeincludedir}/libkonq_export.h
+%{tde_libdir}/libkonq.la
+%{tde_libdir}/libkonq.so
+
+%post -n trinity-libkonq-devel
+/sbin/ldconfig || :
+
+%postun -n trinity-libkonq-devel
+/sbin/ldconfig || :
+
+##########
+
+%if 0%{?suse_version}
+%debug_package
+%endif
+
+##########
+
+%prep
+%setup -q -n kdebase
+%__tar xfz %{SOURCE6} -C kicker/data/tiles
+
+%patch2 -p1
+%patch7 -p1
+%patch8 -p1
+%patch9 -p1
+
+%patch10 -p1
+%patch11 -p1
+%patch12 -p1
+%if 0%{?rhel} == 4 || 0%{?suse_version}
+%patch66 -p1 -b .Xsession
+%endif
+%if 0%{?rhel} >= 5|| 0%{?fedora}
+%patch13 -p1 -b .Xsession
+%endif
+%patch14 -p1
+%patch15 -p1
+%patch16 -p1
+
+%patch20 -p4
+%if 0%{?rhel} || 0%{?mgaversion} || 0%{?mdkversion}
+%patch21 -p1 -b .man
+%endif
+%patch22 -p1
+%patch23 -p1
+%patch24 -p4
+%patch25 -p1
+%patch26 -p1
+%patch27 -p0
+%patch28 -p0
+%patch29 -p0
+%patch30 -p1
+%patch31 -p1
+%patch32 -p1
+%patch33 -p1
+%patch34 -p1
+%patch35 -p1
+%patch36 -p1
+%patch37 -p1
+%patch38 -p1
+%patch39 -p1
+%patch40 -p1
+%patch41 -p1
+%patch42 -p1
+%patch43 -p1
+%patch44 -p1
+%patch45 -p1
+%patch46 -p1
+%patch47 -p0
+%patch48 -p1
+%patch49 -p1
+%patch50 -p1
+%patch51 -p1
+%patch52 -p1
+%patch53 -p1
+%patch54 -p1
+%patch55 -p1
+%patch56 -p1
+%patch57 -p1
+%patch58 -p1
+%patch59 -p1
+%patch60 -p1
+%patch61 -p1
+%patch62 -p1
+%patch63 -p1 -b .tooltips
+%patch64 -p1 -b .tsak
+%patch65 -p1 -b .dbustsak
+%patch67 -p1 -b .dbus
+
+%patch100 -p1
+%patch101 -p1 -b .tsak
+
+
+%if 0%{?rhel} == 4
+%patch201 -p1 -b .libdetect
+%patch202 -p1 -b .dbustqt
+%patch203 -p1 -b .consolekit
+%patch204 -p1 -b .composite
+%patch205 -p1 -b .hal04
+%patch206 -p1 -b .rhel4
+%endif
+
+# Applies an optional distro-specific graphical theme
+%if "%{?tde_bg}" != ""
+# KDM Background
+%__sed -i "kdm/kfrontend/genkdmconf.c" \
+ -e 's|"Wallpaper=isadora.png\n"|"Wallpaper=%{tde_bg}\n"|'
+
+# TDE user default background
+%__sed -i "kpersonalizer/keyecandypage.cpp" \
+ -e 's|#define DEFAULT_WALLPAPER "isadora.png"|#define DEFAULT_WALLPAPER "%{tde_bg}"|'
+%__sed -i "startkde" \
+ -e 's|/usr/share/wallpapers/isadora.png.desktop|%{tde_bg}|' \
+ -e 's|Wallpaper=isadora.png|Wallpaper=%{tde_bg}|'
+%endif
+
+# TDE branding: removes KUbuntu references [Bug #617]
+%__sed -i "kcontrol/kdm/kdm-appear.cpp" \
+ -e "s|Welcome to Kubuntu |Welcome to %{tde_aboutlabel} |"
+%__sed -i "konqueror/about/konq_aboutpage.cc" \
+ -e "s|About Kubuntu|About %{tde_aboutlabel}|" \
+ -e "s|help:/kubuntu/|%{tde_aboutpage}|" \
+ -e "s|Kubuntu Documentation|%{tde_aboutlabel} Documentation|"
+%__sed -i "konqueror/about/launch.html" \
+ -e "s|help:/kubuntu/about-kubuntu/index.html|%{tde_aboutpage}|"
+%__sed -i "kdm/config.def" \
+ -e "s|Welcome to Trinity |Welcome to %{tde_aboutlabel} |"
+
+# TDE default directory in 'startkde' script (KDEDIR)
+%__sed -i "startkde" \
+ -e "s|/opt/trinity|%{tde_prefix}|g"
+
+# TDE default start button icon
+%__sed -i "startkde" \
+ -e "s|%%{tde_starticon}|%{tde_starticon}|g"
+
+
+%build
+unset QTDIR || : ; . /etc/profile.d/qt3.sh
+export PATH="%{tde_bindir}:${PATH}"
+export PKG_CONFIG_PATH="%{tde_libdir}/pkgconfig"
+export CMAKE_INCLUDE_PATH="%{tde_includedir}:%{tde_includedir}/tqt"
+export LD_LIBRARY_PATH="%{tde_libdir}"
+
+# Avoids building against KDE3's old stuff, if installed
+export KDEDIR=%{tde_prefix}
+
+# Shitty hack for RHEL4 ...
+if [ -d /usr/X11R6 ]; then
+ export CMAKE_INCLUDE_PATH="${CMAKE_INCLUDE_PATH=}:/usr/X11R6/include:/usr/X11R6/%{_lib}"
+ export CFLAGS="${CFLAGS} -I/usr/X11R6/include -L/usr/X11R6/%{_lib}"
+ export CXXFLAGS="${CXXFLAGS} -I/usr/X11R6/include -L/usr/X11R6/%{_lib}"
+fi
+
+%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
+%__mkdir_p build
+cd build
+%endif
+
+%cmake \
+ -DBIN_INSTALL_DIR=%{tde_bindir} \
+ -DINCLUDE_INSTALL_DIR=%{tde_tdeincludedir} \
+ -DLIB_INSTALL_DIR=%{tde_libdir} \
+ -DSHARE_INSTALL_PREFIX=%{tde_datadir} \
+ -DCMAKE_SKIP_RPATH="OFF" \
+ -DWITH_SASL=ON \
+ -DWITH_LDAP=ON \
+ -DWITH_SAMBA=ON \
+ %{?with_exr:-DWITH_OPENEXR=ON} \
+ %{?with_hal:-DWITH_HAL=ON} \
+%if 0%{?rhel} == 4
+ -DWITH_XTEST=OFF \
+ -DWITH_XSCREENSAVER=OFF \
+%else
+ -DWITH_XTEST=ON \
+ -DWITH_XSCREENSAVER=ON \
+%endif
+ -DWITH_XCURSOR=ON \
+ -DWITH_XFIXES=ON \
+ %{?with_xrandr:-DWITH_XRANDR=ON} \
+ -DWITH_XDAMAGE=ON \
+ -DWITH_XEXT=ON \
+ -DWITH_LIBUSB=ON \
+ -DWITH_LIBRAW1394=ON \
+ -DWITH_PAM=ON \
+ -DWITH_XDMCP=ON \
+ -DWITH_XINERAMA=ON \
+ -DWITH_XCOMPOSITE=ON \
+ -DWITH_XRENDER=ON \
+ -DWITH_ARTS=ON \
+ -DWITH_I8K=ON \
+ -DBUILD_ALL=ON \
+ -DKCHECKPASS_PAM_SERVICE="kcheckpass-trinity" \
+%if 0%{?suse_version}
+ -DKDM_PAM_SERVICE="xdm" \
+ -DKSCREENSAVER_PAM_SERVICE="kcheckpass-trinity" \
+%else
+ -DKDM_PAM_SERVICE="kdm-trinity" \
+ -DKSCREENSAVER_PAM_SERVICE="kscreensaver-trinity" \
+%endif
+ %{!?with_tsak:-DBUILD_TSAK=OFF} \
+ ..
+
+%__make %{?_smp_mflags}
+
+
+%install
+%__rm -rf %{?buildroot}
+%__make install DESTDIR=%{?buildroot} -C build
+
+
+# Under RHEL/Fedora/Suse, static 'xsessions' files go to '/usr/share/xsessions'.
+
+# Adds a GDM/KDM/XDM session called 'TDE'
+%if 0%{?rhel} || 0%{?fedora} || 0%{?suse_version}
+%__install -D -m 644 \
+ "%{?buildroot}%{tde_datadir}/apps/kdm/sessions/tde.desktop" \
+ "%{?buildroot}%{_datadir}/xsessions/tde.desktop"
+
+# Force session name to be 'TDE'
+%__sed -i "%{?buildroot}%{_datadir}/xsessions/tde.desktop" \
+ -e "s,^Name=.*,Name=TDE,"
+%endif
+
+# Mageia/Mandriva stores its session file in different folder than RHEL/Fedora
+# Generated files for TDM/KDM4 are in '/usr/share/apps/kdm/sessions'
+%if 0%{?mgaversion} || 0%{?mdkversion}
+%__install -d -m 755 %{?buildroot}%{_sysconfdir}/X11/wmsession.d
+cat <<EOF >"%{?buildroot}%{_sysconfdir}/X11/wmsession.d/45TDE"
+NAME=TDE
+ICON=kde-wmsession.xpm
+DESC=The Trinity Desktop Environment
+EXEC=%{tde_bindir}/startkde
+SCRIPT:
+exec %{tde_bindir}/startkde
+EOF
+
+%__install -d -m 755 %{?buildroot}%{_datadir}/X11/dm.d
+cat <<EOF >"%{?buildroot}%{_datadir}/X11/dm.d/45TDE.conf"
+NAME=TDM
+DESCRIPTION=TDM (Trinity Display Manager)
+PACKAGE=trinity-tdm
+EXEC=%{tde_bindir}/kdm
+FNDSESSION_EXEC="/usr/sbin/chksession -K"
+EOF
+%endif
+
+# Renames '/etc/ksysguarddrc' to avoid conflict with KDE4 'ksysguard'
+%__mv -f \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc \
+ %{?buildroot}%{_sysconfdir}/ksysguarddrc.tde
+
+# TDE 3.5.12: add script "plasma-desktop" to avoid conflict with KDE4
+%if "%{?tde_prefix}" != "/usr"
+%__install -m 755 "%{SOURCE1}" "%{?buildroot}%{tde_bindir}"
+%endif
+
+# PAM configuration files
+%if 0%{?suse_version}
+%__install -D -m 644 "%{SOURCE4}" "%{?buildroot}%{_sysconfdir}/pam.d/kcheckpass-trinity"
+%else
+%__install -D -m 644 "%{SOURCE2}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity"
+%__install -D -m 644 "%{SOURCE3}" "%{?buildroot}%{_sysconfdir}/pam.d/kdm-trinity-np"
+%__install -D -m 644 "%{SOURCE4}" "%{?buildroot}%{_sysconfdir}/pam.d/kcheckpass-trinity"
+%__install -D -m 644 "%{SOURCE5}" "%{?buildroot}%{_sysconfdir}/pam.d/kscreensaver-trinity"
+%endif
+
+# KDM configuration for RHEL/Fedora
+%__sed -i "%{?buildroot}%{tde_datadir}/config/kdm/kdmrc" \
+%if 0%{?fedora} >= 16 || 0%{?suse_version} >= 1220
+ -e "s/^#*MinShowUID=.*/MinShowUID=1000/"
+%else
+ -e "s/^#*MinShowUID=.*/MinShowUID=500/"
+%endif
+
+# Moves the XDG configuration files to TDE directory
+%if "%{tde_prefix}" != "/usr"
+%__mkdir_p "%{?buildroot}%{tde_prefix}/etc"
+%__mv -f "%{?buildroot}%{_sysconfdir}/xdg" "%{?buildroot}%{tde_prefix}/etc"
+%endif
+
+# Symlinks 'usb.ids'
+%if 0%{?suse_version} == 0
+%__rm -f "%{?buildroot}%{tde_datadir}/apps/usb.ids"
+%__ln_s -f "/usr/share/hwdata/usb.ids" "%{?buildroot}%{tde_datadir}/apps/usb.ids"
+%endif
+
+# Makes 'media_safelyremove.desktop' an alternative
+%__mv -f %{buildroot}%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop %{buildroot}%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop_tdebase
+%__ln_s /etc/alternatives/media_safelyremove.desktop_tdebase %{buildroot}%{tde_datadir}/apps/konqueror/servicemenus/media_safelyremove.desktop
+
+
+%clean
+%__rm -rf %{?buildroot}
+
+
+
+
+%changelog
+* Sun Aug 19 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-27
+- Merge with v3.5.13-sru branch, but still using v3.5.13 tdelibs
+- See: http://git.trinitydesktop.org/cgit/tdebase/log/?h=origin/v3.5.13-sru
+- Removes the "tqapp" => "app" renaming from SRU, to keep applications compatibility
+- This is the final update for v3.5.13 . Next release should be 3.5.13.1 .
+
+* Sat Jul 14 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-26
+- Add xscreensaver support to CMake [Bug #659] [Commit #80deb529]
+- Enables 'shadow' support
+- Enables 'i8k' support
+
+* Sun Jul 08 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-25
+- Fix menu crash with disabled search field [Bug #1081] [Commit #0afb2d8a]
+- Makes 'media_safelyremove.desktop' an alternative
+
+* Sun Jul 01 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-24
+- Renames 'tdebase' to 'trinity-tdebase'
+- Update default konqueror maximum image preview size to 10MB. [Commit #03e19305]
+
+* Sun Jun 17 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-23
+- Renames 'trinity-kdebase' to 'tdebase'
+- Split into several packages
+
+* Sat May 05 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-22
+- Adds panel to choose default mounting options for removable storage [Bug #986]
+- Add the ability to reorder documents in kate [Commit #46a657f7]
+- Add drag and drop to kate file list in manual mode [Commit #b0fa10df]
+- Disable keyboard shortcuts for file location moving, as they did not work properly
+ and have very little practical use [Commit #9a948c1a]
+- Fix KHTML smooth scrolling control center option [Bug #1001] [Commit #b45b4bd7]
+- Fix fancy logout not allowing interaction with save dialogs [Bug #922]
+ Fix desktop wallpaper export failing when triggered by krootbacking or ksmserver and konsole or
+ kdesktop_lock not previously loaded [Commit #d2f8fca9]
+
+* Mon Apr 30 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-21
+- Commit the rest of 8d521d0b, not merged due to GIT glitch [Commit #49526413]
+
+* Fri Apr 27 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-20
+- Fix sftp when nonstandard port is specified in ssh config [Bug #897]
+- Start minimal dcop system to support twin in tdm [Commit #66a19439]
+- Update lock process to engage the lock in near real time [Commit #8d521d0b]
+- Fix desktop lock failure due to race condition within signal handler between qt and xcb [Commit #67a3a8f3]
+- Temporary fix for a probable race condition on some systems. [Bug #760] [Commit #d41f5217]
+
+* Tue Apr 24 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-19
+- Build for Fedora 17
+- Fix compilation with GCC 4.7 [Bug #958]
+
+* Mon Apr 23 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-18
+- Ensures that 'pagersettings.kcfg' is installed [Bug #908, Commit bd9c1479]
+- Fix "Malformed URL $( kxdglauncher --getpath xdgname DOCUMENTS )" error dialog.
+- Fix sftp failure on newer systems [Bug #897]
+
+* Sun Apr 01 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-17
+- do not show hostname in titlebar if it's FQDN of localhost [Bug #889]
+- Adds option to disable desktop switch on mouse wheel cycling [Bug #908]
+- Fix Keramik window decoration in KWIN [Bug #905]
+- Fix device icon placement on desktop [Bug #392]
+- Fix security hole in kdesktop_lock
+- Allow minimal managed window interaction inside the lock process [Bug #810]
+- Corrects a potential ABI compat problem
+- Fix kdebase translations in desktop files - part 2 [Bug #890]
+- Kate: fix focus broken when using the --use parameter [Bug #692]
+
+* Sat Jan 21 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-16
+- Fix KDM high CPU usage when inactive [Bug #690]
+- Add keyboard hotplug (add/remove) support to tsak [Bug #587]
+- Replicate LED status from virtual keyboards to physical keyboards [Bug #561]
+
+* Thu Jan 05 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-15
+- Add a KDM option to hide 'Menu' button on login prompt
+- Fix corrupted PNG tiles [Bug #298]
+- Adds 'xtest' support
+
+* Mon Jan 02 2012 Francois Andriot <francois.andriot@free.fr> - 3.5.13-14
+- Fix Konqueror Icon Activation Effect [Bug #335]
+- Restores the "Keep password" check box to the kdesu dialog box [Bug #388]
+- Repair KPersonalizer settings to match system defaults [Bug #759]
+- Restores the original KDE3 clock [Bug #387]
+- Implement X11 event merging in krandrtray [Bug #758]
+- Fix multihead screen locking [Bug #669]
+
+* Mon Dec 12 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-13
+- Fix variables (again)
+
+* Sun Dec 11 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-12
+- Fix KDEDIRS and other variables in 'startkde', that messes up translations. [Bug #741]
+
+* Sat Dec 10 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-11
+- Fix error message 'cannot find parent folder' on konqueror sidebar. [Bug #723]
+
+* Sat Dec 03 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-10
+- Removes Kubuntu branding [Bug #449]
+- Re-enables 'open tab in background' konqueror feature [Bug #245]
+
+* Wed Nov 29 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-9
+- Fix 'kio_man' on RHEL 5 and RHEL 6 [Bug #714]
+- Restores the 'number of files' and sorting widgets to the Kate configuration [Bug #244]
+
+* Fri Nov 18 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-8
+- Updates Kickoff menu Fix [Bugs #281, #508]
+- Adds KDM gcrypt dependency
+
+* Sun Nov 13 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-7
+- Add distribution-specific start button icon
+
+* Sat Nov 12 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-6
+- Add graphical theme for RHEL 5, RHEL 6, Fedora 15, Fedora 16
+- Moves XDG files in TDE prefix to avoid conflict with distro-provided KDE
+
+* Fri Nov 11 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-5
+- Add "service(graphical-login)"
+- Add kickoff menu fix [Bug #508]
+- kdmrc: sets "MinShowUID=500"
+
+* Tue Nov 08 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-4
+- Fix FTBFS with dbus-tqt
+
+* Thu Nov 03 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-3
+- Add missing BuildRequires
+
+* Tue Nov 01 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-2
+- Add 'patch8' to fix LD_PRELOAD variable set by 'startkde' under x86_64
+
+* Sun Oct 30 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-1
+- Initial release for RHEL 6, RHEL 5 and Fedora 15
+
+* Sat Sep 03 2011 Francois Andriot <francois.andriot@free.fr> - 3.5.13-0
+- Import to GIT
+- Use TDE 3.5.13, cmake, QT3.3.3.8d