söndag 22 maj 2011

Egna skript i dolphin

(Nu har jag bytt till Kubuntu)

Skapar ett till alternativ under åtgärder (Skapa kopia) i menyn som dyker upp när man högerklickar på en fil.

Man får namnge en ny kopia av filen så om man vill göra en kopia i samma mapp som man är i och ge den ett valfritt namn så är det bara ett klick bort.

i mappen
~/.kde/share/kde4/services/

skapade jag filen backupFile.desktop. Det är viktigt att den slutar på .desktop

Detta ska filen inehålla:
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
MimeType=application/octet-stream;
Actions=backupFile

[Desktop Action backupFile]
Name=Skapa kopia
Icon=background
Exec=~/bin/cp_backup_dialog.sh %u

MimeTypen som jag har angett gör att meny alternativet Skapa kopia visas för alla sorters filer men inget annat.
Actions visar vilka actions som finns tillgängliga. Här finns det bara en tillgänglig, backupFile.

Icon visar en icon annars visas bara text i menyn.
Exec=~/bin/cp_backup_dialog.sh %u kör ett skript som jag har gjort och %u gör att sökvägen och filnamnet på den filen man har högerklickat på skickas till skriptet.

Här är skriptet:

01if [[ -f "$1" ]]; then # True if FILE exists and is a regular file.
02    selectedFile="$1"
03    backupPathName=$(zenity --text="Skriv in namnet för kopian och eventuell ny sökvägen." --entry-text="$selectedFile" --entry)


04    if [[ $? == 0 ]]; then # True if previos command exicutet correctly.
05        backupname=${backupPathName##*/}

06        if [[ -n "$backupname" ]]; then # True if the length of "STRING" is non-zero. -n

07            if [[ -a "$backupPathName" ]]; then # True if FILE exists.

08                if zenity --question --ok-label=JA --cancel-label=NEJ --text="Filen $backupname finns redan, vill du skriva över den?"; then
09                    if [[ -w "$backupPathName" ]]; then # True if FILE exists and is writable.
10                        cp "$1" "$backupPathName"
11                        if [[ $? == 0 ]] ; then # True if previos command exicutet correctly.
12                            zenity --info --text "Backupen är nu klar, filen $backupPathName har skapats."
13                        else
14                        zenity --info --text "Backupen misslyckades, kanske har du inte skrivrättigheter här"
15                        fi

16                    else
17                        zenity --info --text "Filen $backupPathName är skrivskyddad så backupen kunde inte tas."
18                    fi
19                else
20                    zenity --info --text "Backupen är ej genomförd"
21                fi
22            else
23                cp "$1" "$backupPathName"
24                if [[ $? == 0 ]] ; then # True if previos command exicutet$backupname correctly.
25                    zenity --info --text "Backupen är nu klar, filen $backupPathName har skapats."
26                else
27                    zenity --info --text "Backupen misslyckades, kansk $backupnamee har du inte skrivrättigheter här eller så finns inte mappen du angav."
28                fi
29            fi
30        else
31            zenity --info --text "Backupen är ej genomförd, du namngav inte filen."
32        fi
33    else
34        zenity --info --text "Backupen är ej genomförd"
35    fi
36else

37        zenity --info --text "Du har inte valt någon fil."
38fi


För en mer ordentlig genomgång hur allt fungerar(inte mitt skript men resten) så kolla in