web-dev-qa-db-fra.com

Comment définir un autre répertoire de recherche pour les fonds d'écran?

Je conserve tous mes documents sur un lecteur distinct de mon installation d'ubuntu, et j'ai un dossier plein de fonds d'écran Nice sur ce lecteur. Comment puis-je faire en sorte que Ubuntu recherche automatiquement ce répertoire afin que les fonds d’écran apparaissent dans la boîte de dialogue du changement de fond d’écran, accessible par un clic droit sur le bureau et en sélectionnant Changer le fond d’écran?

Edit: J'ai essayé de mettre un lien symbolique dans le dossier / usr/share/backgrounds sur l'autre lecteur et cela n'a pas fonctionné.

12
Slipstream

* EDIT - Deuxième essai - et des excuses immédiatement pour tout le travail terminal - j'espère que cela devrait simplement être un copier-coller des entrées en surbrillance *

le dossier contenant les détails des fonds d'écran gnome s'appelle /usr/share/gnome-background-properties/ubuntu-wallpapers.xml.

Vous pouvez éditer ce fichier comme fond d'écran .../sous-sections de papier peint pointant vers votre nouveau dossier et les fichiers de papier peint

Ci-dessous se trouve un script modifié à partir de ce forum entrée qui régénérera automatiquement le fichier ubuntu-wallpapers.xml pour un dossier contenant les fichiers .png et .jpg.

copier et coller le contenu dans un nouveau fichier texte appelé "ubuntu-wallpaper-generator"

Puis exécutez le fichier avec la syntaxe

sh ubuntu-wallpaper-generator <path to new wallpaper folder>

Cela générera un fichier appelé ubuntu-wallpapers.xml dans le même dossier que celui où vous exécutez ce script.

Sauvegardez votre fichier xml actuel en toute sécurité, i.e.

Sudo cp /usr/share/gnome-background-properties/ubuntu-wallpapers.xml /usr/share/gnome-background-properties/ubuntu-wallpapers.xml.backup

la copie dans le fichier nouvellement généré

Sudo cp ubuntu-wallpapers.xml /usr/share/gnome-background-properties/ubuntu-wallpapers.xml

Voici le fichier de script auquel j'ai fait référence:

#!/bin/bash
#
# This script will take all wallpapers in a given folder and
# make them available as "default" background in the "Change Background" gui
# frontend in Ubuntu.
#
################################################################################

#CONFIG_DIR="/usr/share/gnome-background-properties"
CONFIG_DIR="./"
XML_FILE="$CONFIG_DIR/ubuntu-wallpapers.xml"

if [ $# -ne 1 ]; then
   echo "*** syntax ubuntu-wallpaper-generator <path to wallpaper folder> ***"
   echo "*** for example ***"
   echo "*** ubuntu-wallpaper-generator /usr/share/backgrounds ***"
   exit 1
else
   WALLPAPER_DIR=$1
   echo "*** parameters passed: $1 ***"
fi

#### First check if we have write permissions to the share dirctory. ####
touch $CONFIG_DIR/testfile >/dev/null 2>/dev/null
if [ $? -ne 0 ]; then
   echo "**** No permissions to the desktop share directory. ****"
   echo "**** $CONFIG_DIR ****"
   echo "**** Procedure Terminated. ****"
   exit 1
else
   rm $CONFIG_DIR/testfile 2>/dev/null
fi

#### Show the script description message. ###
cat <<EOF

################################################################################
     This script makes all pictures in the $WALLPAPER_DIR
     directory available to all users defined on this system as their
     system-wide GNOME wallpapers.
################################################################################
EOF

#### Fail if the wallpaper directory does not exist. ####
if [ ! -d $WALLPAPER_DIR ]; then
    echo "**** The wallpaper directory \"$WALLPAPER_DIR\" does not exist. ****"
    echo "**** Precedure Terminated. ****"
    exit 1
fi

#### Count the number of jpg/jpeg/png images. ####
numfiles=`ls -1 $WALLPAPER_DIR/*.jpg WALLPAPER_DIR/*.jpeg WALLPAPER_DIR/*.png 2>/dev/null | wc -l`

#### If there are no image files there then exit. ####
if [ $numfiles -eq 0 ]; then
    echo "**** The wallpaper directory \"$WALLPAPER_DIR\" has no images. ****"
    echo "**** Precedure Terminated. ****"
    exit 1
fi

#### Now we create the XML file containing the images for backgrounds. ####
#### Start by creating the header in the XML file. ####
cat <<EOF > $XML_FILE
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
<wallpapers>
EOF

#### Add each file to the XML file. ####
#### Doing it this way makes sure files with spaces in their names are ####
#### handled properly.   (ls .... | while read fname; do)              ####
ls -1 $WALLPAPER_DIR/*.jpg $WALLPAPER_DIR/*.png $WALLPAPER_DIR/*.jpeg 2> /dev/null |
while read image_name; do
   echo "   Adding: `basename "$image_name"`."
   fname=`basename "$image_name"`
   fname="${fname%%\.*}"
   echo "  <wallpaper>"                          >> $XML_FILE
   echo "    <name>$fname</name>"                >> $XML_FILE
   echo "    <filename>$image_name</filename>"   >> $XML_FILE
   echo "    <options>stretched</options>"       >> $XML_FILE
   echo "    <pcolor>#c58357</pcolor>"           >> $XML_FILE
   echo "    <scolor>#c58357</scolor>"           >> $XML_FILE
   echo "    <shade_type>solid</shade_type>"     >> $XML_FILE
   echo "  </wallpaper>"                         >> $XML_FILE
done

#### Create the footer for the XML file. ####
echo "</wallpapers>"                             >> $XML_FILE

cat <<EOF
################################################################################
     You're almost done. copy the generated file ubuntu-wallpapers.xml to the
     folder /usr/shared/gnome-background-properties
     REMEMBER to backup the current ubuntu-wallpaper.xml in that folder first!
################################################################################

EOF
9
fossfreedom

J'ai rencontré le même problème et j'ai écrit un script python pour modifier un fichier XML personnalisé pouvant être placé dans /usr/share/gnome-background-properties/my-backgrounds.xml. C'est sur GitHub .

Exemple d'utilisation:

Pour ajouter space_galaxy.jpeg et fuzz_dog.png au fichier XML:

python my-backgrounds.py -a space_galaxy.jpeg fuzzy_dog.png -n "Cool Galaxy" "Cute Dog"

Notez que le fichier XML par défaut est à /usr/share/gnome-background-properties/my-backgrounds.xml (c'est ici que GNOME surveille les fichiers XML). Pour spécifier un autre fichier XML, utilisez l'option -x:

python my-backgrounds.py -a space_galaxy.jpeg -x ~/my-backgrounds.xml

Pour supprimer des entrées du fichier XML, utilisez l'option -r:

python my-backgrounds.py -r "Cool Galaxy" fuzzy_dog.png

Cela fonctionne avec GNOME 3.6 et Python 3.3

1
jameh

Avec CreBS (Create Background Slideshow), vous pouvez créer les fichiers XML pour les diaporamas de fond d'écran. Les chemins d'accès complets aux images sont stockés dans le fichier XML, ce qui évite de déplacer les fichiers.

https://launchpad.net/crebs

http://www.obfuscatepenguin.net/crebs/

1
type

voici une mise à jour:

    #!/bin/bash

    ################################################################################
    # This script will take all wallpapers in a given folder and
    # make them available as options in the "change desktop background" OR "system->pref->apperances"
    # dialog boxes.
    # for ubuntu or debian
    #    wallpapers are in /usr/share/pixmaps/backgrounds/gnome OR /usr/share/backgrounds
    #    config file(s) for the dialog are in /usr/share/gnome-background-properties
    # --that will make them system wide. 
    #
    #ToDo:
    #  paths with spaces.
    ################################################################################

    # put the output in the same directory as this script
    OutDirectory="$( cd "$( dirname "$0" )" && pwd )"
    OutFile="$OutDirectory/gnome-added.xml"

    # options
    options="zoom"      #zoom is best but stretch,center,scale,tile,span
    shade_type="solid"  #horizontal-gradient, vertical-gradient    
    pcolor="#000000"
    scolor="#000000"


    if [ $# -ne 1 ]; then
       echo "*** need path to directory containing files to include."
       echo "*** for example:     /usr/share/backgrounds"
       exit 1
    else
       ScanDirectory=$1
    fi

    #------need to strip and trailing "/" or this writes incorrect file names.
    # not if [ "$lastchr" -eq "/" ]
    # lastchr=`expr substr $ScanDirectory ${#ScanDirectory} 1`  #--OR:
    lastchr=${ScanDirectory#${ScanDirectory%?}}
    if [ "${lastchr}" = "/" ]; then
       ScanDirectory=${ScanDirectory%?}
    fi
    #--operating in same directory as the script? set full path for the xml file
    if [ ${#ScanDirectory} -le 1 ]; then
            ScanDirectory=$OutDirectory
    fi

    # ---does directory exist
    if [ ! -d $ScanDirectory ]; then
        echo "**** The wallpaper directory \"$ScanDirectory\" does not exist. ****"
        echo "**** Precedure Terminated. ****"
        exit 1
    fi
    # ----can we write to it?
    # touch $OutDirectory/testfile >/dev/null 2>/dev/null
    # if [ $? -ne 0 ]; then
    if [ ! -w $OutDirectory ]; then
       echo "**** No permissions to the desktop share directory. ****"
       echo "**** $OutDirectory ****"
       echo "**** Procedure Terminated. ****"
       exit 1
    fi


    #### Count the number of jpg/jpeg/png/svg [tif(f)] images. ####
    numfiles=`ls -1 $ScanDirectory/*.jpg ScanDirectory/*.jpeg ScanDirectory/*.png ScanDirectory/*.svg 2>/dev/null | wc -l`

    #### If there are no image files there then exit. ####
    if [ $numfiles -eq 0 ]; then
        echo "**** The wallpaper directory \"$ScanDirectory\" has no images. ****"
        echo "**** Precedure Terminated. ****"
        exit 1
    fi

    #### Now we create the XML file containing the images for backgrounds. ####
    #### Start by creating the header in the XML file. ####
    cat <<EOF > $OutFile
    <?xml version="1.0" encoding="UTF-8"?>
    <!DOCTYPE wallpapers SYSTEM "gnome-wp-list.dtd">
    <wallpapers>
    EOF

    #### Add each file to the XML file. ####
    #### Doing it this way makes sure files with spaces in their names are ####
    #### handled properly.   (ls .... | while read fname; do)              ####
    ls -1 $ScanDirectory/*.jpg $ScanDirectory/*.png $ScanDirectory/*.jpeg $ScanDirectory/*.svg 2> /dev/null |
    while read image_name; do
       fname=`basename "$image_name"`
       echo "   Adding: $fname."

       echo "  <wallpaper deleted=\"false\">"          >> $OutFile
       echo "    <name>$fname</name>"                >> $OutFile
       echo "    <filename>$image_name</filename>"   >> $OutFile
       echo "      <options>$options</options>"       >> $OutFile
       echo "      <pcolor>$pcolor</pcolor>"           >> $OutFile
       echo "      <scolor>$scolor</scolor>"           >> $OutFile
       echo "      <shade_type>$shade_type</shade_type>"     >> $OutFile
       echo "  </wallpaper>"                         >> $OutFile
    done

    #### Create the footer for the XML file. ####
    echo "</wallpapers>"                             >> $OutFile
1
Alan Harcanon

C'est comme ça que je le fais.

  1. Cliquez avec le bouton droit sur le bureau> Changer d'arrière-plan.

  2. Cliquez sur Ajouter dans l'onglet Arrière-plan.

  3. Allez dans le dossier et sélectionnez tous les fonds d'écran en cliquant dessus et en appuyant sur Ctrl + A.

Ils devraient maintenant être affichés dans le sélecteur. J'essaie également de trouver une petite application que j'avais utilisée pour changer automatiquement le fond d'écran. Ill post quand je le trouve.

J'en ai trouvé un qui s'appelle Wally et il est fortement recommandé, mais je me souviens que je ne l'avais pas utilisé. Quoi qu’il en soit, vous pouvez l’installer en tapant

Sudo apt-get install wally

dans un terminal.

Pour afficher les fonds d'écran dans le sélecteur, sans avoir à mettre à jour manuellement le dossier, vous devrez les ajouter à /usr/share/backgrounds.

J'ai également pu lister les fonds d'écran dans le sélecteur, en créant un lien symbolique dans le dossier.

$ cd /usr/share/backgrounds
$ ln -s /path/to/wallpapers

Cela pourrait être utile, car il ne serait pas toujours pratique d’ajouter des fonds d’écran à un dossier appartenant à root à chaque fois.

0
theTuxRacer