ฉันจะตั้งค่าไดเรกทอรีการค้นหาอื่นสำหรับภาพพื้นหลังได้อย่างไร


12

ฉันเก็บเอกสารทั้งหมดของฉันไว้ในไดรฟ์แยกต่างหากจากการติดตั้ง Ubuntu ของฉันและฉันมีโฟลเดอร์ที่มีวอลล์เปเปอร์ที่สวยงามบนไดรฟ์นั้น ฉันจะทำให้อูบุนตูจะค้นหาไดเรกทอรีนี้เพื่อให้วอลล์เปเปอร์แสดงในบทสนทนาเปลี่ยนวอลล์เปเปอร์, เข้าถึงได้จากการคลิกขวาบนเดสก์ทอปและเลือกเปลี่ยนวอลล์เปเปอร์ ?

แก้ไข: ฉันได้ลองใส่ symlink ในโฟลเดอร์/ usr / share / backgroundไปยังไดรฟ์อื่นและไม่ได้ผล


หมายเหตุสำหรับคำตอบทั้งหมดด้านล่าง: คุณสามารถสร้าง$HOME/.local/share/gnome-background-properties/my-wallpapers.xmlและใช้สิ่งนั้นแทนการแก้ไขไฟล์พื้นหลังของระบบ
Zan Lynx

คำตอบ:


9

* แก้ไข - ลองครั้งที่สอง - และขอโทษทันทีสำหรับงานเทอร์มินัลทั้งหมด - หวังว่านี่จะเป็นการคัดลอกและวางรายการที่เน้นไว้ *

โฟลเดอร์ที่เก็บรายละเอียดของพื้นหลัง gnome เรียกว่า /usr/share/gnome-background-properties/ubuntu-wallpapers.xml

คุณสามารถแก้ไขไฟล์นั้นเพื่อให้มีส่วนย่อยของวอลล์เปเปอร์ ... / วอลล์เปเปอร์ที่ชี้ไปยังไฟล์โฟลเดอร์และวอลล์เปเปอร์ใหม่ของคุณ

ด้านล่างเป็นสคริปต์ที่แก้ไขจากรายการฟอรัมนี้ซึ่งจะสร้างไฟล์ ubuntu-wallpapers.xml ใหม่โดยอัตโนมัติสำหรับโฟลเดอร์ที่มีไฟล์. png และ. jpg

คัดลอกและวางเนื้อหาลงในไฟล์ข้อความใหม่ที่เรียกว่า "ubuntu-wallpaper-generator"

จากนั้นเรียกใช้งานไฟล์ด้วยไวยากรณ์

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

สิ่งนี้จะสร้างไฟล์ชื่อ ubuntu-wallpapers.xml ในโฟลเดอร์เดียวกับที่คุณใช้งานสคริปต์นี้

สำรองข้อมูลไฟล์ xml ปัจจุบันของคุณอย่างปลอดภัย

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

สำเนาในไฟล์ที่สร้างขึ้นใหม่

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

นี่คือไฟล์สคริปต์ที่ฉันอ้างถึง:

#!/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
นี่จะเป็นการตั้งค่าโฟลเดอร์เป็นโฟลเดอร์ของคุณเอง คุณยังต้องนำเข้าภาพพื้นหลังไปยังตัวเปลี่ยน
bdr529

ฉันอาจไม่ชัดเจน - ขอโทษเกี่ยวกับเรื่องนั้น ตัวอย่างเช่นหากโฟลเดอร์รูปพื้นหลังใหม่ของคุณอยู่ใน / media / <somedrive> / <somefolder> ดังนั้น sudo ln -s / media / <somedrive> / <somfrive> พื้นหลังจะแสดงรายการภาพพื้นหลังใหม่ทั้งหมดของคุณ หากคุณต้องการวอลล์เปเปอร์มาตรฐานฉันจะคัดลอกเนื้อหาโฟลเดอร์พื้นหลังปัจจุบันไปยังโฟลเดอร์วอลล์เปเปอร์ใหม่ของคุณ ฉันเพิ่งทดสอบสิ่งนี้บน Natty - เมื่อฉันเลือก "พื้นหลังใหม่" จากการคลิกขวาที่เดสก์ท็อปมันจะแสดงเนื้อหาของวอลล์เปเปอร์โฟลเดอร์ใหม่โดยไม่ต้อง "นำเข้า"
fossfreedom

อ๊ะ - เพิ่งเห็นสิ่งผิดปกติ ...
fossfreedom

ใช้งานได้ดีทำให้ตัวเปลี่ยนวอลล์เปเปอร์ทำงานช้าลงเล็กน้อยเนื่องจากภาพพิเศษ ขอบคุณ!
Slipstream

ขอบคุณ. ฉันใส่สคริปต์และ cp ของคุณในสคริปต์อื่นและเพิ่ม "คำพังเพย - คุณสมบัติ --show-page = background" เพื่อแสดงกล่องโต้ตอบการเปลี่ยนแปลง ฉันเริ่มสคริปต์ใหม่จากเมนูของฉัน
bdr529

1

ด้วย CreBS (สร้างพื้นหลังสไลด์โชว์) คุณสามารถสร้างไฟล์ XML สำหรับสไลด์โชว์วอลล์เปเปอร์ - พา ธ เต็มรูปแบบของภาพจะถูกเก็บไว้ใน XML ดังนั้นจึงไม่จำเป็นต้องย้ายไฟล์ใด ๆ

https://launchpad.net/crebs

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


1

นี่คือการอัปเดต:

    #!/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! หากนี่เป็นคำตอบที่ปรับปรุงแล้วคุณอาจต้องการที่จะเพิ่มคำตอบของ Fossfreedom เป็นคำตอบในขณะที่กล่าวถึงคำตอบที่ได้รับการปรับปรุงในเวอร์ชันที่เกี่ยวข้อง
Oyibo

1

ฉันประสบปัญหาเดียวกันและฉันเขียนสคริปต์ไพ ธ อนเพื่อแก้ไขไฟล์ XML แบบกำหนดเองที่สามารถวาง/usr/share/gnome-background-properties/my-backgrounds.xmlได้ มันอยู่ในGitHub

ตัวอย่างการใช้งาน:

ในการเพิ่มspace_galaxy.jpegและfuzz_dog.pngไปยังไฟล์ xml:

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

โปรดทราบว่าไฟล์ xml เริ่มต้นอยู่ที่/usr/share/gnome-background-properties/my-backgrounds.xml(นี่คือตำแหน่งที่ GNOME คอยดูแลไฟล์ xml) ในการระบุไฟล์ xml สำรองให้ใช้-xตัวเลือก:

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

ในการลบรายการออกจากไฟล์ xml ให้ใช้-rตัวเลือก:

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

สิ่งนี้ใช้ได้กับ GNOME 3.6 และ Python 3.3


0

นี่คือวิธีที่ฉันทำ

  1. คลิกขวาที่เดสก์ท็อป> เปลี่ยนพื้นหลัง

  2. คลิกเพิ่มบนแท็บพื้นหลัง

  3. ไปลงในโฟลเดอร์และเลือกวอลล์เปเปอร์ทั้งหมดโดยคลิกที่หนึ่งและกด+CtrlA

ตอนนี้ควรจะปรากฏในตัวเลือก ฉันพยายามหาแอพเล็ก ๆ ที่ฉันเคยใช้เพื่อเปลี่ยนวอลล์เปเปอร์โดยอัตโนมัติ ไม่โพสต์เมื่อฉันพบมัน

ฉันพบหนึ่งที่เรียกว่าวอลลี่และแนะนำเป็นอย่างยิ่ง แต่ฉันจำได้ว่าฉันไม่เคยใช้มัน อย่างไรก็ตามคุณสามารถติดตั้งได้โดยพิมพ์

sudo apt-get install wally

ในอาคารผู้โดยสาร

/usr/share/backgroundsวอลล์เปเปอร์ที่จะแสดงในตัวเลือกโดยไม่ต้องมีการปรับปรุงโฟลเดอร์ด้วยตนเองคุณจะต้องเพิ่มให้

ฉันยังสามารถแสดงรูปพื้นหลังในตัวเลือกโดยสร้าง symlink ในโฟลเดอร์

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

นั่นอาจเป็นประโยชน์เพราะอาจไม่สะดวกที่จะเพิ่มรูปพื้นหลังให้กับโฟลเดอร์ที่เป็นของ root ทุกครั้ง


ฉันรู้ว่านี่นำเข้าภาพพื้นหลังทั้งหมดในโฟลเดอร์ แต่ฉันจะตรวจสอบโฟลเดอร์ได้อย่างไรเมื่อฉันเพิ่มมากขึ้นในโฟลเดอร์ภาพจะปรากฏในตัวเลือกโดยอัตโนมัติโดยไม่ต้องนำเข้าอีกครั้ง
Slipstream

@Slipstream แก้ไขคำตอบของฉัน
theTuxRacer

ฉันเพิ่ม symlink ซึ่งผมคิดว่าอาจจะเป็นวิธีหนึ่งในการทำมันมาก่อน แต่พวกเขาก็ยังดูเหมือนจะไม่แสดงขึ้นในมี ...
ใฟ้

@Slipstream ใช่แน่นอน คำตอบของฉันไม่ถูกต้อง ฉันเห็นภาพที่เพิ่ม แต่ฉันอาจเพิ่มพวกเขาด้วยตนเองเมื่อนานมาแล้วซึ่งยุ่งกับผลลัพธ์ ฉันผิดหวัง เดิมพันด้วย ขออภัย :(
theTuxRacer
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.