summaryrefslogtreecommitdiffstats
path: root/r14-xdg-update
diff options
context:
space:
mode:
Diffstat (limited to 'r14-xdg-update')
-rw-r--r--r14-xdg-update140
1 files changed, 107 insertions, 33 deletions
diff --git a/r14-xdg-update b/r14-xdg-update
index 92de967bc..26cae4356 100644
--- a/r14-xdg-update
+++ b/r14-xdg-update
@@ -68,7 +68,7 @@ Log () {
# Main script:
SCRIPT_NAME="`basename \`readlink -f $0\``"
-SCRIPT_VERSION=201401050
+SCRIPT_VERSION=201401051
# Allow forced execution of this script regardless of the kdeglobals setting
# and allow passing a user home directory as a positional parameter.
@@ -281,7 +281,7 @@ if [ "$R14_VERSION" -lt "201309150" ]; then
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
+ if [ "$CACHE_DIR" != "" ] && [ -d "$CACHE_DIR" ]; then
# Flush the obsolete ksycoca cache files.
rm -f ${CACHE_DIR}/ksycoca* 2>/dev/null
# Flush the tdesycoca cache files. This is safe at any time.
@@ -310,12 +310,6 @@ if [ "$R14_VERSION" -lt "201309150" ]; then
fi
if [ "$R14_VERSION" -lt "201309150" ]; then
- Log "Updating *.desktop files."
- find "$PROFILE_DIR" "$USER_DIR/.local" -name "*.desktop" -print0 2>/dev/null | \
- xargs -r0 grep -ZIl "\(X-KDE-\|KDE;\)" | \
- xargs -r0 sed -i -e "s|X-KDE-|X-TDE-|g" -e "s|KDE;|TDE;|g"
-fi
-if [ "$R14_VERSION" -lt "201309150" ]; then
Log "Updating references of $TDEDIR/share/applications/kde to share/applications/tde."
# Exclude KMail mail files --- we don't want to touch those files.
find "$PROFILE_DIR" \
@@ -461,7 +455,7 @@ if [ "$R14_VERSION" -lt "201309150" ]; then
LINK="`readlink $i`"
LINK_PATH="`dirname $LINK`"
LINK_NAME="`basename $LINK`"
- if [ -n "`echo $LINK_PATH | grep \"$TDEDIR/share/applications/kde\"`" ]; then
+ if [ "`echo $LINK_PATH | grep \"$TDEDIR/share/applications/kde\"`" != "" ]; then
NEW_LINK_PATH="`echo \"$LINK_PATH\" | sed 's|/share/applications/kde|/share/applications/tde|'`"
fi
if [ "$NEW_LINK_PATH" != "" ]; then
@@ -479,13 +473,6 @@ if [ "$R14_VERSION" -lt "201309150" ]; then
fi
fi
-# Update the user's customized menu.
-if [ "$R14_VERSION" -lt "201309150" ]; then
- 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
-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, but notice the migratekde3 script uses the key of
@@ -506,19 +493,24 @@ fi
# Try to update sessions.
if [ "$R14_VERSION" -lt "201310050" ]; then
- sed -i -e 's|kwin|twin|g' \
- -e 's|krandr|tderandr|g' \
- -e 's|kwallet|tdewallet|g' \
- -e 's|kradio|tderadio|g' \
- $PROFILE_DIR/share/config/ksmserverrc
- find $PROFILE_DIR/share/config/session -name "kwin_*" -o -name "kwallet*" -o -name "kradio*" | \
- while read i; do
- ir=$PROFILE_DIR/share/config/session/$(basename $i | \
- sed -e "s|^kwin_|twin_|" \
- -e "s|^kwallet|tdewallet|" \
- -e "s|^kradio|tderadio|")
- mv $i $ir
- done
+ Log "Update sessions."
+ if [ -f $PROFILE_DIR/share/config/ksmserverrc ]; then
+ sed -i -e 's|kwin|twin|g' \
+ -e 's|krandr|tderandr|g' \
+ -e 's|kwallet|tdewallet|g' \
+ -e 's|kradio|tderadio|g' \
+ $PROFILE_DIR/share/config/ksmserverrc
+ fi
+ if [ -d $PROFILE_DIR/share/config/session ]; then
+ find $PROFILE_DIR/share/config/session -name "kwin_*" -o -name "kwallet*" -o -name "kradio*" | \
+ while read i; do
+ ir=$PROFILE_DIR/share/config/session/$(basename $i | \
+ sed -e "s|^kwin_|twin_|" \
+ -e "s|^kwallet|tdewallet|" \
+ -e "s|^kradio|tderadio|")
+ mv $i $ir
+ done
+ fi
fi
Log "Renaming some configuration files and directories."
@@ -659,6 +651,87 @@ if [ "$R14_VERSION" -lt "201401050" ]; then
fi
fi
+if [ "$R14_VERSION" -lt "201401040" ]; then
+ # Rename the user's custom launcher menu.
+ # Before the release of R14.0.0, custom user menus had the same file name as KDE4:
+ # applications-kmenuedit.menu. Under that condition, there is a possibility the user
+ # was using the same custom menu for both Trinity and KDE4. To distinguish whether a
+ # custom menu is TDE or KDE4, search the menu for TDE-specific and KDE4-specific menu
+ # items. There is a possibility the user has customized a common menu to include or
+ # exclude all of these items. Later we will copy any existing custom menu.
+ # There are three environments to inherit:
+ # KDE4
+ # KDE/TDE 3.5.x
+ # TDE pre R14
+ if [ -f $USER_DIR/.config/menus/applications-tdemenuedit.menu ]; then
+ CUSTOM_MENU="TDE"
+ elif [ -f $USER_DIR/.config/menus/applications-kmenuedit.menu ]; then
+ if [ "`grep \"kde4-kfind.desktop\" $USER_DIR/.config/menus/applications-kmenuedit.menu`" ] || \
+ [ "`grep \"kde4-Help.desktop\" $USER_DIR/.config/menus/applications-kmenuedit.menu`" ]; then
+ CUSTOM_MENU="KDE4"
+ elif [ "`grep \"kde-kfind.desktop\" $USER_DIR/.config/menus/applications-kmenuedit.menu`" ] || \
+ [ "`grep \"kde-Help.desktop\" $USER_DIR/.config/menus/applications-kmenuedit.menu`" ]; then
+ # KDE/TDE 3.5.x
+ CUSTOM_MENU="KDE"
+ elif [ "`grep \"tde-Kfind.desktop\" $USER_DIR/.config/menus/applications-kmenuedit.menu`" ] || \
+ [ "`grep \"tde-Help.desktop\" $USER_DIR/.config/menus/applications-kmenuedit.menu`" ] || \
+ [ "`grep \"tde-Home.desktop\" $USER_DIR/.config/menus/applications-kmenuedit.menu`" ]; then
+ CUSTOM_MENU="TDE"
+ fi
+
+ # Now we know which type of environment. Copy the existing menu.
+ Log " kmenuedit.menu($CUSTOM_MENU)->tdemenuedit.menu"
+ # Note: at this point the layout of a renamed KDE4 custom menu will not be the same as Trinity.
+ # We'll fix that later.
+ cp $USER_DIR/.config/menus/applications-kmenuedit.menu $USER_DIR/.config/menus/applications-tdemenuedit.menu 2>/dev/null
+ fi
+fi
+
+if [ "$R14_VERSION" -lt "201401040" ]; then
+ # Update the user's custom menu. Any custom menu should have been renamed a few lines above.
+ if [ -r $USER_DIR/.config/menus/applications-tdemenuedit.menu ] && [ "$CUSTOM_MENU" != "TDE" ]; then
+ # KDE/TDE 3.5.x or converted KDE4. No need to update a pre R14 menu.
+ sed -i 's|<Filename>kde-|<Filename>tde-|g' $USER_DIR/.config/menus/applications-tdemenuedit.menu
+ fi
+fi
+
+if [ "$R14_VERSION" -lt "201401040" ]; then
+ Log "Updating profile *.desktop files."
+ # First update *.desktop files in the Trinity profile folder. Updating these files is safe.
+ find "$PROFILE_DIR" -name "*.desktop" -print0 2>/dev/null | \
+ xargs -r0 grep -ZIl "\(X-KDE-\|KDE;\)" | \
+ xargs -r0 sed -i -e "s|X-KDE-|X-TDE-|g" -e "s|KDE;|TDE;|g" -e "s|kdesu|tdesu|g"
+ # Next update *.desktop files in $USER_DIR/.local.
+ # Any existing applications-kmenuedit.menu has been copied to applications-tdemenuedit.menu.
+ if [ -f "$USER_DIR/.config/menus/applications-tdemenuedit.menu" ] && [ "$CUSTOM_MENU" != "TDE" ]; then
+ # KDE/TDE 3.5.x or converted KDE4. No need to update a pre R14 menu.
+ Log "Updating ~/.local *.desktop files."
+ find "$USER_DIR/.local" -name "*.desktop" -print0 2>/dev/null | \
+ xargs -r0 grep -ZIl "\(X-KDE-\|KDE;\)" | \
+ xargs -r0 sed -i -e "s|X-KDE-|X-TDE-|g" -e "s|KDE;|TDE;|g" -e "s|kdesu|tdesu|g"
+ # When the custom menu is from KDE/TDE 3.5.x or pre R14, then we are done.
+ # When the custom menu is from KDE4, we have additional work to perform because the KDE4
+ # layout structure is different from the Trinity layout.
+ # In limited tests the following menu items are out of place when migrating a KDE4 menu:
+ # Edutainment (because KDE4 uses 'Education' rather than 'Edutainment'
+ # Find Files/Folders (because of kde4- prefix rather than tde- prefix)
+ # Help (because of kde4- prefix rather than tde- prefix)
+ # Home - Personal Files (because of kde4- prefix rather than tde- prefix)
+ # All four items are placed at the top of the migrated menu.
+ # The following should fix the layout to conform to Trinity.
+ if [ "$CUSTOM_MENU" = "KDE4" ]; then
+ Log "Repairing menu layout structure."
+ sed -i -e "s|Education|Edutainment|" -e "s|kde4-|tde-|g" $USER_DIR/.config/menus/applications-tdemenuedit.menu
+ # The following must be performed in this order.
+ sed -i "s|tde-Help.desktop|tde-Home.desktop|" $USER_DIR/.config/menus/applications-tdemenuedit.menu
+ sed -i "s|tde-kfind.desktop|tde-Help.desktop|" $USER_DIR/.config/menus/applications-tdemenuedit.menu
+ sed -i "s|<Menuname>Applications</Menuname>|<Filename>tde-Kfind.desktop</Filename>|" $USER_DIR/.config/menus/applications-tdemenuedit.menu
+ # Also need to fix Lost+Found? Lost+Found is not in alphabetical order
+ # when opening the menu editor against the converted menu.
+ fi
+ fi
+fi
+
# Disable some features new to R14, otherwise users will see an unfamiliar desktop.
if [ "$R14_VERSION" -lt "201309150" ]; then
if [ $($TDEDIR/bin/kreadconfig --file kickerrc --group "General" --key "ShowDeepButtons" --default false) = "false" ]; then
@@ -674,7 +747,7 @@ fi
# Perform some nominal update validations.
# First clean house from any previous failures.
-if [ -z "$CACHE_DIR" ]; then
+if [ "$CACHE_DIR" = "" ]; then
CACHE_DIR=$PROFILE_DIR
fi
if [ -d "$CACHE_DIR" ]; then
@@ -792,11 +865,11 @@ if [ "$QUICK_LAUNCH_CONFIG" != "" ]; then
fi
TEST_NUM="9"
R14_UPDATE_TEST9=""
-if [ -r $USER_DIR/.config/menus/applications-kmenuedit.menu ]; then
- grep "<Filename>kde-" "$USER_DIR/.config/menus/applications-kmenuedit.menu" &>${CACHE_DIR}/${SCRIPT_NAME}-test${TEST_NUM}.txt
+if [ -r $USER_DIR/.config/menus/applications-tdemenuedit.menu ]; then
+ grep "<Filename>kde-" "$USER_DIR/.config/menus/applications-tdemenuedit.menu" &>${CACHE_DIR}/${SCRIPT_NAME}-test${TEST_NUM}.txt
if [ -s ${CACHE_DIR}/${SCRIPT_NAME}-test${TEST_NUM}.txt ]; then
R14_UPDATE_TEST9="failed"
- MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\n\n(Check applications-kmenuedit.menu for '<Filename>kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-test${TEST_NUM}.txt.)"
+ MESSAGE="Some Trinity profile R14 XDG compliance updates failed.\n\n(Check applications-tdemenuedit.menu for '<Filename>kde-' in\n${CACHE_DIR}/${SCRIPT_NAME}-test${TEST_NUM}.txt.)"
Validation_Failure
else
rm -f ${CACHE_DIR}/${SCRIPT_NAME}-test${TEST_NUM}.txt 2>/dev/null
@@ -835,4 +908,5 @@ unset KDEGLOBALS_KEY_VALUE
unset TEST_NUM
unset SCRIPT_NAME
unset SCRIPT_VERSION
+unset CUSTOM_MENU
exit 0