Problemi in questa pagina? Segnalali in questa discussione
Introduzione
Nella seguente guida viene mostrato come ottenere la voce Stampa nel menù contestuale dei file manager Nautilus, Caja e Nemo. Sarà quindi possibile selezionare uno o più file e tramite il clic destro selezionare dal menù contestuale Script → Stampa per avviare immediatamente la stampa.
In questo modo è possibile evitare di aprire singolarmente ogni file per fare clic su Stampa.
Per Thunar si rimanda alla guida specifica.
Preparativi
Assicurarsi di aver installato il pacchetto cups e image-magick (per il formato svg).
Configurazione
Gli script sotto elencati dovranno essere creati manualmente in un'opportuna cartella a seconda del file manager in utilizzo:
File manager |
Percorso file |
Nautilus |
~/.local/share/nautilus/scripts |
Caja |
~/.config/caja/scripts |
Nemo |
~/.local/share/nemo/scripts |
Nei seguenti paragrafi viene trattata nel dettaglio la configurazione degli script.
La modalità di aggiunta voci al menù contestuale può variare in base all'ambiente grafico e al file manager in utilizzo. |
Le opzioni generali per le stampanti (come l'impostazione della stampante predefinita) sono disponibili nel centro di controllo. |
Stampa con stampante predefinita
Questo script prima riconosce il tipo di file, poi usa i comandi necessari a seconda del caso, e se invece viene selezionato un file non stampabile, ad esempio un mp3, viene notificato a schermo messaggio di errore. Verrà usata la stampante predefinita.
Funziona quando:
selezioniamo uno o più file di vari tipi contemporaneamente (PDF, testo, immagini, formati di libreoffice) click destro -> Script-> Stampa
- diamo click destro nello spazio vuoto di una cartella aperta, senza selezionare nessun file, stampa tutti quelli stampabili contenuti nella cartella
lo stesso succede se selezioniamo una cartella chiusa -> click destro -> Script-> Stampa
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Stampa
Rendere eseguibile il file appena creato.
Supponendo di utilizzare come file manager: Nautilus, inserire le seguenti stringhe nello script:
#!/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 exit 0
Avere cura di sostituire la stringa NAUTILUS con il rispettivo nome del file manager in utilizzo (ad es. CAJA).
- Salvare e chiudere il file.
Impostare stampante predefinita
Per impostare la stampante predefinita, oltre che dalle impostazione Stampanti in Centro di controllo, è possibile usare il seguente script in modo da poterlo avere anche questo nel menù contestuale
#!/bin/bash system-config-printer &
Altri Script per stampante predefinita
I seguenti non sono completi come come lo script "Stampa", ma stampano un solo tipo di file (PDF-testo-immagini oppure formati di LibreOffice) possono essere utilizzati, se lo si ritiene opportuno, a seconda delle proprie esigenze (cliccare sul link, sono elencati a fondo pagina).
Script con stampante specifica
Questo script prima riconosce il tipo di file, poi usa i comandi necessari a seconda del caso, e se invece viene selezionato un file non stampabile viene notificato a schermo messaggio di errore. Verrà usata la stampante indicata nello script. Sarà dunque possibile creare uno script per ogni stampante (esempio: Stampa con Samsung, Stampa con HP...), funziona quando:
selezioniamo uno o più file di vari tipi contemporaneamente (PDF, testo, immagini, formati di libreoffice) click destro -> Script-> Stampa
- diamo click destro nello spazio vuoto di una cartella aperta, senza selezionare nessun file, stampa tutti quelli stampabili contenuti nella cartella
lo stesso succede se selezioniamo una cartella chiusa -> click destro -> Script-> Stampa
Individuare il nome della stampante in utilizzo digitando nel terminale:
lpstat -p -d
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Stampa con nome-stampante
Rendere eseguibile il file appena creato.
- Supponendo di utilizzare:
come file manager: Nautilus
come stampante: Samsung-M2020-Series
inserire le seguenti stringhe nello script::
#!/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=Samsung-M2020-Series$ 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 Samsung-M2020-Series "$folder/$f" ;; PDF|PNG|JPEG|UTF-8|ASCII ) lpr -P Samsung-M2020-Series "$folder/$f" ;; SVG ) # depends on imagemagick convert "$folder/$f" png:- | lpr -P Samsung-M2020-Series ;; * ) notify-send -i error "Non stampato '$f'" ;; esac [ $? -eq 0 ] || notify-send -i error "ERRORE stampando '$f'" done
Avere cura di sostituire la stringa NAUTILUS con il rispettivo nome del file manager in utilizzo (ad es. CAJA) e Samsung-M2020-Series con il nome della propria stampante.
- Salvare e chiudere il file.
Altri script con stampante specifica
I seguenti non sono completi come come il precedente "Stampa con ...", ma stampano un solo tipo di file (PDF-testo-immagini oppure formati di LibreOffice) possono essere utilizzati a seconda delle proprie esigenze (cliccare sul link, sono elencati a fondo pagina).
Altri script
Stampa tutti i PDF contenuti nella cartella (predefinita)
Il seguente script stamperà tutti i file .pdf presenti in una cartella, indipendentemente dal numero di file selezionati con il mouse.
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Stampa tutti i PDF contenuti nella cartella
Rendere eseguibile il file appena creato.
Inserire le seguenti stringhe nello script:
#!/bin/bash for FILE in *.pdf *.PDF ; do lpr "$FILE" ; done
- Salvare e chiudere il file.
Stampa file selezionati (predefinita)
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Stampa file selezionati
Rendere eseguibile il file appena creato.
Supponendo di utilizzare come file manager: Nautilus, inserire le seguenti stringhe nello script:
#!/bin/bash echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read file do lpr -P "$file" done exit 0
Avere cura di sostituire la stringa $NAUTILUS con il rispettivo nome del file manager in utilizzo (ad es. $CAJA).
- Salvare e chiudere il file.
Stampa file LibreOffice selezionati (predefinita)
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Stampa file LibreOffice selezionati
Rendere eseguibile il file appena creato.
Supponendo di utilizzare come file manager: Nautilus, inserire le seguenti stringhe nello script:
#!/bin/bash echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read file do /usr/lib/libreoffice/program/swriter -p --invisible "$file" done exit 0
Avere cura di sostituire la stringa $NAUTILUS con il rispettivo nome del file manager in utilizzo (ad es. $CAJA).
- Salvare e chiudere il file
Stampa i file PDF, JPEG, PNG, TXT selezionati (specifica)
Individuare il nome della stampante in utilizzo digitando nel terminale:
lpstat -p -d
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Stampa i file PDF, JPEG e PNG, TXT selezionati
Rendere eseguibile il file appena creato.
- Supponendo di utilizzare:
come file manager: Nautilus
come stampante: Samsung-M2020-Series
inserire le seguenti stringhe nello script:
#!/bin/bash printer=Samsung-M2020-Series echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read file do lpr -P "$printer" "$file" done exit 0
Avere cura di sostituire Samsung-M2020-Series con il nome della stampante individuato al punto 1 e la stringa $NAUTILUS con il rispettivo nome del file manager in utilizzo (ad es. $CAJA).
- Salvare e chiudere il file.
Stampa file di LibreOffice selezionati (specifica)
Il seguente script è in grado di funzionare oltre che con i classici file utilizzati da LibreOffice (.odt, ods, .doc.. ), anche con file .jpeg e .png.
È possibile selezionare contemporaneamente più file di tipo differente (es. un .odt e un ods).
Individuare il nome della stampante in utilizzo digitando nel terminale:
lpstat -p -d
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Stampa file di LibreOffice selezionati
Rendere eseguibile il file appena creato.
- Supponendo di utilizzare:
come file manager: Nautilus
come stampante: Samsung-M2020-Series
inserire le seguenti stringhe nello script:
#!/bin/bash printer=Samsung-M2020-Series echo "$NAUTILUS_SCRIPT_SELECTED_FILE_PATHS" | while read file do /usr/lib/libreoffice/program/swriter -p "$printer" "$file" done exit 0
Avere cura di sostituire Samsung-M2020-Series con il nome della stampante individuato al punto 1 e la stringa $NAUTILUS con il rispettivo nome del file manager in utilizzo (ad es. $CAJA).
- Salvare e chiudere il file.
Per chi utilizza OpenOffice
Nel caso sia utilizzato OpenOffice al posto di LibreOffice:
Nello script occorre sostituire la stringa:
/usr/lib/libreoffice/program/swriter -p "$printer" "$file"
con:
openoffice4 -writer -p -invisible "$printer" "$file"
e quindi salvare e chiudere il file.
Eliminare coda di stampa
Questo ulteriore script è in grado di eliminare le code di stampa. Oltre che essere inserito nella cartella degli script può essere creato un lanciatore sulla scrivania o sul pannello.
A seconda del file manager in utilizzo, creare nella cartella opportuna lo script con il nome:
Eliminare coda di stampa
Rendere eseguibile il file appena creato.
Inserire le seguenti stringhe nello script:
#!/bin/bash cancel -a exit 0
- Salvare e chiudere il file.
Ulteriori risorse