Lệnh thay đổi hình nền trong XUbfox


15

Thực hiện tìm kiếm google cho thấy lệnh

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

Lần đầu tiên tôi chạy lệnh này, tôi nhận được một thông báo nói rằng thuộc tính / backdrop / screen0 / Monitor0 / image-path không tồn tại trong kênh xfce4-desktop.

Vì vậy, tôi đã tạo ra tài sản này:

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

Nhưng nền tảng vẫn không thay đổi.

Sau đó, tôi đã thay đổi nền từ space-03.jpg thành space-04.jpg thông thường, từ ứng dụng Cài đặt máy tính để bàn của XUbfox. Sau đó tôi chạy:

$ 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

Như bạn có thể thấy, tài sản /backdrop/screen0/monitorLVDS1/workspace0/last-imageđã thay đổi (!).

Nếu tôi thay đổi thuộc tính này thì nó hoạt động tốt nhưng điều cần làm là tôi cần tìm một cách chung để thực hiện nó trong chương trình của mình (Wallch).

Ngay cả Variety(đó là một chương trình rất hay, nhân tiện) không hoạt động đúng trên máy của tôi và chọn thay đổi thuộc tính /backdrop/screen0/monitor0/image-pathkhông có gì.

Một cách sẽ là tạo tất cả các thuộc tính có thể và thay đổi tất cả chúng khi cần, đồng thời. Tôi không thích giải pháp này vì 2 lý do:

  1. Một số cuộc gọi hệ thống sẽ cần thiết
  2. Tại một thời điểm tôi sẽ cần lấy đường dẫn của hình ảnh hiện tại (để mở thư mục của nó, sao chép đường dẫn của nó, xóa nó và một số chức năng khác mà chương trình cung cấp). Tôi sẽ không biết thuộc tính nào giữ đường dẫn của hình ảnh thực sự được thiết lập để làm cho nó có sẵn cho chương trình.

Tôi cũng không hiểu tại sao XFCE lại làm nó phức tạp đến vậy. Tại sao một tài sản không đủ như trong gsinstall?



chỉ cần thử nó, xfconf-query -c xfce4-desktop -p / backdrop / screen0 / Monitor0 / image-path -s /usr/share/backgrounds/xfce/xfce-blue.jpg hoạt động với tôi .... chưa bao giờ thay đổi hình nền của tôi trước đây - hãy cẩn thận để làm điều đó mà không có quyền root vì các cài đặt là dành riêng cho người dùng.
Wolfgang

1
@hakermania - có thể một cái gì đó giống như kịch bản này trong # 9 ở đây - điều này có cung cấp cho bạn một số ý tưởng về cách tiến hành (hoặc ít nhất là xác định đúng màn hình) không? bugs.launchpad.net/variety/+bug/1064825
fossfreedom


@fossfreedom xem câu trả lời tôi đã đưa ra trong câu trả lời dưới đây.
hytromo

Câu trả lời:


4

Tôi nghĩ rằng nên làm công việc

Sử dụng mã sau đây để có được các thiết bị được kết nối và đếm chúng:

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)

sau đó bạn phải thao tác trên chúng và chọn đặt giá trị cho đường dẫn hình ảnh hoặc hình ảnh cuối cùng

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

Giả sử rằng 1.jpeg là bất kỳ tệp nào chỉ cần để tạo chuỗi theo mặc định. Và 2.png là hình ảnh mong muốn được thiết lập. Tôi đã thêm dòng đầu tiên chỉ để đảm bảo rằng xfce4-desktop tồn tại.

Kịch bản này đã được thử nghiệm trong máy của tôi và nó đang hoạt động tốt.

Mong rằng sẽ giúp bạn của tôi

EDIT: Một danh sách các tên cổng đã được tìm thấy ở đây như vậy:

Tên cổng đầu ra

Trình điều khiển Intel - UMS

VGA - Đầu ra VGA tương tự

LVDS - Bảng điều khiển máy tính xách tay

DP1 - Đầu ra DisplayPort

TV - Đầu ra TV tích hợp

TMDS-1 - Đầu ra SDVO DVI đầu tiên

TMDS-2 - Đầu ra SDVO DVI thứ hai

Đầu ra TV SDVO và DVO không được trình điều khiển hỗ trợ tại thời điểm này.

Trình điều khiển Intel - KMS

LVDS1 - Bảng điều khiển máy tính xách tay

VGA1 - Đầu ra VGA tương tự

DVI1 - Đầu ra video kỹ thuật số

lái xe radeon

VGA-0 - Đầu ra VGA tương tự

LVDS - Bảng điều khiển máy tính xách tay

S-video - Đầu ra TV tích hợp

DVI-0 - Đầu ra DVI

Để biết thêm thông tin kiểm tra ở đây


Tại sao nên làm công việc đó?
Seth

@ Vì tôi đang lặp qua tất cả các màn hình có sẵn và tôi sẽ đặt giá trị phù hợp cho màn hình tìm thấy. hoặc hình ảnh cuối cùng hoặc đường dẫn hình ảnh
kamil

Trong một hệ thống XFCE mới được cài đặt, các giá trị thậm chí không tồn tại. Chúng đang được tạo khi bạn thay đổi một lần nền của máy tính để bàn. Vì vậy, đây không phải là một giải pháp tốt theo quan điểm của tôi. Tôi bao gồm câu trả lời này trong câu hỏi của tôi. Tôi nói rõ ràng rằng tôi có thể thử tất cả chúng (tạo và thay đổi chúng mọi lúc), nhưng đây không phải là một giải pháp tốt cho vấn đề.
hytromo

bạn có thể tạo các thuộc tính như bạn đã làm
kamil

@hakermania kiểm tra chỉnh sửa
kamil
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.