답변:
Unity와 Gnome Shell (Gnome 3) 모두 GConf 대신 GSettings를 사용합니다. 따라서 Unity와 Gnome Shell에서는이를 위해 명령 줄 도구 gsettings
를 사용할 수 있습니다 . 처럼 gconftool
개별 키를 얻거나 설정할 수 있습니다.
다음과 같이 배경 이미지의 현재 URI를 얻을 수 있습니다.
gsettings get org.gnome.desktop.background picture-uri
'file:///home/serrano/Pictures/x.jpg'
그리고 배경 URI를 다음과 같이 설정하십시오 (바탕 화면 배경이 즉시 업데이트 됨).
gsettings set org.gnome.desktop.background picture-uri file:///home/serrano/Pictures/y.jpg
이 작업을하려면 URI와 "file : //"을 앞에 추가해야합니다 (와 달리 gconftool
).
스크립트가 Gnome 2와 Shell / Unity에서 모두 작동하도록하기 위해 먼저 Gnome 버전 확인을 수행 할 수 있습니다.
gnome-session --version
그놈의 버전을 반환합니다. 버전 번호가 3으로 시작 gsettings
하면 사용할 수 있습니다. 2로 시작하는 버전을 반환하면 gconftool
대신 스크립트를 사용하십시오 .
이 코드는 주어진 디렉토리에서 배경 화면을 무작위로 변경합니다.
#!/bin/bash
DIR="/home/indra/Pictures/wallpapers"
PIC=$(ls $DIR/* | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"
이 스크립트를 저장하고 "crontab -e"명령으로 파일을 편집하십시오 (파일 끝에이 줄을 두는 편집기를 실행합니다).
*/1 * * * * /bin/bash /path/to/script.sh
이 답변은 원래 답변을 편집 한 것입니다. 우분투와 리눅스 연구에서 발전하면서 다양한 접근 방식을 발견했으며 우분투에서 배경을 설정하는 방법에 대한 이해를 심화 시켰습니다. 이 답변은 지금까지 배운 내용을 최대한 문서화하려는 시도이며이 자료가 다른 사람들에게 유용 할 수 있기를 바랍니다.
중요한 부분은 커맨드 라인에서 Unity 데스크탑의 배경을 설정하는 것입니다.
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
Unity가 작동하는 방식은 맨 아래에 X 데스크탑이 있고, 그 위에 Unity의 데스크탑 창이 있습니다 (사실, Ubuntu의 기본 파일 관리자 인 Nautilus 's window의 특수 인스턴스). 따라서 전화 할 때
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
그 특별한 노틸러스 창의 배경을 설정합니다. 데스크톱 아이콘을 비활성화하면
gsettings set org.gnome.desktop.background show-desktop-icons false
그러면 노틸러스 데스크탑이 종료되고 베어 본 X 데스크탑이 표시됩니다. 베어 본 X 데스크탑의 경우 feh
프로그램 을 사용할 수 있습니다 . 특히이 명령은 다음과 같습니다.
feh --bg-scale /home/JohnDoe/Pictures/cool_wallpaper.jpg
이에 대한 GUI 대안도 있습니다 nitrogen
. feh
및 nitrogen
접근 방법 등의 통일이 아닌 데스크톱, 사용할 수 있습니다 openbox
또는 blackbox
. 이 gsettings
접근 방식은 Unity 또는 다른 그놈 기반 데스크탑과 함께 사용할 수 있습니다.
gsettings
명령은 정확히 무엇을 합니까? 우선, 각 사용자에 대한 dconf 데이터베이스 데이터베이스 가 있으며 , 이는 더 이상 사용되지 않는 GConf 를 대체하기위한 것이며 dconf
명령 또는을 통해 액세스 할 수 있습니다 gsettings
. 특히 여기서는 org.gnome.desktop.background
스키마와 키 중 하나를 다루고 있습니다
picture-uri
.
URI file:///home/JohnDoe/Pictures/cool_wallpaper.png
는 실제로 Uniform Resource Identifier의 약자 이며 원래 인터넷 사용을 위해 만들어졌지만 여기에 표시되는 파일 URI 체계가 있습니다. URI와 관련하여 멋진 점은 영어가 아닌 로케일을 사용하는 경우 (예 : 중국어 데스크탑) 바이트에 인코딩 된 경로를 제공한다는 것입니다.'file:///home/xieerqi/%E5%9B%BE%E7%89%87/Wallpapers/moon_moon.jpg'
물론 매번 명령을 작성하는 것은 지루하며 약간의 스크립팅 마술을 사용할 수 있습니다. 예를 들어 ~/.bashrc
다음은 마음대로 배경을 변경할 수 있도록 설정 한 내용 입니다.
change_background() {
FILE="'file://$(readlink -e "$1" )'"
if [ "$FILE" != "'file://'" ]
then
gsettings set org.gnome.desktop.background picture-uri "$FILE"
else
echo "File doesn't exist"
fi
}
이 함수는 다음과 같은 절대 경로로 호출 할 수 있습니다
change_background /home/JohnDoe/Pictures/cool_wallpaper.jpg
또는 현재 작업 디렉토리의 상대 경로
change_background Pictures/cool_wallpaper.jpg
또한 파일이 존재하는지 확인하고 심볼릭 링크를 해결합니다. 이것은 셸 스크립트 또는 일상적인 사용을위한 독립형 기능으로 사용될 수 있습니다.
물론 이것이 유일한 방법은 아닙니다. 파이썬에는 Gio 용 API가 있습니다 (이것은 주요 라이브러리입니다 gsettings
). Launcher List Indicator 와 같은 다른 프로젝트에 매우 유용한 a gsettings_get
및 gsettings_set
함수를 작성했습니다 . 배경을 설정하는 경우 배경을 사용할 수도 있으며 최근 에이 질문에 사용했습니다 . 동일한 접근 방식의 단순화 된 버전은 다음과 같습니다.
#!/usr/bin/env python3
"""
Author: Serg Kolo , <1047481448@qq.com>
Date: December, 21,2016
Purpose: script for setting wallpaper, the pythonic way
Written for: https://askubuntu.com/q/66914/295286
"""
from gi.repository import Gio
import os,sys,random
def gsettings_set(schema, path, key, value):
"""Set value of gsettings schema"""
if path is None:
gsettings = Gio.Settings.new(schema)
else:
gsettings = Gio.Settings.new_with_path(schema, path)
if isinstance(value, list):
return gsettings.set_strv(key, value)
if isinstance(value, int):
return gsettings.set_int(key, value)
if isinstance(value,str):
return gsettings.set_string(key,value)
def error_and_exit(message):
sys.stderr.write(message + "\n")
sys.exit(1)
def main():
gschema='org.gnome.desktop.background'
key='picture-uri'
if len(sys.argv) != 2:
error_and_exit('>>> Path to a file is required')
if not os.path.isfile(sys.argv[1]):
error_and_exit('>>> Path "' + sys.argv[1] + \
'" isn\'t a file or file doesn\'t exit')
full_path = os.path.abspath(sys.argv[1])
uri = Gio.File.new_for_path(full_path).get_uri()
gsettings_set(gschema,None,key,uri)
if __name__ == '__main__': main()
물론, 동일한 스크립트 규칙도 여기에 적용됩니다 : 스크립트를 사용하여 실행 가능하게 chmod +x set_wallpaper.py
만들고 (바람직하게) ~/bin
폴더에 저장하십시오. 사용법은 간단합니다. ./set_wallpaper.py Picture/cool_image.py
이 스크립트의 소스 코드는 다른 스크립트와 함께 GitHub 리포지토리 에서도 사용할 수 있습니다.