Làm cách nào để đặt thư mục tìm kiếm khác cho hình nền?


12

Tôi giữ tất cả các tài liệu của mình trên một ổ đĩa riêng biệt từ bản cài đặt Ubuntu của tôi và tôi có một thư mục chứa đầy hình nền đẹp trên ổ đĩa đó. Làm cách nào tôi có thể làm cho Ubuntu tự động tìm kiếm thư mục này để hình nền hiển thị trong hộp thoại thay đổi hình nền, đạt được từ nhấp chuột phải trên màn hình nền và chọn Thay đổi hình nền màn hình ?

Chỉnh sửa: Tôi đã thử đặt một liên kết tượng trưng vào thư mục / usr / share / hình nền sang ổ đĩa khác và điều đó không hoạt động.


Một lưu ý cho tất cả các câu trả lời dưới đây: Bạn có thể tạo $HOME/.local/share/gnome-background-properties/my-wallpapers.xmlvà sử dụng nó, thay vì chỉnh sửa các tệp nền của hệ thống.
Zan Lynx

Câu trả lời:


9

* EDIT - Lần thử thứ hai - và xin lỗi ngay lập tức cho tất cả các công việc cuối cùng - hy vọng điều này chỉ nên sao chép và dán các mục được tô sáng *

thư mục chứa các chi tiết của hình nền gnome được gọi là /usr/share/gnome-background-properIES/ubfox-wallersky.xml

Bạn có thể chỉnh sửa tệp đó để có hình nền ... / các phần phụ hình nền trỏ đến thư mục mới và các tệp hình nền

Dưới đây là tập lệnh được sửa đổi từ mục nhập diễn đàn này , nó sẽ tự động tạo lại tệp ubfox-Wallpapers.xml cho một thư mục chứa các tệp .png và .jpg.

sao chép và dán nội dung vào một tệp văn bản mới có tên là "ubfox-hình nền-trình tạo"

Sau đó thực hiện các tập tin với cú pháp

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

Điều này sẽ tạo ra một tệp có tên ubfox-Wallpapers.xml trong cùng thư mục với nơi bạn đang chạy tập lệnh này.

Sao lưu an toàn cho bạn tệp xml hiện tại tức là

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

bản sao trong tập tin mới được tạo

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

Đây là tập tin kịch bản mà tôi đã đề cập:

#!/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
Điều này sẽ chỉ đặt thư mục vào thư mục của riêng bạn. Bạn vẫn phải nhập hình nền để thay đổi.
bdr529

Có thể tôi chưa rõ ràng - xin lỗi về điều đó. Ví dụ: nếu thư mục hình nền mới của bạn nằm trong / media / <somedrive> / <somefolder> thì sudo ln -s / media / <somedrive> / <somefolder> sẽ liệt kê tất cả các hình nền mới của bạn. Nếu bạn cũng muốn hình nền tiêu chuẩn, thì tôi sẽ chỉ sao chép nội dung thư mục hình nền hiện tại vào thư mục hình nền mới của bạn. Tôi vừa thử nghiệm điều này trên Natty - khi tôi chọn "hình nền mới" từ nhấp chuột phải vào màn hình, nó sẽ hiển thị nội dung của hình nền thư mục mới mà không "nhập"
fossfreedom

Rất tiếc - chỉ cần nhìn thấy những gì là sai ...
fossfreedom

hoạt động tuyệt vời, làm cho trình thay đổi hình nền chạy chậm một chút vì các hình ảnh thêm mặc dù. Cảm ơn!
chảy

Tôi cũng vậy cảm ơn. Tôi đặt tập lệnh và cp của bạn vào tập lệnh khác và thêm "gnome-ngoại hình-thuộc tính --show-page = nền" để hiển thị hộp thoại thay đổi. Tôi bắt đầu kịch bản mới từ menu của tôi.
bdr529


1

đây là một bản cập nhật:

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

Chào mừng bạn đến với AskUbfox! Nếu đây là câu trả lời được cập nhật, bạn có thể muốn thêm nó vào câu trả lời của Fossfreedom dưới dạng chỉnh sửa trong khi đề cập đến phiên bản mà câu trả lời cập nhật này liên quan đến.
Oyibo

1

Tôi đã đối mặt với cùng một vấn đề và tôi đã viết một kịch bản python để chỉnh sửa một tệp xml tùy chỉnh có thể được đặt vào /usr/share/gnome-background-properties/my-backgrounds.xml. Đó là trên GitHub .

Ví dụ sử dụng:

Để thêm space_galaxy.jpegfuzz_dog.pngvào tệp xml:

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

Lưu ý rằng tệp xml mặc định nằm ở /usr/share/gnome-background-properties/my-backgrounds.xml(đây là nơi đồng hồ Gnome cho xml). Để chỉ định một tệp xml thay thế, hãy sử dụng -xtùy chọn:

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

Để xóa các mục khỏi tệp xml, hãy sử dụng -rtùy chọn:

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

Điều này hoạt động với Gnome 3.6 và Python 3.3


0

Đây là cách tôi làm điều đó.

  1. Nhấp chuột phải vào Bàn làm việc> Thay đổi Nền.

  2. Nhấp vào Thêm trên tab nền.

  3. Đi vào thư mục và chọn tất cả các hình nền, bằng cách nhấp vào một và nhấn Ctrl+ A.

Bây giờ chúng sẽ được hiển thị trong trình chọn. Tôi cũng đang cố gắng tìm một ứng dụng nhỏ mà tôi đã sử dụng để tự động thay đổi hình nền. Ill bài khi tôi tìm thấy nó.

Tôi đã tìm thấy một cái tên là Wally, và nó rất được khuyến khích, nhưng tôi nhớ rằng tôi đã không sử dụng cái đó. Dù sao, bạn có thể cài đặt nó bằng cách gõ

sudo apt-get install wally

trong một thiết bị đầu cuối.

Để hiển thị các hình nền trong bộ chọn, mà không cần phải cập nhật thủ công thư mục, bạn sẽ phải thêm chúng vào /usr/share/backgrounds.

Tôi cũng có thể liệt kê các hình nền trong trình chọn, bằng cách tạo một liên kết tượng trưng trong thư mục.

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

Điều đó có thể hữu ích, bởi vì có thể không phải lúc nào cũng thuận tiện để thêm hình nền vào thư mục do root sở hữu mọi lúc.


Tôi biết điều này nhập tất cả các hình nền trong thư mục, nhưng làm cách nào để tôi kiểm tra thư mục, vì vậy khi tôi thêm nhiều hơn vào thư mục, tự động xuất hiện trong trình chọn, mà không phải nhập lại chúng?
chảy

@Slipstream Chỉnh sửa câu trả lời của tôi.
theTuxRacer

Tôi đã thêm liên kết tượng trưng, ​​điều mà tôi nghĩ có thể là một cách để làm điều đó trước đây nhưng dường như chúng vẫn không xuất hiện ở đó ...
Trượt vào

@Slipstream Vâng, thực sự. Câu trả lời của tôi là không chính xác. Tôi đã nhìn thấy hình ảnh được thêm vào, nhưng tôi có thể đã thêm chúng bằng tay, một thời gian dài trước đây, làm hỏng kết quả. Tôi thất vọng. Cá là bạn cũng vậy. Xin lỗi :(
theTuxRacer
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.