Como faço para criar e definir automaticamente papéis de parede baseados em citações aleatórias?

2

Gosto muito de citações e gostaria de exibi-lo na minha área de trabalho como papel de parede.

Printed quote on the middle of the plain image as desktop wallpaper.

Existe algum software para fazer este trabalho? Eu sei que há muito software para exibir imagens aleatórias como papel de parede, mas este deve gerar imagens com texto e exibi-lo como papel de parede.

    
por ukanth 19.01.2010 / 11:26

1 resposta

4

Você pode escrever um script bash para fazer isso por você. Baseado no tutorial do xplanet (para definir o papel de parede, é algum gconf-magic;)) e este tópico para escrever o texto usando imagemagick.

Algo parecido com isto:

#!/bin/bash

convert -font "./verdana.ttf" -fill "#101411" -pointsize 33 -gravity "West" -draw "text 1,0 'foobar'" bg.png text.png
gconftool -t str -s /desktop/gnome/background/picture_filename text.png

Aqui vamos nós, um cheio de recursos 'crie um papel de parede com uma citação aleatória sobre ele', que pode até ser modificado para 'escolher um papel de parede aleatório para imprimir uma citação aleatória sobre ele'. ;)

Uso: Basta olhar para a seção de conf. Divirta-se!

#!/bin/bash

# This is a script which prints random quotes (gathered from files) on to
# a defined wallpaper.
# Some ideas are coming from the xplanet-script located at: http://rbrusu.com/xplanet-desktop-wallpape.html

# Written by Robert 'Bobby' Zenz ([email protected])
# Written for UK at Superuser.com


# Config-Section
# --------------
quote=~/quotes.txt              # Set this to a folder, for picking random files, or set
                                # set it to a file, to pick random lines
wallpaper=~/wallpapers/         # Set it to a fixed wallpaper, or to a folder to pick
                                # a random one inside that
tempPic=tempWall.png            # The name of the temporary file

textSize=33                     # The size of the text
textColor="#555555"             # The color of the text (watch the quotation marks!)

sleep=3m                        # Set how long the script will pause before
                                # picking a new wallpaper/quote
#---------------


# Global variable, please ignore this...
pickedFile=GlobalyDefined
pickedQuote=GlobalyDefined
pickedWallpaper=GlobalyDefined

function getRandomLine {
    pickedQuote=$(shuf -n 1 $1)
}

function getRandomFile {
    cd $1

    set -- *
    length=$#
    random_num=$(( $RANDOM % ($length + 1) ))

    pickedFile=${!random_num}

    while [ ! -e $pickedFile ]; do
        pickedFile=${!random_num}
    done

    pickedFile=$(pwd)/$pickedFile

    cd -
}

function main {
    if [ -d $quote ]; then
        getRandomFile $quote
        pickedQuote=$(cat $pickedFile)
    fi
    if [ -f $quote ]; then
        getRandomLine $quote
    fi

    if [ -d $wallpaper ]; then
        getRandomFile $wallpaper
        pickedWallpaper=$pickedFile
    fi
    if [ -f $wallpaper ]; then
        pickedWallpaper=$wallpaper
    fi

    convert -fill "$textColor" -pointsize $textSize -gravity "Center" -draw "text 1,0 '$pickedQuote'" $pickedWallpaper $tempPic
    gconftool -t str -s /desktop/gnome/background/picture_filename $tempPic

    sleep $sleep
    exec $0
}

main

Esse script agora tem uma casa no GitHub .

    
por 19.01.2010 / 12:03