All links of one day
in a single page.
<Previous day - Next day>

rss_feedDaily RSS Feed
floral_left The Daily Shaarli floral_right
——————————— March 24, 2020 - Tuesday 24, March 2020 ———————————
#NautilusCajaScripts -

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 :

  • pdftk
  • zenity

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

#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

#NautilusCajaScripts -

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
thumbnail

Donc merci quand même pour vos applaudissements, mais ça fait des années que le personnel hospitalier travaille dans des conditions de merde et se nique la santé en faisant son job du mieux possible.

La prochaine fois que vous voyez des manifestations pour refinancer les soins de santé, soutenez-nous.

Via Opennews

#NautilusCajaScripts -

Explications ici : http://shaarli.plop.me/?0wJ_Pg
Les scripts sont dans la catégorie #NautilusCajaScripts


Ces scripts utilisent plusieurs outils :

  • ghostscript : manipulation de fichiers postscript et pdf
  • zenity : outil graphique pour afficher les logs
  • notify-send : pour afficher une notification, il en existe d'autres, selon son goût ou sa distrib

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"

#NautilusCajaScripts -

J'utilise :

  • sane-utils (nom du package sous Mint)
  • imagemagick

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 :

  • Le numéro de Bus et de numéro de device changent d'un boot à l'autre, c'est pour cela qu'il est nécessaire de le détecter à chaque fois.
  • Pour repérer la bonne ligne, mon script l'identifie avec un grep sur le terme "CanoScan", mais pour un autre modèle de scanner, le terme à utiliser peut être différent.
  • Il y a des distributions comme Linux Mint 19.* qui gèrent différemment les droits d'accès au bus. Impossible de scanner si l'on n'est pas root, à moins de modifier les droits à chaque boot.
    Dans ces cas-là,il y a une autorisation à donner, il faut alors décommenter la ligne qui modifie le droit d'écriture sur le device (elle commence par "#gksudo", retirer le "#").

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

#NautilusCajaScripts -

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
-