Utile pour fusionner les fichiers PDF sélectionnés.
Important : l'ordre dépend de l'ordre de sélection par clic.
On a besoin de :
Script "mergepdf" :
#!/bin/sh
target=$(zenity --title="Fichier PDF de destination" --file-selection --save --confirm-overwrite --file-filter=*.pdf)
pdftk $@ cat output $target
zenity --info --text "Enregistrement du fichier $target terminé"
Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts
J'utilise :
Attention, mon scanner est un CanoScan Lide 210.
Il est nécessaire tout d'abord de connaître son scanner, d'avoir installé le driver.
Je vous suggère de tester la présence du scanner s'il est USB avec la commande :
lsusb
Lorsque j'exécute cette commande, j'obtiens entre autres la ligne suivante :
Bus 003 Device 032: ID 04a9:190a Canon, Inc. CanoScan LiDE 210
Il faut être attentif à 3 points :
Voici le 1er script pour scanner en 300dpi : scan300
#/bin/sh
usb1=$(lsusb | grep CanoScan | awk -r '{print $2}')
usb2=$(lsusb | grep CanoScan | awk -r '{print $4}'|sed -e 's/://')
pnm=scan_72ppi_`date +%H-%M-%S`.pnm
jpg=scan_72ppi_`date +%H-%M-%S`.jpg
#gksudo chmod a+rw /dev/bus/usb/$usb1/$usb2
time scanimage -d genesys:libusb:$usb1:$usb2 -x 210 -y 297 --resolution=300 --mode Color > $pnm
convert $pnm -quality 100 $jpg
rm $pnm
Voici le 2eme script pour scanner en 600dpi : scan600
#/bin/sh
usb1=$(lsusb | grep CanoScan | awk -r '{print $2}')
usb2=$(lsusb | grep CanoScan | awk -r '{print $4}'|sed -e 's/://')
pnm=scan_72ppi_`date +%H-%M-%S`.pnm
jpg=scan_72ppi_`date +%H-%M-%S`.jpg
#gksudo chmod a+rw /dev/bus/usb/$usb1/$usb2
time scanimage -d genesys:libusb:$usb1:$usb2 -x 210 -y 297 --resolution=600 --mode Color > $pnm
convert $pnm -quality 100 $jpg
rm $pnm
Voici le 3eme script pour scanner en niveaux de gris : scan_nb
#/bin/sh
usb1=$(lsusb | grep CanoScan | awk -r '{print $2}')
usb2=$(lsusb | grep CanoScan | awk -r '{print $4}'|sed -e 's/://')
pnm=scan_gray_`date +%H-%M-%S`.pnm
jpg=scan_gray_`date +%H-%M-%S`.jpg
#gksudo chmod a+rw /dev/bus/usb/$usb1/$usb2
time scanimage -d genesys:libusb:$usb1:$usb2 -x 210 -y 297 --resolution=300 --mode Gray > $pnm
convert $pnm -quality 100 $jpg
rm $pnm
Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts
Dans le gestionnaire de fichier caja ou nautilus, en choisissant un répertoire de destination, on peut générer le fichier vidéo de ce que voit la webcam, en utilisant VLC, avec ce simple script :
#!/bin/sh
vlc v4l2:// --sout "#transcode{vcodec=h264,vb=0,scale=0,acodec=mp4a,ab=128,channels=2,samplerate=44100}:duplicate{dst=standard{access=file, mux=mp4,dst=flux-`date +%Y%m%d-%H%M%S`.avi}}" --noaudio
Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts
Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts
Ces scripts utilisent plusieurs outils :
Certains fichiers PDF sont beaucoup trop volumineux, parfois, il faut changer ça. Ghostscript vient à notre rescousse. Cependant, il faut savoir négocier la qualité et le poids du fichier.
Voilà pourquoi je propose 3 scripts pour 3 niveaux de poids et de qualité. A tester ensuite sur son fichier PDF pour choisir la meilleure conversion.
1er script : pdflight
#!/bin/bash
scriptname=`basename $0`
# Determine wave type to convert to based on the name of the script
logfile=`mktemp -t $scriptname.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting pdf to $newext" &
for pdf in "$@"; do
oldext=$(echo $pdf|sed 's/.*\.\(.\+\)/\1/')
if [ $oldext != "pdf" ]
then
echo "Not a pdf file" >> $logfile
continue
fi
datefile=`date -r "$pdf" +%Y%m%d%H%M`
echo "$pdf" >> $logfile
gs -q -dPDFA -dNOOUTERSAVE -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dProcessColorModel=/DeviceRGB -sOUTPUTFILE="`basename "$pdf" .pdf`_l.pdf" "$pdf"
notify-send "Conversion de $pdf terminée"
touch -t $datefile "$target"
done
echo done >> $logfile
rm -f $logfile
2eme script : pdflighter
Par rapport au premier script il n'y a qu'une seule chose à changer à la ligne :
gs -q -dPDFA -dNOOUTERSAVE -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dProcessColorModel=/DeviceRGB -sOUTPUTFILE="`basename "$pdf" .pdf`_l.pdf" "$pdf"
remplacer "/printer" par "/ebook"
2eme script : pdflightest
Par rapport au premier script il n'y a qu'une seule chose à changer à la ligne :
gs -q -dPDFA -dNOOUTERSAVE -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dProcessColorModel=/DeviceRGB -sOUTPUTFILE="`basename "$pdf" .pdf`_l.pdf" "$pdf"
remplacer "/printer" par "/screen"
Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts
Inkscape est un logiciel de dessin vectoriel extrêmement puissant et simple qui remplace avantageusement (selon moi) Illustrator.
On peut l'invoquer en ligne de commande pour effectuer certaines tâches, comme par exemple l'export vers une image ou l'enregistrement dans divers formats.
Pour ce qui est de l'export, il ne connait que le PNG, qu'à cela ne tienne, on peut se servir de imagemagick pour les autres formats d'image.
A noter que transformer un fichier SVG directement en un autre format avec imagemagick ne donnera pas du tout le même résultat. En effet, certaines subtilités du format ne sont pas forcément détectées par imagemagick.
Il est donc préférable de se servir de Inkscape pour travailler avec le format SVG.
Par ailleurs la transformation en PDF est bien plus intéressante avec Inkscape qu'avec imagemagick, en effet ce dernier rasterise l'image (convertir le vectoriel en bitmap) avant d'en faire un PDF, contrairement à Inkscape qui génère un PDF avec les éléments séparés, textes, images, éléments vectoriels... Le poids du fichier, ainsi que la qualité à l'impression peuvent s'en ressentir.
J'ai besoin le plus souvent de 3 formats de destination : PNG, JPG et PDF.
Voici le script pour convertir un SVG en PNG : inkscape_to_png
#!/bin/bash
scriptname=`basename $0`
# Determine wave type to convert to based on the name of the script
newext=`echo $scriptname | sed 's/inkscape.to.\(.\+\)/.\1/'`
logfile=`mktemp -t $script_name.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting sound to $newext" &
for svg in "$@"; do
oldext=$(echo $svg|sed 's/.*\.\(.\+\)/\1/')
if [ $oldext != "svg" ]
then
echo "Not a svg file" >> $logfile
continue
fi
# Determine target svg name
target=$(echo $svg|sed 's/\(.*\)\..\+/\1/')$newext
if [ -f "$target" ]
then
echo "File exists" >> $logfile
continue
fi
datefile=`date -r "$svg" +%Y%m%d%H%M`
echo "$svg -> $target" >> $logfile
inkscape -f "$svg" -d 90 -e "$target"
touch -t $datefile "$target"
done
echo done >> $logfile
rm -f $logfile
Voici le script pour convertir un SVG en JPEG : inkscape_to_jpg
#!/bin/bash
scriptname=`basename $0`
# Determine wave type to convert to based on the name of the script
newext=`echo $scriptname | sed 's/inkscape.to.\(.\+\)/.\1/'`
logfile=`mktemp -t $script_name.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting sound to $newext" &
for svg in "$@"; do
oldext=$(echo $svg|sed 's/.*\.\(.\+\)/\1/')
if [ $oldext != "svg" && $oldext != "pdf" ]
then
echo "Not a svg file" >> $logfile
continue
fi
# Determine target svg name
target=dac
target2=$(echo $svg|sed 's/\(.*\)\..\+/\1/')$newext
if [ -f "$target" ]
then
echo "File $target exists" >> $logfile
continue
fi
if [ -f "$target2" ]
then
echo "File $target2 exists" >> $logfile
continue
fi
datefile=`date -r "$svg" +%Y%m%d%H%M`
echo "$svg -> $target" >> $logfile
inkscape -f "$svg" -d 300 -e "$target"
#~ touch -t $datefile "$target"
touch "$target"
echo "$target -> $target2" >> $logfile
convert "$target" -quality 92 -density 90 -resample 150x150 -resize 850x710 "$target2"
#~ touch -t $datefile "$target2"
touch "$target2"
rm "$target"
done
echo done >> $logfile
rm -f $logfile
Voici le script pour convertir un SVG en PDF : inkscape_to_pdf
#!/bin/bash
scriptname=`basename $0`
# Determine wave type to convert to based on the name of the script
newext=`echo $scriptname | sed 's/inkscape.to.\(.\+\)/.\1/'`
logfile=`mktemp -t $script_name.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting sound to $newext" &
for svg in "$@"; do
oldext=$(echo $svg|sed 's/.*\.\(.\+\)/\1/')
if [ $oldext != "svg" ]
then
echo "Not a svg file" >> $logfile
continue
fi
# Determine target svg name
target=$(echo $svg|sed 's/\(.*\)\..\+/\1/')$newext
if [ -f "$target" ]
then
echo "File exists" >> $logfile
continue
fi
datefile=`date -r "$svg" +%Y%m%d%H%M`
echo "$svg -> $target" >> $logfile
inkscape -f "$svg" -d 90 -A "$target"
touch -t $datefile "$target"
done
echo done >> $logfile
rm -f $logfile
Nautilus et Caja ont un outil vraiment intéressant pour effectuer des tâches rapides sur un ou plusieurs fichiers, ou dans le répertoire courant.
Ce sont des scripts qui sont localisés dans ~/.config/caja/scripts ou ~/.config/nautilus/scripts suivant que l'on utilise Mate ou Gnome.
Lorsque l'on est dans une fenêtre du gestionnaire de fichiers, un clic droit, puis scripts et on choisi le script en question.
A noter que l'on peut utiliser des sous dossiers pour organiser ses scripts, ils apparaîtront dans les sous-menus du menu contextuel.
Attention à rendre les scripts exécutables pour les activer dans le menu.
Je vais poster les quelques scripts dont je me sers quasi quotidiennement sous le tag #NautilusCajaScripts
Pour commencer un script qui n'est pas de moi, mais vraiment pratique pour convertir à la volée des images dans un format déterminé.
Pour cela, il faut imagemagick et zenity pour voir le log.
Une astuce pour ce script, il y a un seul script, par défaut il est nommé "convert_to_png", mais la partie "png" du nom détermine le format de sortie.
Ainsi un simple :
ln -s convert_to_png convert_to_jpg
offre la possibilité de choisir un autre format d'image en sortie, cela fonctionne pour tout ce que imagemagick peut convertir, y compris le PDF.
Voici le script :
#!/bin/bash
scriptname=`basename $0`
# Determine image type to convert to based on the name of the script
newext=`echo $scriptname | sed 's/convert.to.\(.\+\)/.\1/'`
logfile=`mktemp -t $script_name.XXXXXX`
tail -f $logfile | zenity --text-info --title="Converting images to $newext" &
for image in "$@"; do
# Determine target image name
target=$(echo $image|sed 's/\(.*\)\..\+/\1/')$newext
echo "$image -> $target" >> $logfile
convert "$image" -quality 85 -density 90 "$target"
done
echo done >> $logfile
rm -f $logfile
Une des choses que j'utilise le plus dans le gestionnaire de fichier de gnome/mate, c'est à dire respectivement Nautilus et Caja, ce sont les scripts.
Par ailleurs, pour télécharger une vidéo, sur youtube, twitter, pluzz, rutube, et plein d'autres sites, l'idéal c'est youtube-dl.
https://ytdl-org.github.io/youtube-dl/index.html
Alors à force de tout passer dans la console, j'ai un .bash_history un peu chargé. Pourquoi ne pas utiliser les scripts. Voilà comment faire.
Pour nautilus ça se passe là : ~/.config/nautilus/scripts
Pour caja, ici : ~/.config/caja/scripts
les dépendances : youtube-dl, xclip, notify-send (optionnel), zenity (optionnel)
Premier script : yt-clipboard :
#!/bin/sh
sel=$(xclip -d ":0" -o -selection clipboard)
notify-send "youtube-dl $sel"
youtube-dl "$sel"
notify-send "Récuperation de la vidéo terminée"
Deuxième script : yt-selection :
#!/bin/sh
sel=$(xclip -d ":0" -o -selection primary)
notify-send "youtube-dl $sel"
youtube-dl "$sel"
notify-send "Récuperation de la vidéo terminée"
Troisième script : yt-clipboard-mp3 :
#!/bin/sh
sel=$(xclip -d ":0" -o -selection clipboard)
notify-send "youtube-dl $sel"
youtube-dl --extract-audio --audio-format mp3 -l "$sel"
notify-send "Récuperation du mp3 terminée"
Les scripts sont à passer en exécutable.
Ensuite, il suffit de choisir le répertoire cible, copier l'url de la page où se trouve la vidéo, cliquer avec le bouton droit n'importe où dedans et dans le menu script, choisir le premier script.
Le 2e script utilise ce qui est en sélection (une adresse sélectionnée à la souris)
Le 3e script permet de transformer la vidéo en mp3
On peut aussi utiliser la recherche youtube, soit avec un dialogue pour le champ de recherche, soit sur une chaine dans le clipboard :
yt-searchclip-to-mp3:
#!/bin/sh
youtube-dl ytsearch:"$(xclip -selection clipboard -o | cut -d\& -f1)" --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s"
zenity --info --text "Téléchargement terminé"
yt-searchask-to-mp3:
#!/bin/sh
search=$(zenity --entry --text "Titre ?" --entry-text "U2 Bad")
youtube-dl ytsearch:"$search" --extract-audio --audio-format mp3 -o "%(title)s.%(ext)s"
zenity --info --text "Téléchargement terminé"
Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts
Si vous utilisez fontforge pour générer vos polices de caractère, savez-vous qu'il existe un langage de script qui peut vous faciliter la vie ?
Encore mieux si vous utilisez nautilus, il est possible de générer quelques formats nécessaires à un site internet en un script appelé sur un ou des fichiers .sfd
#!/usr/bin/fontforge -lang=ff
i=1;
while ( i<$argc )
Open($argv[i]);
Print("Saving " + $argv[i] + "as " + $argv[i]:r + ".ttf");
Generate($argv[i]:r + ".ttf");
Print("Saving " + $argv[i] + "as " + $argv[i]:r + ".woff");
Generate($argv[i]:r + ".woff");
Print("Saving " + $argv[i] + "as " + $argv[i]:r + ".svg");
Generate($argv[i]:r + ".svg");
Print("Saving " + $argv[i] + "as " + $argv[i]:r + ".otf");
Generate($argv[i]:r + ".otf");
i = i+1;
endloop
Quit(0);
Cela vous générera automatiquement les formats ttf, woff, svgfont et otf.
Ensuite, pour compléter la collection, il suffit d'ajouter les scripts qui vont bien en utilisant :
pour les fichiers EOT ttf2eot :
#!/bin/bash
scriptname=`basename $0`
for file in "$@"; do
target=$(echo $file|sed 's/(.*)..+/\1/').eot
echo "$file -> $target"
ttf2eot "$file" > "$target"
done
et pour les fichiers woff2 woff2_compress :
#!/bin/bash
scriptname=`basename $0`
for file in "$@"; do
echo "$file"
woff2_compress "$file"
done
Puis sauvegarder chaque script dans ~/.local/share/nautilus/scripts/ en les rendant exécutables.
Les deux derniers scripts ne peuvent être utilisés que sur un ou des fichiers TTF
Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts