คำสั่งเพื่อเปลี่ยนวอลล์เปเปอร์ใน XUbuntu


15

การค้นหาด้วย google แสดงคำสั่ง

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -s <image-path>

ครั้งแรกที่ฉันรันคำสั่งนี้ฉันได้รับข้อความแจ้งว่าคุณสมบัติ / Backdrop / screen0 / monitor0 / image-path ไม่มีอยู่ในแชนเนล xfce4-desktop

ดังนั้นฉันสร้างคุณสมบัตินี้:

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s <image-path>

แต่พื้นหลังยังคงไม่เปลี่ยนแปลง

ฉันเปลี่ยนพื้นหลังจาก space-03.jpg เป็น space-04.jpg ตามปกติจากแอปพลิเคชันการตั้งค่าเดสก์ท็อปของ XUbuntu จากนั้นฉันก็วิ่ง:

$ xfconf-query -c xfce4-desktop -p /backdrop -lv
/backdrop/screen0/image-path                           /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor0/image-show                  true
/backdrop/screen0/monitor1/image-path                  /usr/share/backgrounds/space-03.jpg
/backdrop/screen0/monitor1/image-show                  true
/backdrop/screen0/monitorLVDS1/workspace0/color-style  0
/backdrop/screen0/monitorLVDS1/workspace0/image-style  5
/backdrop/screen0/monitorLVDS1/workspace0/last-image   /usr/share/backgrounds/space-04.jpg

อย่างที่คุณเห็นทรัพย์สิน/backdrop/screen0/monitorLVDS1/workspace0/last-imageมีการเปลี่ยนแปลง (!)

ถ้าฉันเปลี่ยนคุณสมบัตินี้แล้วก็ใช้งานได้ดี แต่สิ่งที่ฉันต้องหาวิธีทั่วไปเพื่อใช้ในโปรแกรมของฉัน (Wallch)

แม้Variety(ซึ่งเป็นโปรแกรมที่ดีมากโดยวิธี) ไม่ทำงานอย่างถูกต้องในเครื่องของฉันและเลือกที่จะเปลี่ยนคุณสมบัติ/backdrop/screen0/monitor0/image-pathซึ่งไม่ทำอะไรเลย

วิธีหนึ่งคือการสร้างคุณสมบัติที่เป็นไปได้ทั้งหมดและเปลี่ยนแปลงทั้งหมดเมื่อจำเป็นพร้อมกัน ฉันไม่ชอบโซลูชันนี้เนื่องจากเหตุผล 2 ประการ:

  1. การเรียกระบบจำนวนมากที่จำเป็นต้องมี
  2. ถึงจุดหนึ่งฉันจะต้องใช้เส้นทางของภาพปัจจุบัน (เพื่อเปิดโฟลเดอร์ของมันคัดลอกเส้นทางของมันลบมันและฟังก์ชั่นอื่น ๆ ที่โปรแกรมให้) ฉันจะไม่ทราบว่าทรัพย์สินใดเก็บเส้นทางของภาพที่ตั้งค่าไว้อย่างแท้จริงเพื่อให้โปรแกรมพร้อมใช้งาน

ฉันเองก็ไม่เข้าใจเหมือนกันว่าทำไม XFCE ถึงทำมันซับซ้อนมาก เหตุใดคุณสมบัติหนึ่งจึงไม่เพียงพอใน gsettings


คุณได้ลองใช้ฟอรัมนี้แล้วxfce.org/viewtopic.php?id=8198หรือubuntuforums.org/showthread.php?t=838184
jabbink

แค่ลองมัน xfconf-query -c xfce4-desktop -p / Backdrop / screen0 / image0 path -s -s /usr/share/backgrounds/xfce/xfce-blue.jpg ใช้งานได้สำหรับฉัน .... ไม่เคยเปลี่ยน ภาพพื้นหลังของฉันมาก่อน - ระวังให้ดีโดยไม่มีสิทธิ์รูท
Wolfgang

1
@hakermania - อาจคล้ายสคริปต์ใน # 9 ที่นี่ - นี่ทำให้คุณมีความคิดเกี่ยวกับวิธีการดำเนินการ (หรืออย่างน้อยก็ระบุจอภาพที่ถูกต้อง)? bugs.launchpad.net/variety/+bug/1064825
fossfreedom

คำถามที่คล้ายกันอยู่ที่นี่: http://askubuntu.com/questions/380550/xubuntu-how-to-set-the-wallpaper-using-the-command-line
lenooh

@fossfreedom ดูคำตอบที่ฉันให้ไว้ในคำตอบด้านล่าง
hytromo

คำตอบ:


4

ฉันคิดว่ามันควรจะทำงาน

ใช้รหัสต่อไปนี้เพื่อรับอุปกรณ์ที่เชื่อมต่อและนับพวกเขา:

connectedOutputs=$(xrandr | grep " connected" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/")
activeOutput=$(xrandr | grep -e " connected [^(]" | sed -e "s/\([A-Z0-9]\+\) connected.*/\1/") 
connected=$(echo $connectedOutputs | wc -w)

จากนั้นคุณต้องจัดการกับพวกเขาและเลือกว่าจะตั้งค่าสำหรับเส้นทางภาพหรือภาพสุดท้าย

xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitor0/image-path -n -t string -s  ~/Pictures/1.jpeg
xfconf-query -c xfce4-desktop -p /backdrop/screen0/monitorLVDS1/workspace0/last-image -n -t string -s  ~/Pictures/1.jpeg

for i in $(xfconf-query -c xfce4-desktop -p /backdrop -l|egrep -e "screen.*/monitor.*image-path$" -e "screen.*/monitor.*/last-image$"); do
    xfconf-query -c xfce4-desktop -p $i -n -t string -s ~/Pictures/2.png  
    xfconf-query -c xfce4-desktop -p $i -s ~/Pictures/2.png

done

สมมติว่า 1.jpeg เป็นไฟล์ใด ๆ ที่จำเป็นในการสร้างสตริงโดยค่าเริ่มต้น และ 2.png คือรูปภาพที่ต้องการตั้งค่า ฉันเพิ่มบรรทัดแรกเพื่อให้แน่ใจว่ามี xfce4-desktop อยู่

สคริปต์นี้ทดสอบในเครื่องของฉันและทำงานได้ดี

หวังว่าจะช่วยเพื่อนของฉัน

แก้ไข: รายชื่อพอร์ตพบที่นี่เช่น:

ชื่อพอร์ตเอาท์พุท

ไดรเวอร์ Intel - UMS

VGA - เอาต์พุต VGA อะนาล็อก

LVDS - แผงแล็ปท็อป

DP1 - เอาต์พุต DisplayPort

TV - เอาต์พุตทีวีในตัว

TMDS-1 - เอาต์พุต DVI SDVO แรก

TMDS-2 - เอาต์พุต DVI SDVO ที่สอง

ขณะนี้ไดร์เวอร์ไม่รองรับเอาท์พุท SDVO และ DVO TV ในขณะนี้

ไดรเวอร์ Intel - KMS

LVDS1 - แผงแล็ปท็อป

VGA1 - เอาต์พุต VGA แบบอะนาล็อก

DVI1 - สัญญาณวิดีโอดิจิตอล

คนขับ Radeon

VGA-0 - เอาต์พุต VGA แบบอะนาล็อก

LVDS - แผงแล็ปท็อป

S-video - เอาท์พุททีวีในตัว

DVI-0 - เอาต์พุต DVI

สำหรับข้อมูลเพิ่มเติมตรวจสอบที่นี่


ทำไมต้องทำเช่นนั้น?
เซท

@Seth เพราะฉันวนลูปผ่านจอภาพที่มีอยู่ทั้งหมดและฉันจะตั้งค่าที่เหมาะสมสำหรับจอภาพที่พบ ทั้งภาพสุดท้ายหรือภาพเส้นทาง
kamil

ในระบบ XFCE ที่ติดตั้งใหม่ค่าจะไม่มีอยู่ สิ่งเหล่านี้จะถูกสร้างขึ้นเมื่อคุณเปลี่ยนพื้นหลังเดสก์ท็อปของคุณด้วยตนเอง ดังนั้นนี่ไม่ใช่ทางออกที่ดีในความคิดของฉัน ฉันรวมคำตอบนี้ไว้ในคำถามของฉัน ฉันพูดได้อย่างชัดเจนว่าฉันสามารถลองพวกเขาทั้งหมด (สร้างและเปลี่ยนแปลงพวกเขาทุกครั้ง) แต่นี่ก็ยังห่างไกลจากการเป็นวิธีแก้ปัญหาที่ดี
hytromo

คุณสามารถสร้างพร็อพเพอร์ตี้เช่นที่คุณทำ
kamil

@hakermania ตรวจสอบการแก้ไข
kamil
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.