Yanıtlar:
Hem Unity hem de Gnome Shell (Gnome 3) artık GConf yerine GSettings kullanıyor. Böylece Unity ve Gnome Shell'de bunun için komut satırı aracını kullanabilirsiniz gsettings
. Gibi gconftool
, bireysel bir anahtar almak veya ayarlamanızı sağlar.
Arka plan görüntüsünün geçerli URI'sini aşağıdaki gibi alabilirsiniz:
gsettings get org.gnome.desktop.background picture-uri
'file:///home/serrano/Pictures/x.jpg'
Arkaplan URI'sini aşağıdaki gibi ayarlayın (bu, masaüstü arkaplanınızı hemen güncelleyecektir):
gsettings set org.gnome.desktop.background picture-uri file:///home/serrano/Pictures/y.jpg
Bunun çalışması için URI'yi "file: //" ile hazırlamanız gerektiğine dikkat edin gconftool
.
Komut dosyanızın hem Gnome 2 hem de Shell / Unity ile çalışmasını sağlamak için önce bir Gnome sürüm kontrolü yapmasına izin verebilirsiniz:
gnome-session --version
Bu Gnome'un versiyonunu döndürür. Sürüm numarası 3 ile başlıyorsa, o gsettings
zaman kullanılabilir. 2 ile başlayan bir sürüm döndürürse, komut dosyanızın gconftool
bunun yerine kullanılmasına izin verin .
Bu kod, duvar kağıdını rastgele bir dizinden değiştirir.
#!/bin/bash
DIR="/home/indra/Pictures/wallpapers"
PIC=$(ls $DIR/* | shuf -n1)
gsettings set org.gnome.desktop.background picture-uri "file://$PIC"
Bu betiği kaydedin ve "crontab -e" komutunu kullanarak düzenleyin (bu satırı dosyanın sonuna koyduğunuz bir düzenleyiciyi başlatır):
*/1 * * * * /bin/bash /path/to/script.sh
Bu cevap, orijinal cevabın bir düzenlemesidir. Ubuntu ve Linux çalışmalarımda ilerlerken, çeşitli yaklaşımlar keşfettim ve bir arka plan oluşturmanın Ubuntu'da nasıl çalıştığını anladığımı anladım. Bu cevap, şu ana kadar öğrendiklerimi en iyi şekilde belgeleme çabam ve bu malzemenin başkaları için faydalı olacağı umuduyla yapıldı.
Önemli olan, Unity masaüstünün arka planını komut satırından ayarlamak için kullanabilirsiniz.
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
Unity'nin çalışma şekli aşağıda çıplak bir X masaüstü olacak şekildedir ve yukarıda Unity'nin masaüstü penceresi vardır (aslında, Ubuntu'nun varsayılan dosya yöneticisi olan Nautilus'un özel bir örneğidir). Böylece, aradığınızda
gsettings set org.gnome.desktop.background picture-uri 'file:///home/JohnDoe/Pictures/cool_wallpaper.jpg'
Bu özel Nautilus penceresi için arka planı ayarlar. Masaüstü simgelerini ile devre dışı bıraktığınızda
gsettings set org.gnome.desktop.background show-desktop-icons false
Bu, Nautilus masaüstünü öldürecek ve size çıplak X-masaüstünü gösterecek. Çıplak kemikli X masaüstü için feh
programı kullanabilirsiniz . Özellikle, bu komut:
feh --bg-scale /home/JohnDoe/Pictures/cool_wallpaper.jpg
Ayrıca buna GUI alternatifi var nitrogen
. feh
Ve nitrogen
yaklaşımlar gibi Unity dışında masaüstü, kullanılabilir openbox
ya da blackbox
. gsettings
Yaklaşım Birlik veya diğer GNOME tabanlı masaüstü ile kullanılabilir.
gsettings
Komut tam olarak ne yapar ? Öncelikle, kullanımdan kaldırılmış GConf'un yerine geçmesi amaçlanan her kullanıcı için dconf ayarları veritabanı bulunmaktadır ve bu komutlara ya da komutları aracılığıyla erişilebilir . Özellikle, burada şema ve anahtarlarından biriyle uğraşıyoruz
.dconf
gsettings
org.gnome.desktop.background
picture-uri
Bu file:///home/JohnDoe/Pictures/cool_wallpaper.png
aslında URI, aslında internet kullanımı için yaratılmış olan Tekdüzen Kaynak Tanımlayıcısı anlamına geliyor , ancak burada gördüğümüz şey URI şeması var. İngilizce olmayan bir yerel ayar kullanıyorsanız, örneğin Çin masaüstümde, adamım için URI’yı izlemem gerekirse, URI’daki en önemli şey, bayt kodlu yol vermesidir:'file:///home/xieerqi/%E5%9B%BE%E7%89%87/Wallpapers/moon_moon.jpg'
Elbette, her seferinde komutu yazmak sıkıcıdır ve kişi bir miktar komut dosyası sihirini kullanabilir. Mesela, istediklerimi ~/.bashrc
değiştirebilmem için benim için ayarladıklarım :
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
}
Bu fonksiyon gibi mutlak yollarla çağrılabilir.
change_background /home/JohnDoe/Pictures/cool_wallpaper.jpg
veya geçerli çalışma dizinden göreceli yolla
change_background Pictures/cool_wallpaper.jpg
Ayrıca dosyanın olup olmadığını kontrol eder ve sembolik bağlantıları çözer. Bu, bir kabuk komut dosyasında veya günlük kullanım için bağımsız işlev olarak kullanılabilir.
Tabii ki, bu tek yol değil. Python'un Gio için bir API'si var (arkasındaki ana kütüphane gsettings
). Başlatıcısı Göstergesi gibi diğer projeler için oldukça yararlı olan bir gsettings_get
ve gsettings_set
işlevleri yazdım . Bir arka plan belirleme durumunda da kullanılabilir ve bu soruyu daha yeni kullandım . İşte aynı yaklaşımın basitleştirilmiş bir versiyonu:
#!/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()
Elbette, aynı komut dosyaları için de burada geçerlidir: çalıştırılabilir olduğundan emin olun chmod +x set_wallpaper.py
ve (tercihen) ~/bin
klasöründe saklayın . Kullanımı basittir: ./set_wallpaper.py Picture/cool_image.py
Bu komut dosyasının kaynak kodu GitHub depomda da birçok komut dosyasıyla birlikte bulunmaktadır.
Serrano'nun müthiş cevabı sayesinde, siyah arka plan ayarlamak için yeni makine kurulum komut dosyalarımın bir parçası olarak kullandığım bu senaryoyu yazabildim:
#! /bin/bash
SRC_URI="https://i.imgur.com/uomkVIL.png"
FNAME="/home/$USER/Pictures/black.png"
wget "$SRC_URI" -O "$FNAME"
gsettings set org.gnome.desktop.background picture-uri "$FNAME"