Làm cách nào để thay đổi hình nền màn hình bằng lệnh terminal?


19

Tôi cố gắng thêm vào tập lệnh cấu hình OS X của mình một lệnh đặt nền thành màu xám tối, tuy nhiên, khi được áp dụng, nó chỉ đặt nó vào màn hình chính và bất kỳ màn hình bổ sung nào hiện đang được kết nối vẫn giữ nền hiện tại của chúng và mọi phần được thêm vào sau đó nhận nền không gian mặc định. Những gì tôi có cho đến nay là như sau:

# Change Desktop default BackgroundColor to grey
defaults write com.apple.desktop '{ Background = { default = {BackgroundColor = ( "0.2549019753932953", "0.4117647111415863", "0.6666666865348816" ); Change = Never; ChangePath = "/Library/Desktop Pictures/Solid Colors"; ChangeTime = 1800; DrawBackgroundColor = 1; ImageFileAlias = <00000000 00ce0003 00000000 c73804cd 0000482b 00000000 000c2624 000c2633 0000ca1c 0a310000 00000920 fffe0000 00000000 0000ffff ffff0001 000c000c 2624000c 25fc000a 0789000e 00280013 0053006f 006c0069 00640020 00470072 00610079 00200044 00610072 006b002e 0070006e 0067000f 000c0005 006f0073 00780038 00360012 00394c69 62726172 792f4465 736b746f 70205069 63747572 65732f53 6f6c6964 20436f6c 6f72732f 536f6c69 64204772 61792044 61726b2e 706e6700 00130001 2f00ffff 0000>; ImageFilePath = "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"; NewChangePath = "/Library/Desktop Pictures/Solid Colors"; NewImageFilePath = "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"; NoImage = 0; Placement = Crop; Random = 0; }; }; }'

Làm cách nào để đặt mặc định nền màu xám đậm thông qua lệnh đầu cuối? Làm cách nào để thay đổi tất cả các màn hình đã được cấu hình thành màu xám thông qua lệnh đầu cuối?


Đó là một bộ lệnh khá hữu ích! Tôi cũng thích .aliases của bạn quá. Cảm ơn!
binarybob

Tôi không thể lấy tất cả tín dụng, tôi đã lấy nó từ mathiasbynens , tôi đã thêm các cài đặt bàn phím, chuột và không hoạt động.
rudolph9

Ohh và tốc độ theo dõi chuột của tôi được đặt cao hơn so với tùy chọn hệ thống sẽ cho phép :() khiến tôi hét lên vì nó theo dõi nhanh.
rudolph9

Câu trả lời:


22

Không có giải pháp nào trong số các giải pháp này hoạt động trên Mavericks nữa vì Apple đã chuyển cài đặt sang DB sqlite. Nhưng điều đó ổn vì bây giờ dễ dàng hơn, png có thể ở bất cứ đâu trong hệ thống tập tin và tất cả các máy tính để bàn (thậm chí là ảo) đều được cập nhật.

 #!/usr/bin/env bash
 sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '/path/to/any/picture.png'";
 killall Dock;

Hoặc, thêm nó dưới dạng hàm vào ~ / .bash_profile của bạn và gọi nó là lệnh đầu cuối với bất kỳ đường dẫn không liên quan nào.

#   Update all Wallpapers
function wallpaper() {
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '$1'" && killall Dock 
}

wallpaper ~/path/to/any/picture.png


Đây là điều duy nhất hoạt động hiện tại.
saruftw

2
@jeremyjjbrown: cảm ơn bạn đã trả lời! Thật không may, điều này không còn hoạt động trong macOS Sierra nữa .. Bạn có biết Apple hiện đang lưu hình ảnh nào để sử dụng làm hình nền không?
Benjamin Herzog

Bạn có biết làm thế nào để đưa nó vào trung tâm / gạch / phù hợp với màn hình, vv?
BSUK

@BenjaminHerzog Câu trả lời của Sanghyun Lee vẫn hoạt động (trên Mojave), chỉ cần xây dựng từ nguồn GitHub, không pha: apple.stackexchange.com/a/273628/1195
Mint

15

Điều này sẽ làm việc cho bạn:

osascript
tell application "Finder"
set desktop picture to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
end tell

Có một số cách khác trên chủ đề Mac Rumors này , nhưng cách của anh ta là dễ nhất.


Bạn đã có được điều này để làm việc tự? Nó không làm việc cho tôi.
rudolph9

1
đã cho tôi./a.scpt:31:46: execution error: Finder got an error: Can’t set file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png" to file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png". (-10006)
rudolph9

Đã thử lại lần nữa với một màu khác để xem nó có liên quan gì đến máy tính để bàn đã được đặt thành màu xám đậm không và có./a.scpt:31:46: execution error: Finder got an error: Can’t set file "/Library/Desktop Pictures/Solid Colors/Solid Gray Medium.png" to file "/Library/Desktop Pictures/Solid Colors/Solid Gray Medium.png". (-10006)
rudolph9

@KurtRudolph Hãy thử chạy nó trong AppleScript Editor. Nó có hoạt động ở đó không? Tôi đã không thử nó, nhưng tôi tin rằng tôi có trong quá khứ.
daviesgeek

Dựa trên câu trả lời @ Faraz, nó sẽ xuất hiện mà bạn cần phải biết của Apple Script mà bạn đang cung cấp một con đường POSIX bằng cách bao gồm các từ khóa POSIX trước khi từ khóa tập tin, ví dụtell application "Finder" to set desktop picture to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
Jason Musgrove

12

Cách đơn giản nhất để làm điều đó trong một dòng:

osascript -e 'tell application "Finder" to set desktop picture to POSIX file "/Library/Desktop Pictures/Earth Horizon.jpg"'

Phương pháp sử dụng chỉ osascripthoạt động với tôi nếu tôi chạy killall Docksau đó. Có ai khác nhận thấy điều đó?
Quinn Comendant

2

Nếu bạn thích cài đặt một ứng dụng mới để tạo một chức năng mới, sử dụng m-clilà cách tốt nhất. Nó dễ sử dụng và nó có rất nhiều tính năng hữu ích khác nếu bạn cần.

brew install m-cli 
m wallpaper ./wallpapers/tree.jpg

m-cliauto phát hiện phiên bản HĐH, bên trong thực hiện những điều tương tự như các câu trả lời đúng khác bằng cách sử dụng bashtập lệnh.


Cảm ơn!! Cái này hoạt động với tôi trên macOS Mojave (mặc dù bạn cần lấy m-cli từ nguồn Github, vì phiên bản brew đã lỗi thời từ năm 2017)
Mint

1

Các đường dẫn cần được tham chiếu chính xác bằng cách sử dụng POSIX filecho /posix/pathshoặc as aliasvới Old:Mac:Style:Paths.

Chọn thuốc độc của bạn...

Đường dẫn POSIX:

set desktopImage to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
tell application "Finder"
    set desktop picture to desktopImage
end tell

Đường dẫn Mac:

set localLibrary to path to library folder from local domain as string
set desktopImage to localLibrary & "Desktop Pictures:Solid Colors:Solid Gray Dark.png" as alias

tell application "Finder"
    set desktop picture to desktopImage
end tell

Bạn có thể dễ dàng biến bất kỳ Applescripts nào ở trên thành lệnh terminal bằng cách sử dụng osascript [-e statement]:

osascript -e 'set desktopImage to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Light.png"
tell application "Finder"
    set desktop picture to desktopImage
end tell'

Để đặt nhiều máy tính để bàn, bạn có thể thử một cái gì đó như tell application "System Events" to set picture of every desktop to "<path>". Thật không may, điều này dường như bị hỏng trong 10.7, vì vậy bạn sẽ gặp phải lỗi sau:Expected class name but found application constant or consideration.


1

Kết hợp câu trả lời của jeremyjjbrownGist này bằng ý chí , cách thuận tiện nhất cho El Capitan trở lên như sau:

  1. Mở Automator (trong Ứng dụng) và tạo một Dịch vụ mới
  2. Đặt Service receives selectedđể image filesở phía trên cùng của công việc. Bạn có thể tùy chọn giới hạn nó chỉ hoạt động trong Finder.

Ảnh mẫu 1

  1. Thêm một Run Shell Scripthành động vào quy trình làm việc
  2. Làm trống đoạn script mặc định và chèn một phiên bản sửa đổi một chút của câu trả lời của jeremyjjbrown vào trình chỉnh sửa :

    read -e IMAGE;
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '$IMAGE'";
    killall Dock;
    
  3. Lưu dịch vụ với một tên bạn chọn, ví dụ Set Desktop Picture on all Spaces.

Bây giờ bạn có thể nhấp chuột phải vào bất kỳ hình ảnh nào trực tiếp từ Finder và chọn dịch vụ từ menu ngữ cảnh, dễ dàng đặt nền cho tất cả các máy tính để bàn.


0

Một tập lệnh perl để thực hiện tương tự:

#!/usr/bin/perl
use Cwd;

if ($#ARGV != 1) {
    die "\nUsage: ./changedesktop <filename> <startup disk> \nwhere <filename> may be    any JPEG, PNG, GIF, TIFF or PSD and <startup disk> is the name of your boot volume.\n\n";
}

my $filename = $ARGV[0];
my $bootdisk = $ARGV[1];
my $directory = getcwd;
my $file = $bootdisk.$directory."/".$filename;
$file =~ tr/\//:/;
system("osascript -e \'tell application \"Finder\"\' -e \'set theFile to \"$file\"\' -   e     \'set desktop picture to \(theFile as alias\)\' -e \'end tell'");

3
Không, đó là tập lệnh perl thực thi việc chạy osascript thực hiện thao tác tương tự như bài đăng đầu tiên với một loạt mã perl không cần thiết nhập vào tệp hình ảnh được đặt làm nền.
rudolph9

0

Không có giải pháp nào được đề cập làm việc cho tôi trên macOS 10.14.2 Sierra và tôi đã kết thúc với AppleScript này:

tell application "System Events"
    tell every desktop
        set picture to "path_to_wallpaper.jpg"
    end tell
end tell

Nó có thể được chạy từ một thiết bị đầu cuối như thế:

osascript path_to_applescript_file.scpt

Hoặc như một oneliner:

osascript -e 'tell application "System Events" to tell every desktop to set picture to "path_to_wallpaper.jpg"'
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.