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


12

Je garde tous mes documents sur un lecteur distinct de mon installation ubuntu, et j'ai un dossier plein de beaux fonds d'écran sur ce lecteur. Comment puis-je faire ubuntu rechercher automatiquement ce répertoire afin que les fonds d'écran apparaissent dans la boîte de dialogue du changeur de papier peint, accessible en cliquant avec le bouton droit sur le bureau et en sélectionnant Changer le papier peint du bureau ?

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é.


Une note pour toutes les réponses ci-dessous: Vous pouvez créer $HOME/.local/share/gnome-background-properties/my-wallpapers.xmlet utiliser cela, au lieu de modifier les fichiers d'arrière-plan du système.
Zan Lynx

Réponses:


9

* EDIT - Deuxième essai - et excuses immédiatement pour tout le travail de terminal - j'espère que cela devrait simplement être copier et coller les 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 modifier ce fichier pour avoir des sous-sections de papier peint ... / papier peint pointant vers votre nouveau dossier et vos fichiers de papier peint

Vous trouverez ci-dessous un script modifié à partir de cette entrée de forum qui régénérera automatiquement le fichier ubuntu-wallpapers.xml pour un dossier contenant des fichiers .png et .jpg.

copiez et collez le contenu dans un nouveau fichier texte appelé "ubuntu-wallpaper-generator"

Exécutez ensuite 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 en toute sécurité votre fichier xml actuel

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 ce 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

1
Cela ne mettra le dossier que dans votre propre dossier. Vous devez toujours importer les fonds d'écran dans le changeur.
bdr529

Peut-être que je n'ai pas été clair - désolé. Par exemple, si votre nouveau dossier de fonds d'écran se trouvait dans / media / <somedrive> / <somefolder>, alors les arrière-plans sudo ln -s / media / <somedrive> / <somefolder> répertorieraient tous vos nouveaux fonds d'écran. Si vous vouliez également les fonds d'écran standard, je copierais simplement le contenu du dossier d'arrière-plans actuel dans votre nouveau dossier de fonds d'écran. Je viens de tester cela sur Natty - lorsque je choisis "nouveaux arrière-plans" en cliquant avec le bouton droit sur le bureau, il affiche le contenu du nouveau fond d'écran du dossier sans "importer"
fossfreedom

oups - viens de voir ce qui ne va pas ...
fossfreedom

fonctionne très bien, rend le changeur de papier peint un peu lent à cause des images supplémentaires. Merci!
Slipstream

Moi aussi merci. J'ai mis votre script et cp dans un autre script et ajouté "gnome-apparence-properties --show-page = background" pour afficher la boîte de dialogue de changement. Je lance le nouveau script depuis mon menu.
bdr529


1

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

Bienvenue sur AskUbuntu! S'il s'agit d'une réponse mise à jour, vous pouvez l'ajouter à celle de Fossfreedom en tant que modification tout en mentionnant la version à laquelle cette réponse mise à jour se rapporte.
Oyibo

1

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

Exemple d'utilisation:

Pour ajouter space_galaxy.jpeget fuzz_dog.pngau 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 là que GNOME recherche les xml). Pour spécifier un autre fichier xml, utilisez l' -xoption:

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

Pour supprimer des entrées du fichier xml, utilisez l' -roption:

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

Cela fonctionne avec GNOME 3.6 et Python 3.3


0

Voilà comment je le fais.

  1. Cliquez avec le bouton droit sur le bureau> Changer l'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 sur un 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. Mauvais poste quand je le trouve.

J'en ai trouvé un appelé Wally, et c'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 peut être utile, car il n'est pas toujours pratique d'ajouter des fonds d'écran à un dossier appartenant à root à chaque fois.


Je sais que cela importe tous les fonds d'écran du dossier, mais comment puis-je le faire vérifier le dossier, donc quand j'ajoute plus au dossier, ils apparaissent automatiquement dans le sélecteur, sans avoir à les réimporter?
Slipstream

@Slipstream Modifié ma réponse.
theTuxRacer

J'ai ajouté le lien symbolique, ce que je pensais être une façon de le faire auparavant, mais ils ne semblent toujours pas apparaître là-bas ...
Slipstream

@Slipstream Oui, en effet. Ma réponse est incorrecte. J'ai vu la photo ajoutée, mais je les aurais peut-être ajoutés manuellement, il y a longtemps, ce qui a gâché les résultats. Je suis déçu. Je parie que vous l'êtes aussi. Désolé :(
theTuxRacer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.