Eccomi:
lo script per cambiare stampante predefinita non fa altro che eseguire l'interfaccia grafica di configurazione: altrimenti l'utente dovrebbe sapere a memoria il nome esatto dato alle proprie stampanti; non mi sembra probabile, personalmente non ci provo nemmeno.
L'altro script dovrebbe fare quanto promesso: stampare tutti i file che può con la stampante predefinita.
In caso di oggetti non stampabili (video, audio, cartelle, etc. selezionati per errore) emette un avviso/errore: ho usato notify-send che dovrebbe esserci su tutte le distro.
Mi ha stampato documenti .odt .ods .doc .xsl .docx .xslx e _non_ ho mai installato
libreoffice-pdfimport . Mi pare che quel punto del wiki si possa correggere, d'altronde a cosa dovrebbe servire quel pacchetto nella gestione di NON-pdf?
Dato che questo script usa la stampante predefinita, non dovrebbe servire l'opzione
-pt {nomestampante}} che indirizza a una specifica stampante ma dovrebbe bastare
libreoffice -p {nomefile}.
Senonchè mi è successo che un certo documento, sempre lo stesso, mi veniva inviato a un'altra stampante invece che alla predefinita, cosicchè ho aggiunto allo script un rigo per catturare il nome della stampante predefinita:
PRINTER=$(lpstat -d | grep -Eo "\w+$") e ho forzato libreoffice a usare quella stampante con
libreoffice -pt $PRINTER "$folder/$f"
Non ho messo l'opzione --invisible perchè a me non si aprono splash screen né pagine bianche ( che è quello che promette il
wiki di libreoffice ).
@marilù3 probabile che la pagina bianca si apra se usi l'opzione --writer che non è necessaria per stampare
A quel punto, dato che ormai il nome della stampante era ricavato, per sicurezza (cintura e bretelle

) ho fatto la stessa cosa anche nel rigo di
lpr: lo ho forzato a usare la stampante voluta con l'opzione
-P $PRINTER. È superfluo ma danni non ne fa
Lo script funziona anche se i nomi di cartelle o file contengono spazi.
Provato con Nautilus sulla 16.04 e sulla 18.04
Codice: Seleziona tutto
#!/bin/bash
# questo script deve stare nella cartella ~/.local/share/<FILEMANAGER>/scripts
# Tutti i file eseguibili in questa cartella appariranno nel menù «Script».
#
# Print: (according to the selection)
# all selected files
# all files in the only selected folder
# all files in current folder (no selection)
IFS=$'\n' # don't use <space>,<tab> to split words as part of expansion
# TODO eliminate the need to change $IFS
PRINTER=$(lpstat -d | grep -Eo "\S+$")
folder="$PWD"
printable="PDF|PNG|JPEG|SVG|OpenDocument|UTF-8|ASCII|Microsoft|Windows"
# FIXME
# .doc & .xls created by Excel/Word are matched only if edited by LibreOffice
# in case of no selection: print all files in current folder
if [ $# -eq 0 ]; then
selected=( $(ls "$folder") )
# if only a folder is selected, it's our target: print all its files
elif [[ $# == 1 && -d "$1" ]]; then
folder="${NAUTILUS_SCRIPT_SELECTED_FILE_PATHS%$'\n'}" # strip trailing newline
selected=( $(ls "$folder") )
# else: print all selected files
else
selected=($@)
fi
for f in ${selected[@]}; do
fileType=$(file -b "$folder/$f" | grep -Eo "$printable")
case $fileType in
OpenDocument|Microsoft|Windows )
libreoffice -pt $PRINTER "$folder/$f"
;;
PDF|PNG|JPEG|UTF-8|ASCII )
lpr -P $PRINTER "$folder/$f"
;;
SVG )
# depends on imagemagick
convert "$folder/$f" png:- | lpr -P $PRINTER
;;
* )
notify-send -i error "Non stampato '$f'"
;;
esac
[ $? -eq 0 ] || notify-send -i error "ERRORE stampando '$f'"
done
EDIT
corretta la riga di acquisizione del nome della stampante per prevedere la possibilità di caratteri speciali