Duvar kağıtları için başka bir arama dizinini nasıl ayarlarım?


12

Tüm belgelerimi ubuntu kurulumumdan ayrı bir sürücüde tutuyorum ve o sürücüde güzel duvar kağıtları ile dolu bir klasör var. Ubuntu'yu otomatik olarak bu dizinde aramayı nasıl yapabilirim, böylece duvar kağıtları duvar kağıdı değiştirici diyalogunda görünecek, masaüstünü sağ tıklayıp Masaüstü Duvar Kağıdını Değiştir'i seçerek ulaşılabilir mi?

Düzenleme: Diğer sürücüye / usr / share / background klasörüne bir symlink koyarak denedim ve işe yaramadı.


Aşağıdaki tüm yanıtlar için bir not: $HOME/.local/share/gnome-background-properties/my-wallpapers.xmlSistem arka plan dosyalarını düzenlemek yerine bunu oluşturabilir ve kullanabilirsiniz.
Zan Lynx

Yanıtlar:


9

* EDIT - İkinci deneme - ve tüm terminal çalışmaları için hemen özür - umarım bu sadece vurgulanan girişleri kopyalayıp yapıştıracaktır *

gnome duvar kağıtlarının ayrıntılarını içeren klasöre /usr/share/gnome-background-properties/ubuntu-wallpapers.xml denir

Bu dosyayı, yeni klasör ve duvar kağıdı dosyalarınızı gösteren duvar kağıdı ... / duvar kağıdı alt bölümlerine sahip olacak şekilde düzenleyebilirsiniz.

Aşağıda, bu forum girişinden değiştirilen bir komut dosyası , ubuntu-wallpapers.xml dosyasını .png ve .jpg dosyaları içeren bir klasör için otomatik olarak yeniden oluşturacaktır.

içeriği kopyalayıp "ubuntu-wallpaper-generator" adlı yeni bir metin dosyasına yapıştırın

Sonra sözdizimi ile dosyayı yürütün

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

Bu, bu komut dosyasını çalıştırdığınız klasörde ubuntu-wallpapers.xml adlı bir dosya oluşturur.

Geçerli xml dosyasını güvenli bir şekilde yedekleyin yani

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

yeni oluşturulan dosyadaki kopya

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

İşte bahsettiğim komut dosyası:

#!/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
Bu, klasörü yalnızca kendi klasörünüze ayarlar. Duvar kağıtlarını değiştiriciye aktarmanız gerekiyor.
bdr529

Belki daha açık olmadım - bunun için üzgünüm. Örneğin, yeni duvar kağıdı klasörünüz / media / <somedrive> / <somefolder> içindeyse, sudo ln -s / media / <somedrive> / <somefolder> arka planları tüm yeni duvar kağıtlarınızı listeler. Standart duvar kağıtlarını da istiyorsanız, mevcut arka plan klasörü içeriğini yeni duvar kağıdı klasörünüze kopyalarım. Ben sadece Natty üzerinde bu test ettik - masaüstünü sağ tıklayarak "yeni arka planlar" seçtiğinizde, o "ithalat" olmadan yeni klasör duvar kağıdı içeriğini gösterdi
fossfreedom

ayy - sadece yanlış olanı gördüm ...
fossfreedom

harika çalışıyor, olsa ekstra resimler nedeniyle duvar kağıdı değiştirici biraz yavaş çalıştırır. Teşekkürler!
Slipstream

Ben de teşekkürler. Komut dosyanızı ve cp'yi başka bir komut dosyasına koydum ve değişiklik iletişim kutusunu göstermek için "gnome-view-properties --show-page = background" ekledim. Yeni komut dosyasını menümden başlatıyorum.
bdr529


1

heres bir güncelleme:

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

AskUbuntu'ya hoş geldiniz! Bu güncellenmiş bir yanıtsa, bu güncellenmiş yanıtın hangi sürümüyle ilgili olduğunu belirterek bir düzenleme olarak Fossfreedom'ın yanıtına eklemek isteyebilirsiniz.
Oyibo

1

Aynı sorunla karşılaştım ve yerleştirilebilecek özel bir xml dosyasını düzenlemek için bir python betiği yazdım /usr/share/gnome-background-properties/my-backgrounds.xml. Bu açıktır GitHub'dan .

Örnek kullanım:

Xml dosyasına eklemek space_galaxy.jpegve eklemek fuzz_dog.pngiçin:

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

Varsayılan xml dosyasının şu konumda olduğunu unutmayın /usr/share/gnome-background-properties/my-backgrounds.xml(bu, GNOME'un xml'leri izlediği yerdir). Alternatif bir xml dosyası belirtmek için şu -xseçeneği kullanın:

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

Girişleri xml dosyasından kaldırmak için şu -rseçeneği kullanın:

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

Bu GNOME 3.6 ve Python 3.3 ile çalışır


0

Ben böyle yaparım.

  1. Masaüstü> Arka Planı Değiştir'e sağ tıklayın.

  2. Arka Plan Sekmesinde Ekle'yi tıklayın.

  3. Git içine klasör ve birine tıklayarak basarak, tüm duvar kağıtları seçin Ctrl+ A.

Şimdi seçicide görüntülenmelidir. Ayrıca, duvar kağıdını otomatik olarak değiştirmek için kullandığım küçük bir uygulamayı bulmaya çalışıyorum. Bulduğumda gönderiyorum.

Wally adında bir tane buldum ve onun şiddetle tavsiye, ama ben bunu kullanmamıştı hatırlıyorum. Her neyse, yazarak yükleyebilirsiniz

sudo apt-get install wally

bir terminalde.

Duvar kağıdını seçicideki göstermek için, klasörü manuel olarak güncellemek zorunda kalmadan, bunları eklemeniz gerekir /usr/share/backgrounds.

Klasörde bir simge bağlantısı oluşturarak, seçicideki duvar kağıtlarını da listeleyebildim.

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

Bu yardımcı olabilir, çünkü her zaman root'un sahip olduğu bir klasöre duvar kağıtları eklemek her zaman uygun olmayabilir.


Bunun klasördeki tüm duvar kağıtlarını içe aktardığını biliyorum, ancak klasörü kontrol etmeyi nasıl sağlayabilirim, bu yüzden klasöre daha fazla eklediğimde, tekrar içe aktarmaya gerek kalmadan otomatik olarak seçicide görünür?
Slipstream

@Slipstream Cevabımı düzenledi.
theTuxRacer

Daha önce yapmanın bir yolu olabileceğini düşündüğüm symlink'i ekledim ama yine de orada görünmüyorlar ...
Slipstream

@Slipstream Evet, gerçekten. Cevabım yanlış. Resimde eklenenleri gördüm, ancak bunları uzun bir süre önce elle ekledim, bu da sonuçlarla uğraştı. Hayal kırıklığına uğratıyorum. Bahis yap sen de. Üzgünüz :(
theTuxRacer
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.