월페이퍼에 대한 다른 검색 디렉토리를 어떻게 설정합니까?


12

모든 문서를 우분투 설치와 별도의 드라이브에 보관하고 해당 드라이브에 멋진 배경 화면으로 가득 찬 폴더가 있습니다. 바탕 화면을 마우스 오른쪽 버튼으로 클릭하고 바탕 화면 배경 무늬 변경을 선택하여 바탕 화면 체인저 대화 상자에 바탕 화면이 표시되도록 우분투 가이 디렉토리를 자동으로 검색하도록하려면 어떻게해야합니까?

편집 : / usr / share / backgrounds 폴더 의 심볼릭 링크를 다른 드라이브에 넣으 려고했는데 작동하지 않습니다.


아래의 모든 답변에 대한 참고 사항 : $HOME/.local/share/gnome-background-properties/my-wallpapers.xml시스템 배경 파일을 편집하는 대신이를 작성 하여 사용할 수 있습니다 .
Zan Lynx

답변:


9

* 편집-두 번째 시도-모든 터미널 작업에 대해 즉시 사과드립니다-희망적으로 강조 표시된 항목을 복사하여 붙여 넣으십시오. *

그놈 배경 화면의 세부 정보가 들어있는 폴더는 /usr/share/gnome-background-properties/ubuntu-wallpapers.xml입니다.

해당 파일을 편집하여 바탕 화면 ... / 배경 화면 하위 섹션이 새 폴더 및 바탕 화면 파일을 가리 키도록 할 수 있습니다.

아래는이 포럼 항목 에서 수정 된 .png 및 .jpg 파일이 포함 된 폴더에 대해 자동으로 ubuntu-wallpapers.xml 파일을 재생성 하는 스크립트 입니다.

내용을 복사하여 "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> / <somefolder> 배경은 모든 새 배경 화면을 나열합니다. 표준 배경 화면도 원한다면 현재 배경 폴더 내용을 새 배경 화면 폴더에 복사하면됩니다. 방금 Natty에서 이것을 테스트했습니다. 바탕 화면을 마우스 오른쪽 버튼으로 클릭하여 "새 배경"을 선택하면 "가져 오기"없이 새 폴더 배경 화면의 내용이 표시됩니다
fossfreedom

죄송합니다-방금 잘못된 것을 보았습니다 ...
fossfreedom

잘 작동하지만 여분의 사진 때문에 벽지 체인저가 약간 느리게 실행됩니다. 감사!
슬립 스트림

나도 고마워. 스크립트와 cp를 다른 스크립트에 넣고 변경 대화 상자를 표시하기 위해 "gnome-appearance-properties --show-page = background"를 추가했습니다. 메뉴에서 새 스크립트를 시작합니다.
bdr529


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 파일을 편집하는 Python 스크립트를 작성했습니다 /usr/share/gnome-background-properties/my-backgrounds.xml. GitHub있습니다 .

사용법 예 :

xml 파일 을 추가 space_galaxy.jpeg하고 fuzz_dog.pngxml 파일에 추가하려면

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

기본 xml 파일은 /usr/share/gnome-background-properties/my-backgrounds.xmlGNOME이 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. 폴더 이동 하여 하나를 클릭하고 Ctrl+를 눌러 모든 배경 화면을 선택하십시오 A.

이제 선택기에 표시되어야합니다. 또한 자동으로 배경 화면을 변경하기 위해 사용한 작은 응용 프로그램을 찾으려고 노력하고 있습니다. 내가 찾으면 게시 할 수 있습니다.

나는 Wally라고 불리는 것을 발견하고 강력하게 추천했지만 그 것을 사용하지 않았다는 것을 기억합니다. 어쨌든, 당신은 입력하여 설치할 수 있습니다

sudo apt-get install wally

터미널에서.

폴더를 수동으로 업데이트하지 않고 셀렉터에 배경 화면을 표시하려면에 배경 화면을 추가해야합니다 /usr/share/backgrounds.

또한 폴더에 심볼릭 링크를 만들어 선택기의 배경 화면을 나열 할 수있었습니다.

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

매번 루트가 소유 한 폴더에 월페이퍼를 추가하는 것이 항상 편리한 것은 아니기 때문에 도움이 될 수 있습니다.


폴더의 모든 월페이퍼를 가져 오는 것을 알고 있지만 폴더를 확인하려면 어떻게해야합니까? 폴더에 더 추가하면 다시 가져올 필요없이 선택기에 자동으로 나타납니다.
Slipstream

@Slipstream 내 답변을 편집했습니다.
theTuxRacer

나는 심볼릭 링크를 추가했는데, 나는 그것을하기 전에 한 가지 방법이라고 생각했지만 여전히 거기에 나타나지 않는 것 같습니다 ...
Slipstream

@Slipstream 그렇습니다. 내 대답이 잘못되었습니다. 나는 그림이 추가 된 것을 보았지만 오래 전에 수동으로 추가했을 수도 있습니다. 나는 실망이다. 당신도 마찬가지입니다. 죄송합니다 :(
theTuxRacer
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.