KDE : Compresser en multithread avec pbzip2



Présentation



Par défaut, ARK (le gestionnaire de compression de KDE) a quelques entrées pour compresser rapidement un fichier : zip, tar, ou personnalisé.
Même si l'on choisi personnalisé, on a accès aux types d'archive compressées par défaut (zip, tar, tar.gz, tar.gz) mais ceux-ci ne supportent pas le multithreading.

Le multithreading, c'est le fait de pouvoir utiliser plusieurs processeurs en même temps.


Ajouter un menu dans le clic droit de KDE pour compresser en tar.bz2 en multithreading



Prérequis



  • Environnement KDE 4
  • Ark d'installé
  • pbzip2 d'installé



Créer l'entrée dans le menu ACTION de KDE



Pour créer une nouvelle entrée dans le menu Action de KDE, il faut créer un fichier .desktop dans le dossier ~.kde4/share/kde4/services/ServiceMenu/ pour l'utilisateur ou dans /usr/share/kde4/services/ServiceMenus/ pour tous les utilisateurs.

Voici mon fichier ~/.kde4/share/kde4/services/ServiceMenu/pbzip2.desktop

Code BASH :
[Desktop Entry]
Type=Service
ServiceTypes=KonqPopupMenu/Plugin
Actions=tarpbzip2
MimeType=all/all;
 
[Desktop Action tarpbzip2]
Exec=sh /home/adrien/.scripts/pbzip2.sh %n
Icon=ark
Name=Compresser en tar.bz2 (Multithread)


Adapter le chemin /home/adrien/.scripts/pbzip2.sh suivant l'endoit où vous placerez le script.
Conserver le sh pour lancer notre script avec sh et le %f pour passer en argument le fichier sur lequel on a cliqué.



Créer le script pbzip2.sh



Voici le contenu du fichier /home/adrien/.scripts/pbzip2.sh

Code BASH :
#! /bin/bash
 
exist=1
nb=0
fic="$1"
 
if [[ -f "$fic".tar.bz2 ]]
then
while [ $exist -eq 1 ]
do
let nb++
if [[ -f "$fic-$nb".tar.bz2 ]]
then
exist=1
else
exist=0
fi
done
fic="$fic-$nb"
fi
 
tar -I pbzip2 -cvf "$fic".tar.bz2 "$1" && kdialog --title "Compression terminée" --msgbox "La compression du fichier : \n $fic.tar.bz2 \n s'est terminée avec succès."
 


Cerise sur le gâteau, si la commande tar a réussi, on une petite fenêtre de confirmation :)

Enjoy !
Cette page a été vue 3335 fois