Wie lege ich ein anderes Suchverzeichnis für Hintergrundbilder fest?


12

Ich bewahre alle meine Dokumente auf einem von meiner Ubuntu-Installation getrennten Laufwerk auf und ich habe einen Ordner voller netter Hintergrundbilder auf diesem Laufwerk. Wie kann ich dafür sorgen, dass Ubuntu dieses Verzeichnis automatisch durchsucht, sodass Hintergrundbilder im Hintergrundbildwechseldialog angezeigt werden, der durch Klicken mit der rechten Maustaste auf den Desktop und Auswählen von Desktop-Hintergrund ändern aufgerufen wird ?

Bearbeiten: Ich habe versucht, einen Symlink im Ordner / usr / share / backgrounds auf das andere Laufwerk zu legen , und das hat nicht funktioniert.


Eine Anmerkung für alle Antworten unten: Sie können diese erstellen $HOME/.local/share/gnome-background-properties/my-wallpapers.xmlund verwenden, anstatt die Systemhintergrunddateien zu bearbeiten.
Zan Lynx

Antworten:


9

* BEARBEITEN - Zweiter Versuch - und entschuldige mich sofort für die ganze Arbeit am Terminal - hoffentlich sollte dies nur das Kopieren und Einfügen der hervorgehobenen Einträge sein *

Der Ordner, der die Details der Gnome-Hintergründe enthält, heißt /usr/share/gnome-background-properties/ubuntu-wallpapers.xml

Sie können diese Datei so bearbeiten, dass sie Unterabschnitte für Hintergrundbild ... / wallpaper enthält, die auf Ihre neuen Ordner- und Hintergrundbilddateien verweisen

Im Folgenden finden Sie ein Skript aus diesem Forum geänderten Eintrag , der die ubuntu-wallpapers.xml Datei automatisch einen Ordner mit .png und JPG - Dateien regenerieren.

Kopieren Sie den Inhalt und fügen Sie ihn in eine neue Textdatei mit dem Namen "Ubuntu-Wallpaper-Generator" ein.

Führen Sie dann die Datei mit der Syntax aus

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

Dadurch wird eine Datei mit dem Namen ubuntu-wallpapers.xml in demselben Ordner erstellt, in dem Sie dieses Skript ausführen.

Sichern Sie sicher Ihre aktuelle XML-Datei dh

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

die Kopie in der neu erzeugten Datei

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

Hier ist die Skriptdatei, auf die ich mich bezog:

#!/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
Dadurch wird nur der Ordner auf Ihren eigenen Ordner festgelegt. Sie müssen die Hintergrundbilder noch in den Wechsler importieren.
bdr529

Vielleicht war ich mir nicht sicher - tut mir leid. Wenn sich Ihr neuer Hintergrundbildordner beispielsweise in / media / <somedrive> / <somefolder> befindet, werden in sudo ln -s / media / <somedrive> / <somefolder> Hintergründe alle Ihre neuen Hintergrundbilder aufgelistet. Wenn Sie auch die Standardhintergründe haben möchten, kopiere ich einfach den aktuellen Hintergrundordnerinhalt in Ihren neuen Hintergrundordner. Ich habe dies gerade auf Natty getestet. Wenn ich mit der rechten Maustaste auf den Desktop auf "Neue Hintergründe"
klicke

oops -
hab

funktioniert prima, lässt den Tapetenwechsler aber wegen der zusätzlichen Bilder etwas langsamer laufen. Vielen Dank!
Slipstream

Ich auch, danke. Ich habe Ihr Skript und cp in ein anderes Skript eingefügt und "gnome-appear-properties --show-page = background" hinzugefügt, um den Änderungsdialog anzuzeigen. Ich starte das neue Skript aus meinem Menü.
bdr529


1

Hier ist ein Update:

    #!/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

Willkommen bei AskUbuntu! Wenn es sich um eine aktualisierte Antwort handelt, können Sie sie als Bearbeitung zu Fossfreedom hinzufügen und dabei angeben, zu welcher Version diese aktualisierte Antwort gehört.
Oyibo,

1

Ich hatte das gleiche Problem und schrieb ein Python-Skript, um eine benutzerdefinierte XML-Datei zu bearbeiten, in die ich sie einfügen kann /usr/share/gnome-background-properties/my-backgrounds.xml. Es ist auf GitHub .

Beispielverwendung:

So fügen Sie space_galaxy.jpegund fuzz_dog.pngzur XML-Datei hinzu:

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

Beachten Sie, dass sich die Standard-XML-Datei unter befindet /usr/share/gnome-background-properties/my-backgrounds.xml(hier sucht GNOME nach den XML- Dateien ). Verwenden Sie die folgende -xOption, um eine alternative XML-Datei anzugeben :

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

Um Einträge aus der XML-Datei zu entfernen, verwenden Sie die -rOption:

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

Dies funktioniert mit GNOME 3.6 und Python 3.3


0

So mache ich es.

  1. Klicken Sie mit der rechten Maustaste auf den Desktop> Hintergrund ändern.

  2. Klicken Sie auf der Registerkarte Hintergrund auf Hinzufügen.

  3. Gehen Sie in den Ordner und wählen Sie alle Hintergrundbilder aus, indem Sie auf eines klicken und Ctrl+ drücken A.

Sie sollten jetzt im Auswahlfenster angezeigt werden. Ich versuche auch, eine kleine App zu finden, die ich verwendet habe, um das Hintergrundbild automatisch zu ändern. Ich poste, wenn ich es finde.

Ich fand einen namens Wally, und es ist sehr zu empfehlen, aber ich erinnere mich, dass ich diesen nicht benutzt hatte. Wie auch immer, Sie können es durch Eingabe installieren

sudo apt-get install wally

in einem Terminal.

Um die Hintergrundbilder in der Auswahl anzuzeigen, ohne den Ordner manuell aktualisieren zu müssen, müssen Sie sie hinzufügen /usr/share/backgrounds.

Ich konnte auch die Hintergrundbilder in der Auswahl auflisten, indem ich einen Symlink im Ordner erstellte.

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

Dies kann hilfreich sein, da es möglicherweise nicht immer praktisch ist, einem Ordner, dessen Eigentümer root ist, jedes Mal Hintergrundbilder hinzuzufügen.


Ich weiß, dass dies alle Hintergrundbilder im Ordner importiert, aber wie kann ich den Ordner überprüfen, sodass, wenn ich dem Ordner weitere hinzufüge, diese automatisch im Auswahlfenster angezeigt werden, ohne sie erneut importieren zu müssen?
Slipstream

@ Slipstream Bearbeitet meine Antwort.
theTuxRacer

Ich habe den Symlink hinzugefügt, von dem ich dachte, dass es eine Möglichkeit wäre, dies zu tun, aber sie scheinen immer noch nicht dort zu erscheinen ...
Slipstream

@ Slipstream Ja, in der Tat. Meine Antwort ist falsch. Ich habe gesehen, wie das Bild hinzugefügt wurde, aber ich habe es möglicherweise vor langer Zeit manuell hinzugefügt, was die Ergebnisse verfälschte. Ich bin enttäuscht. Ich wette, du bist es auch. Sorry :(
theTuxRacer
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.