{{{ #!/bin/bash #TODO: Make it safer, trap interrupts, more checks, etc. set -e winroot= docroot= sysroot= winuser= tempbookmarks= bookmarks=$HOME/.mozilla/firefox/*.default/bookmarks.html #Import one folder of bookmarks (recursively for nested folders) and write it to tempfile import_bookmark_level() { #Loop through subdirectories first find "$1" -maxdepth 1 -mindepth 1 -type d | \ while read i do echo "

`basename "$i"`

" >> $tempbookmarks echo "

" >> $tempbookmarks import_bookmark_level "$i/" echo "

" >> $tempbookmarks done #Loop through .url files (where IE stores bookmarks) find "$1" -maxdepth 1 -name "*.url" | \ while read i do bmhref=`grep "^URL=" "$i" | sed 's|URL=||' | sed 's/.$//'` bmname=`basename "$i" .url` echo "

$bmname" >> $tempbookmarks done } #Import all bookmarks from IE import_bookmarks() { if [[ -n "`ps -A | grep firefox`" ]] then zenity --error --text 'Firefox is open! Please close it and restart this program!' exit 1 else #Inserts our imported bookmarks into Firefox's bookmark file tempbookmarks=`mktemp` #Takes everything but the last line cat $bookmarks | sed '$d' > $tempbookmarks #Inserts new bookmarks echo "

Imported IE Favorites

" >> $tempbookmarks echo "

" >> $tempbookmarks import_bookmark_level "$docroot/$winuser/Favorites/" echo "

" >> $tempbookmarks #Finish it off echo "

" >> $tempbookmarks #Atomic baby mv $tempbookmarks $bookmarks fi } import_firefox_bookmarks() { if [[ -n "`ps -A | grep firefox`" ]] then zenity --error --text 'Firefox is open! Please close it and restart this program!' exit 1 else #Inserts our imported bookmarks into Firefox's bookmark file tempbookmarks=`mktemp` profile=`cat "$docroot/$winuser/Application Data/Mozilla/Firefox/profiles.ini" | grep Path= | sed 's/Path=//' | sed 's/.$//'` #Takes evverything but the last line cat $bookmarks | sed '$d' > $tempbookmarks #Inserts new bookmarks cat "$docroot/$winuser/Application Data/Mozilla/Firefox/$profile/bookmarks.html" | sed '1,//d' | sed '1 s/Bookmarks/Imported Firefox Bookmarks/' | sed '1 s/H1/H3/g' | sed 's/ID="*"//' | sed 's/PERSONAL_TOOLBAR_FOLDER="true"//' >> $tempbookmarks #Finish it off echo "</DL><p>" >> $tempbookmarks #Atomic baby mv $tempbookmarks $bookmarks fi } #Find out what the user wants to import ask_import() { zenity --list --checklist --column Import? --column Settings --text "Choose settings to import:" TRUE "IE Favorites" TRUE "Firefox Bookmarks" TRUE Wallpaper } #Find out which Windows user we are ask_user() { while [[ -z "$winuser" ]] do winuser=`ls "$docroot" | sed '/All Users\|Default User\|LocalService\|NetworkService/d' | zenity --list --column User --text "Migration Wizard has found these users. Select one:"` if [[ -n `echo "$winuser" | grep '|'` || -z "$winuser" ]] then zenity --error --text 'Please select -one- user!' unset winuser fi done } #Find where the Windows drive is mounted find_winroot() { for i in /media/* do tmp=`find $i -maxdepth 1 -iname "documents and settings"` if [[ -n "$tmp" ]] then winroot=$i docroot=$tmp sysroot=`find $i -maxdepth 1 -iname "windows"` echo "Found Windows drive at $winroot..." fi done } find_winroot ask_user import=`ask_import` if [[ -n `echo $import | grep "IE Favorites"` ]] then import_bookmarks fi if [[ -n `echo $import | grep "Firefox Bookmarks"` ]] then import_firefox_bookmarks fi if [[ -n `echo $import | grep Wallpaper` ]] then mkdir -p "$HOME/Pictures/Wallpapers/" cp "$docroot/$winuser/Local Settings/Application Data/Microsoft/Wallpaper1.bmp" "$HOME/Pictures/Wallpapers/Imported.bmp" gconftool-2 --type string --set /desktop/gnome/background/picture_filename "$HOME/Pictures/Wallpapers/Imported.bmp" fi }}}