Archivio

Posts Tagged ‘script’

Bing Homepage Gallery: indicatore per Ubuntu

Bing è poco utilizzato come motore di ricerca (Google resta il migliore), ma indubbiamente gli sfondi proposti ogni giorno sono bellissimi, e molto adatti ad essere utilizzati come sfondo del desktop.

Qui si può consultare lo storico degli sfondi di Bing: Bing Homepage Gallery

Cercavo quindi un modo per impostare rapidamente lo sfondo del desktop di Ubuntu da Bing, ed ho trovato questo articolo di OMG Ubuntu: This App Sets the Bing Image of the Day as the Wallpaper on Linux. Con questo script Python (che utilizza Cappind per creare l’indicatore) è possibile impostare automaticamente lo sfondo del desktop dallo sfondo del giorno di Bing, e nell’articolo viene spiegato come impostare lo script per l’esecuzione automatica, all’avvio della sessione.

Tuttavia, io non volevo che questa attività fosse automatica, né per giorno né per sessione, perché ci sono degli sfondi che mi piacciono particolarmente e voglio mantenerli. Inoltre, volevo poter “provare” lo sfondo odierno e tornare al precedente, se non mi piacesse, ed infine essere in grado di visualizzare la descrizione dello sfondo impostato anche successivamente.

Partendo quindi dallo script indicato nell’articolo, ho realizzato un indicatore personalizzato con le voci seguenti.

  • Today Bing Wallpaper : imposta lo sfondo all’immagine del giorno di Bing; una notifica visualizza la descrizione dell’immagine
  • Restore previous Bing Wallpaper: reimposta lo sfondo Bing precedentemente impostato
  • Show current Bing description: visualizza la descrizione dello sfondo Bing attualmente impostato

Inoltre è possibile aggiungere voci per impostare sfondi personalizzati, ad esempio slideshow di sfondi, con un comando come il seguente:

gsettings set org.gnome.desktop.background picture-uri 'file:///home/sbagnatica/.backgrounds/BingTheme.xml' & ;;
"Vladstudio" )

Per come creare facilmente slideshow di sfondi in Ubuntu, a partire da una cartella, rimando al mio precedente articolo: Script Nautilus per creare un slideshow di sfondi

Qui il link per scaricare lo script: wallpaper-indicator.zip

Nota: i file show_current_bing_desc.shwallpaper-indicator.sh vanno modificati in base alla directory di installazione, e alla cartella in cui si desidera scaricare gli sfondi. Gli sfondi da me utilizzati sono:

  • /opt/scripts -> directory di installazione
  • /home/sbagnatica/Immagini/BingWallpapers -> directory per gli sfondi di Bing
Annunci

Script Nautilus per creare un slideshow di sfondi

Avrete notato che da alcune versioni di Ubuntu nella schermata di selezione dello sfondo sono presenti, oltre alle normali immagini, degli elementi contrassegnati da un’icona a forma di orologio: si tratta di raccolte di sfondi (background  slideshow), impostate affinché lo sfondo visualizzato cambi ad intervalli regolari.

slideshow

Può capitare di avere una propria cartella con diversi sfondi (es. la fantastica raccolta di Vladstudio), in questo caso come rendere disponibile questa raccolta all’interno della finestra di impostazione?

Svariate modalità, più o meno semplici, sono state spiegate nella domanda How do I create a desktop wallpaper slideshow? su Ask Ubuntu, tuttavia io ho preferito prendere spunto dalla risposta di borjacampina e trasformare il codice proposto in uno Script Nautilus.

Lo script è visualizzabile e scaricabile da qui: http://paste.ubuntu.com/8091445/

E’ sufficiente inserirlo nella cartella .local/share/nautilus/scripts, rinominandolo con un nome a propria scelta (sarà il nome dello script, non deve necessariamente finire per .sh), quindi in Nautilus si potrà selezionare la cartella contenente gli sfondi, fare click destro > Scripts > Crea slideshow sfondi (o il nome scelto).

Tecnicamente questo script crea un file XML nella cartella .backgrounds, con l’elenco di tutte le immagini, e il file XML di definizione per Gnome nella cartella .local/share/gnome-background-properties.

Nota: il file XML viene creato con lo stesso nome della cartella selezionata, che deve quindi essere univoco.

Categorie:Guide Tag:, ,

Script Nautilus per conversione audio / video

Diverse volte mi sono trovato nella necessità di convertire rapidamente dei file video (es. file FLV) in formati adatti a lettori multimediali, quindi i classici MP3 per l’audio e AVI-Xvid per il video. Ho cercato e provato diversi programmi grafici per fare questo in Ubuntu (vedi miei post su WinFF), ma non mi hanno mai convinto del tutto.

Visto che le mie esigenze erano molto semplici, ho pensato quindi di farmi due script Nautilus da richiamare rapidamente dal gestore file, con il tasto destro:

Esempio di menu Nautilus script

In questi script ho utilizzato avconv per la conversione (il sostituto di ffmpeg in Ubuntu), ma se si usa ancora FFmpeg dovrebbe bastare sostituirne il comando “avconv” con “ffmpeg”.

Per avere un riscontro dell’esecuzione della conversione, che altrimenti avverrebbe in una shell senza alcun output, ho utilizzato Zenity, che si può installare con il comando seguente:

sudo apt-get install zenity

Questo lo script per la conversione in MP3, per cui non è necessario passare alcun particolare parametro ad avconv (il formato viene stabilito dall’estensione del file di output):

#!/bin/bash
NUMBER_OF_FILES=$#
PROGRESS=0
let "INCREMENT=100/$NUMBER_OF_FILES"
(for arg do
 echo "$PROGRESS";
 echo "# Conversione in corso: $arg";
 avconv -y -i "$arg" "${arg%.*}.mp3"
 let "PROGRESS+=$INCREMENT"
done
) | zenity --progress  --title="Conversione in MP3" --percentage=0 --auto-kill --auto-close

Questo lo script per la conversione video in AVI con codifica Xvid, per cui invece è necessario specificare il codec video MPEG4 (-vcodec mpeg4) e la codifica Xvid (-vtag xvid):

#!/bin/bash
NUMBER_OF_FILES=$#
PROGRESS=0
let "INCREMENT=100/$NUMBER_OF_FILES"
(for arg do
 echo "$PROGRESS";
 echo "# Conversione in corso: $arg";
 avconv -y -i "$arg" -acodec libmp3lame -vcodec mpeg4 -vtag xvid "${arg%.*}.avi"
 let "PROGRESS+=$INCREMENT"
done
) | zenity --progress  --title="Conversione in AVI-Xvid" --percentage=0 --auto-kill --auto-close

Gli script vanno inseriti in due file distinti nella cartelle seguenti (raggiungibile anche dal gestore file con tasto destro > Script > apri cartella degli script, che compare però quando c’è già almeno uno script):

Nautilus 3.4 o precedente: ~/.gnome2/nautilus-scripts
Nautilus 3.6 o successsivo: ~/.local/share/nautilus/scripts

Il nome dato al file sarà il nome della voce di menu, non è quindi necessaria l’estensione .sh.

Modifica 19 agosto 2014 – Mi è capitato di dover convertire dei video registrati con la TV (di marca Haier), che avconv non è in grado di leggere. Ho quindi creato una nuova versione dello script di conversione in AVI utilizzando Mencoder, che riporto di seguito. L’unica differenza è la sostituzione del comando avconv con mencoder. Non mi è risultato necessario specificare esplicitamente la codifica XVID, in quanto il default per l’output AVI.

#!/bin/bash
NUMBER_OF_FILES=$#
PROGRESS=0
let "INCREMENT=100/$NUMBER_OF_FILES"
(for arg do
 echo "$PROGRESS";
 echo "# Conversione in corso: $arg";
 mencoder "$arg" -o "${arg%.*}.avi" -oac mp3lame -ovc lavc
 let "PROGRESS+=$INCREMENT"
done
) | zenity --progress  --title="Conversione in AVI-Xvid" --percentage=0 --auto-kill --auto-close
Categorie:Guide Tag:, ,

Scansione antivirus tramite script nautilus

In ambiente Linux praticamente i virus non esistono, e per questo motivo nelle installazioni Linux desktop gli antivirus sono poco diffusi. Tuttavia può essere utile scansionare un file o una cartella, contenenti software Windows, prima di passarli ad un PC con il sistema operativo Microsoft, dove invece i virus posso proliferare.

Per questo script nautilus sono richiesti ClamAV, famoso antivirus open source, e Zenity, utile per esporre visualmente l’output di comandi da console. I pacchetti da installare per l’antivirus sono libclamav6, clamav-base, clamav-freshclam, clamav; in una riga di comando:

sudo apt-get install libclamav6 clamav-base clamav-freshclam clamav

Per il software Zenity basta invece il pacchetto omonimo:

sudo apt-get install zenity

Lo script nautilus da creare nella cartella .gnome2/nautilus-scripts della propria home, a cui io ho dato il nome “Scansione Antivirus” è il seguente:

#!/bin/sh
for arg 
do
 clamscan -i -r "$arg" | zenity --text-info
done

E’ molto semplice: per ogni file / cartella selezionati richiama il comando di scansione “clamscan”, e ne passa il risultato ad una finestra testuale di zenity, che verrà compilata man mano. Il comando -i serve per visualizzare solo i file infetti, in caso contrario si vedrebbe scorrere l’elenco di tutti i file scansionati, il che può risultare piuttosto scomodo; il comando -r serve per estendere la ricerca ad eventuali sottocartelle.

Avvio dello script Scansione Antivirus

Avvio dello script di scansione antivirus, dal menu contestuale di una cartella. Ogni script contenuto in .gnome2/nautilus-scripts verrà elencato qui.

Risultato dello script Scansione Antivirus

Esempio di risultato dello script di scansione antivirus, visualizzato in una finestra a scorrimento con zenity. Vengono elencati eventuali file infetti, ed infine il sommario della scansione.

Categorie:Guide Tag:, , ,

Script regolazione luminosità LCD per Ubuntu Lucid

In Ubuntu 10.04 Lucid Lynx, vari utenti hanno segnalato l’impossibilità di gestire la luminosità dello schermo LCD dei notebook, nemmeno con il tasti funzione del portatile. In Ubuntu Karmic funzionava correttamente, sia in modo automatico, abbassando la luminosità durante il funzionamento a batteria, sia manualmente con i tasti funzione. Il problema sembra avvenire se si utilizzano driver proprietari Nvidia o Ati (fglrx).

Non riuscendo a ripristinare il normale funzionamento, ho realizzato uno script bash per diminuire o aumentare la luminosità, che ho quindi associato ai tasti funzione (nel mio caso FN+F5 e FN+F6). Nel mio caso si tratta di un notebook Sony Vaio VGN-FW31E, con scheda grafica Ati Radeon, quindi driver fglrx.

Questo lo script, che ho salvato in /opt/brightness.sh (potete quindi crearlo con il comando sudo gedit /opt/brightness.sh )

#!/bin/bash
maxbrightness=$(cat /sys/class/backlight/acpi_video0/max_brightness)
curbrightness=$(cat /sys/class/backlight/acpi_video0/brightness)
let brightness=$curbrightness

if [ $# -gt 0 ]; then
   if [ $1 = "+" ]; then
      if [ $curbrightness -lt $maxbrightness ]; then
         let $((brightness++));
      fi
   fi

   if [ $1 = "-" ]; then
      if [ $curbrightness -gt 0 ]; then
         let $((brightness--));
      fi
   fi
fi

echo $brightness > /sys/class/backlight/acpi_video0/brightness

Attenzione: il percorso esatto “/sys/class/backlight/acpi_video0” può cambiare in base alla marca e al modello del notebook. Verificare da terminale con il comando: ls /sys/class/backlight/

Ho dato quindi i permessi di esecuzione allo script:

sudo chmod a+x /opt/brightness.sh

Inoltre, per evitare di dover ogni volta esguire lo script come root, ho abilitato la scrittura sul file “brightness” per il gruppo “admin” (che comprende anche il mio utente):

sudo chgrp admin /sys/class/backlight/acpi_video0/brightness
sudo chmod g+w /sys/class/backlight/acpi_video0/brightness

Nota: ad ogni riavvio questo file di sistema viene azzerato, quindi è utile schedulare ad ogni avvio, questi comandi per dare l’accesso in scrittura al proprio gruppo. Io l’ho fatto inserendo questi comandi in uno script in init.d:

echo chgrp admin /sys/class/backlight/acpi_video0/brightness | sudo tee /etc/init.d/brightness_access
echo chmod g+w /sys/class/backlight/acpi_video0/brightness | sudo tee -a /etc/init.d/brightness_access
sudo chmod +x /etc/init.d/brightness_access
sudo update-rc.d brightness_access defaults

A questo punto, è possibile richiamare lo script “/opt/brightness.sh” passando come parametro “-” per diminuire la luminosità, “+” per aumentarla:

/opt/brightness -
/opt/brightness +

Per comodità si può infine associare questi comandi a dei tasti di scelta rapida, magari proprio i tasti funzione originariamente previsti dal notebook. Per fare questo attivare Preferenze > Scorciatoie da tastiera, dal menu Gnome, premere Aggiungi, inserire un nome, es. “Luminosità Riduci” e il comando /opt/brightness.sh – (vedi screenshot); ripetere la stessa operazione per la scorciatoia “Luminosità Aumenta” associata al comando /opt/brightness.sh + .

Impostazione delle scorciatoie da tastiera per lo script "brightness.sh"

Facendo click sulla voce “Disabilitata” nella seconda colonna, in corrispondenza delle nuove scorciatoie, premere le combinazione di tasti desiderate, nel mio caso FN+F5 e FN+F6, che vengono viste proprio come “XF86MonBrightnessDown” e “XF86MonBrightnessUp”.

A questo punto, se tutto è andato bene, sarà possibile diminuire e aumentare la luminosità dello schermo con i tasti selezionati.

Categorie:Guide Tag:, ,

OCR su file PDF tramite script nautilus

Nell’articolo Scansione testo con OCR su Linux, ho spiegato come effettuare l’acquisizione di testo OCR direttamente al termine di una scansione effettuata con l’applicativo XSane, sfruttando ImageMagick e Tesseract. In Ubuntu 10.04 il software predefinito per la scansione è il nuovo Simple Scan, ottimo dal punto di vista della semplicità e della velocità d’uso, ma come ci si poteva aspettare, carente di funzionalità OCR. Peraltro Simple Scan consente di salvare le scansioni multipagina in formato PDF, e non TIFF, richiedendo di conseguenza la conversione a quest’ultimo formato per la maggior parte degli applicativi OCR gratuiti.

Con questo articolo, vedremo come creare uno “script nautilus“, cioè una sequenza di comandi richiamabile dal menu contestuale di Nautilus, cioè il tasto destro su un file o una cartella.

Nel menu vengono elencati tutti i file eseguibili presenti nella cartella nascosta .gnome2/nautilus-scripts dell’utente. Dopo aver aperto la propria Cartella home, attivare dal menu Visualizza la voce Mostra file nascosti, aprire quindi la cartella .gnome2, e al suo interno nautilus-scripts.

Creare un file vuoto (tasto destro > Crea documento > File vuoto), modificarlo nell’editor di testo inserendo lo script. Infine per renderlo eseguibile, accedere alle proprietà del file (tasto destro > Proprietà) e nella scheda Permessi attivare l’opzione Consentire l’esecuzione del file come programma.

Tornando allo script oggetto di questo articolo, esso richiede i pacchetti: imagemagick, tesseract-ocr, tesseract-ocr-ita (per il dizionario parole italiano), installabili quindi tramite il comando:

sudo apt-get install imagemagick tesseract-ocr tesseract-ocr-ita

Lo script nautilus da creare nella cartella .gnome2/nautilus-scripts, a cui io ho dato il nome “Scansione OCR” è il seguente:

#!/bin/sh
for arg
do
 if [ ${arg##*.} = "pdf" ]
 then
 convert -colorspace rgb -density 500 "$arg" -resize 50% -monochrome -median 1 /tmp/scansione_ocr_tmp.tif | zenity --progress --pulsate --text="Conversione in TIFF in corso..." --auto-close
 tesseract /tmp/scansione_ocr_tmp.tif "$arg".txt -l ita  | zenity --progress --pulsate --text="Acquisizione OCR in corso..." --auto-close
 rm /tmp/scansione_ocr_tmp.tif
 else
 tesseract "$arg" "$arg".txt -l ita  | zenity --progress --pulsate --text="Acquisizione OCR in corso..." --auto-close
 fi
done

Lo script completo è scaricabile a questo indirizzo: http://paste.ubuntu.com/8091658/

Funzionamento: lo script esegue anzitutto un controllo sull’estensione del file; se è PDF esegue la conversione in formato TIFF, nella cartella temporanea /tmp, lancia l’acquisizione OCR, quindi elimina il file TIFF temporaneo; se è un formato diverso (es. è già TIF), avvia direttamente l’acquisizione OCR.

La conversione PDF > TIFF viene eseguita tramite il comando convert della libreria ImageMagick; tra le opzioni ho specificato -monochrome, per ottenere un TIFF in bianco/nero (più facile da elaborare) e -median 1, per pulire l’immagine dalle imperfezioni tramite il Median Filter. I più esperti di ImageMagick, potranno arricchire il comando con ulteriori perfezionamenti.

L’acquisizione OCR genera quindi il testo in un file nella stessa cartella del PDF sorgente, chiamato <nomefilesorgente>.txt.

Infine, i comandi zenity servono per ottenere a video una finestra che indica lo stato dell’operazione.

Penso che questo script possa essere utile, sicuramente si più migliorare e perfezionare, ma semplifica il procedimento di acquisizione OCR, che il Linux resta un “punto critico”.


Aggiornamento 17/01/2015: i parametri precedente utilizzati per la conversione in TIFF, sembrano non andare più bene alla libreria Tesseract. Prendendo spunto dall’articolo “Using Tesseract OCR with PDF scans” ho quindi modificato lo script, rimuovendo -colorspace rgb e -monochrome, e aggiungendo -depth 8; inoltre ho modificato i DPI (density) a 300.

Lo script aggiornato è scaricabile a questo indirizzo: http://paste.ubuntu.com/9769367/

Categorie:Guide Tag:, , , ,