summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--r14-xdg-update135
1 files changed, 119 insertions, 16 deletions
diff --git a/r14-xdg-update b/r14-xdg-update
index d66e7ca9f..ff79a924f 100644
--- a/r14-xdg-update
+++ b/r14-xdg-update
@@ -116,7 +116,6 @@ if [ ! -d "$PROFILE_DIR" ]; then
fi
exit 1
fi
-CACHE_DIR="$PROFILE_DIR/cache-`uname -n`"
# The binaries for TDE are located in the same place as this script.
# To determine that location use the following method rather than presuming
@@ -264,25 +263,62 @@ fi
# Most files can be updated "live" but some can't, such as kdeglobals.
if [ "$USER_DIR" = "$HOME" ]; then
if [ "$TDE_FULL_SESSION" != "" ] || [ "$TDE_SESSION_UID" != "" ]; then
- MESSAGE="You are running this script from within a Trinity session.\n\nMost files can be updated \"live\" but some cannot, such as kdeglobals.\n\nThis script might complete successfully and might not."
- # Are we in X? Display an X dialog explaining breakage.
- if [ "$USER_DIR" = "$HOME" ] && [ "$DISPLAY" != "" ]; then
- # As we are in a Trinity session then use kdialog.
- kdialog --title "R14-XDG-Update" --warningyesno "${MESSAGE}\n\nContinue?"
- if [ "$?" -gt "0" ]; then
- unset PROFILE_DIR
- exit 0
- fi
- else
- Message_Prefix
- printf "%b" "$MESSAGE\n\n${WARNING_MESSAGE}"
- Wait_For_Response "Continue?"
- Proceed_From_Response
- fi
+ MESSAGE="You are running this script from while a Trinity session is active.\n\nMost files can be updated \"live\" but some cannot, such as kdeglobals.\n\nThis script might complete successfully and might not."
+ Message_Prefix
+ printf "%b" "$MESSAGE\n\n${WARNING_MESSAGE}"
+ Wait_For_Response "Continue?"
+ Proceed_From_Response
fi
fi
Message_Prefix
+echo "Updating temp file locations."
+# All three directories are for temporary files. The cache directory is
+# intended for persistent temporary data (is expected to remain across reboots
+# and shutdowns). The other two directories are for non-persistent data and
+# can be deleted across reboots and shutdowns.
+CACHE_DIR="`readlink $PROFILE_DIR/cache-\`uname -n\``"
+SOCKET_DIR="`readlink $PROFILE_DIR/socket-\`uname -n\``"
+TMP_DIR="`readlink $PROFILE_DIR/tmp-\`uname -n\``"
+# Delete the non-persistent temporary directories. This is safe at any time.
+unlink $PROFILE_DIR/socket-`uname -n` 2>/dev/null
+unlink $PROFILE_DIR/tmp-`uname -n` 2>/dev/null
+if [ "$SOCKET_DIR" != "" ]; then
+ rm -fr $SOCKET_DIR 2>/dev/null
+fi
+if [ "$TMP_DIR" != "" ]; then
+ rm -fr $TMP_DIR 2>/dev/null
+fi
+# Remember that this script may be run more than once. The new directory
+# might already exist.
+if [ -n "$CACHE_DIR" ] && [ -d "$CACHE_DIR" ]; then
+ # Flush the old ksycoca cache files. This is safe at any time.
+ rm -f ${CACHE_DIR}/ksycoca* 2>/dev/null
+ # Old cache directory: /var/tmp/kde*cache-$USER
+ # New cache directory: /var/tmp/tdecache-$USER
+ # Rename/move the directory name but only when the new name does not exist.
+ if [ "`echo $CACHEDIR | grep tdecache`" = "" ]; then
+ Message_Prefix
+ echo "Renaming the temporary cache directory."
+ unlink $PROFILE_DIR/cache-`uname -n` 2>/dev/null
+ mv -f $CACHE_DIR `dirname $CACHE_DIR`/tdecache-$USER 2>/dev/null
+ Message_Prefix
+ echo "Creating a sym link for the temporary cache directory."
+ ln -s `dirname $CACHE_DIR`/tdecache-$USER $PROFILE_DIR/cache-`uname -n`
+ fi
+fi
+# Housekeeping: the old locations are no longer needed.
+if [ "$CACHE_DIR" != "" ]; then
+ rm -fr `dirname 2>/dev/null $CACHE_DIR`/kde*cache-$USER
+fi
+if [ "$SOCKET_DIR" != "" ]; then
+ rm -fr `dirname 2>/dev/null $SOCKET_DIR`/ksocket-$USER
+fi
+if [ "$TMP_DIR" != "" ]; then
+ rm -fr `dirname 2>/dev/null $TMP_DIR`/kde-$USER
+fi
+
+Message_Prefix
echo "Updating *.desktop files."
find "$PROFILE_DIR" -name "*.desktop" -exec sed -i 's|X-KDE-|X-TDE-|g' {} \; 2>/dev/null
find "$PROFILE_DIR" -name "*.desktop" -exec sed -i 's|KDE\;|TDE\;|g' {} \; 2>/dev/null
@@ -398,6 +434,73 @@ if [ -r $USER_DIR/.config/menus/applications-kmenuedit.menu ]; then
sed -i 's|<Filename>kde-|<Filename>tde-|g' $USER_DIR/.config/menus/applications-kmenuedit.menu
fi
+# Ensure all KDED services are accounted for in the user's profile. Any that are missing
+# are defaulted to not auto-loading (false). Refer to bug report 1210. This same test is
+# performed in the migratekde3 script.
+if [ -d $PROFILE_DIR/share/services/kded ]; then
+ if [ "`find $PROFILE_DIR/share/services/kded -name *.desktop`" != "" ]; then
+ Message_Prefix
+ echo "Validating KDED services."
+ for i in `/bin/ls -1 $PROFILE_DIR/share/services/kded/*.desktop`; do
+ SERVICE_NAME=`basename $i`
+ if [ ! -f $TDEDIR/share/services/kded/$SERVICE_NAME ]; then
+ $TDEDIR/bin/kwriteconfig --file $i --group "Desktop Entry" --key "X-KDE-Kded-autoload" --type bool "false"
+ fi
+ done
+ fi
+fi
+
+# Try to update sessions.
+sed -i 's|kwin|twin|g' $PROFILE_DIR/share/config/ksmserverrc
+for i in `/bin/ls -1 $PROFILE_DIR/share/config/session/kwin_* 2>/dev/null`; do
+ mv $i $PROFILE_DIR/share/config/session/`basename $i | sed 's|kwin_|twin_|'`
+done
+
+Message_Prefix
+echo "Renaming some configuration files and directories."
+# Note: The only rebranding that occured before starting the R14 branch was krita. All other
+# rebranding updates belong in this script.
+# Don't force renaming in case this script is used to update an existing Trinity profile. That is,
+# always check whether the new config file already exists.
+if [ ! -f $PROFILE_DIR/share/config/tdeprintrc ] && [ -f $PROFILE_DIR/share/config/kdeprintrc ] || [ -d $PROFILE_DIR/share/apps/kdeprint ]; then
+ Message_Prefix
+ echo " kdeprint->tdeprint"
+ mv $PROFILE_DIR/share/config/kdeprintrc $PROFILE_DIR/share/config/tdeprintrc 2>/dev/null
+ mv $PROFILE_DIR/share/apps/kdeprint $PROFILE_DIR/share/apps/tdeprint 2>/dev/null
+fi
+if [ ! -f $PROFILE_DIR/share/config/tdesurc ] && [ -f $PROFILE_DIR/share/config/kdesurc ]; then
+ Message_Prefix
+ echo " kdesurc->tdesurc"
+ mv $PROFILE_DIR/share/config/kdesurc $PROFILE_DIR/share/config/tdesurc 2>/dev/null
+fi
+if [ ! -f $PROFILE_DIR/share/config/tdeveloprc ] && [ -f $PROFILE_DIR/share/config/kdeveloprc ]; then
+ Message_Prefix
+ echo " kdevelop->tdevelop"
+ mv $PROFILE_DIR/share/config/kdeveloprc $PROFILE_DIR/share/config/tdeveloprc 2>/dev/null
+fi
+# kwin/twin is the Trinity window manager. kwin4/twin4 is a game.
+if [ ! -f $PROFILE_DIR/share/config/twinrc ] && [ -f $PROFILE_DIR/share/config/kwinrc ] || [ -d $PROFILE_DIR/share/apps/kwinrulesrc ]; then
+ # Do not include kwinrules_update because that is an auto-generated file.
+ Message_Prefix
+ echo " kwin->twin"
+ mv $PROFILE_DIR/share/config/kwinrc $PROFILE_DIR/share/config/twinrc 2>/dev/null
+ mv $PROFILE_DIR/share/config/kwinrc.eventsrc $PROFILE_DIR/share/config/twinrc.eventsrc 2>/dev/null
+ mv $PROFILE_DIR/share/config/kwinrc $PROFILE_DIR/share/config/twinrc 2>/dev/null
+ mv $PROFILE_DIR/share/apps/kwinrulesrc $PROFILE_DIR/share/apps/twinrulesrc 2>/dev/null
+ mv $PROFILE_DIR/share/apps/kwin_rules_dialogrc $PROFILE_DIR/share/apps/twin_rules_dialogrc 2>/dev/null
+ sed -i 's|PluginLib=kwin_|PluginLib=twin_|' $PROFILE_DIR/share/config/twinrc
+fi
+if [ ! -f $PROFILE_DIR/share/config/twin4rc ] && [ -f $PROFILE_DIR/share/config/kwin4rc ]; then
+ Message_Prefix
+ echo " kwin4->twin4"
+ mv $PROFILE_DIR/share/config/kwin4rc $PROFILE_DIR/share/config/twin4rc 2>/dev/null
+fi
+
+# Disable some features new to R14, otherwise users will see an unfamiliar desktop.
+$TDEDIR/bin/kwriteconfig --file kickerrc --group "General" --key "ShowDeepButtons" --type bool "false"
+$TDEDIR/bin/kwriteconfig --file kickerrc --group "General" --key "UseResizeHandle" --type bool "false"
+$TDEDIR/bin/kwriteconfig --file kickerrc --group "General" --key "MenubarPanelBlurred" --type bool "false"
+
# Perform some nominal update validations.
# First clean house from any previous failures.
if [ -d "$CACHE_DIR" ]; then