Bir terminal komutuyla masaüstü arka planını nasıl değiştirebilirim?


19

OS X yapılandırma komut dosyasına arka planı düz koyu griye ayarlayan bir komut eklemeye çalışıyorum , ancak uygulandığında, yalnızca ana monitöre ayarlar ve şu anda bağlı olan ek monitörler mevcut arka planlarını ve daha sonra kalanları korur varsayılan alan arka planını alır. Şimdiye kadar sahip olduğum şey şudur:

# 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; }; }; }'

Bir terminal komutu aracılığıyla varsayılanı koyu gri arka planı nasıl ayarlayabilirim? Bir terminal komutu ile önceden gri olarak yapılandırılmış tüm monitörleri nasıl değiştirebilirim?


Bu oldukça kullanışlı bir komutlar dizisi! Ayrıca .aliases birini seviyorum. Teşekkürler!
binarybob

Tüm krediyi alamıyorum , mathiasbynens'den çatalladım , klavye, fare ve çalışmayan arka plan ayarlarını ekledim .
rudolph9

Ohh ve fare izleme hızım sistem tercihlerinin izin verdiğinden daha yüksek bir değere ayarlandı :() hızlı izlediği için çığlık atıyorum.
rudolph9

Yanıtlar:


22

Apple bu ayarları bir sqlite DB'ye taşıdığı için bu çözümlerin hiçbiri artık Mavericks üzerinde çalışmıyor. Ancak sorun değil çünkü artık daha kolay, png dosya sisteminde herhangi bir yerde olabilir ve tüm masaüstü bilgisayarlar (sanal bile) güncellenir.

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

Veya, ~ / .bash_profile dosyanıza bir işlev olarak ekleyin ve göreli olmayan herhangi bir yolla terminal komutu olarak adlandırın.

#   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


Şu anda çalışan tek şey bu.
saruftw

2
@jeremyjjbrown: Cevabınız için teşekkürler! Ne yazık ki bu artık macOS Sierra'da çalışmıyor. Apple'ın şimdi hangi resmi duvar kağıdı olarak kullanacağı konusunda bir fikriniz var mı?
Benjamin Herzog

Nasıl orta / fayans / ekrana sığdır vb almak için biliyor musunuz?
BSUK

@BenjaminHerzog Sanghyun Lee'nin cevabı hala çalışıyor (Mojave'de), sadece GitHub kaynağından yapılmış, demlemek değil: apple.stackexchange.com/a/273628/1195
Mint

15

Bunun sizin için çalışması gerekir:

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

Bu Mac Rumors iş parçacığında başka yollar da var , ancak yolu en kolayı.


Bunu kendiniz için mi aldınız? Benim için işe yaramadı.
rudolph9

1
Bana verdi./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

Masaüstü zaten koyu griye ayarlanmış ve var bir şey olup olmadığını görmek için farklı bir renk ile denedim./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 AppleScript Editor'da çalıştırmayı deneyin. Orada çalışıyor mu? Denemedim, ama geçmişte olduğuna inanıyorum.
daviesgeek

@ Faraz'ın cevabına dayanarak, Apple Script'e dosya anahtar sözcüğünden önce POSIX anahtar sözcüğünü ekleyerek bir POSIX yolu sağladığınızı söylemeniz gerekir, örn.tell application "Finder" to set desktop picture to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
Jason Musgrove

12

Tek satırda yapmanın en basit yolu:

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

Kullanma yöntemi osascriptbenim için ancak killall Dockdaha sonra koşarsam çalışır. Bunu fark eden var mı?
Quinn Comendant

2

Yeni bir işlev yapmak için yeni bir uygulama yüklemeyi tercih ediyorsanız, kullanma m-cliyolu budur. Kullanımı kolaydır ve ihtiyacınız varsa diğer birçok yararlı özelliğe sahiptir.

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

m-cliotomatik olarak OS sürümünü algılar, dahili olarakbash komut dosyası kullanarak diğer doğru cevaplarla aynı şeyleri yapın .


Teşekkürler!! Bu benim için macOS Mojave'de çalıştı (Grewub kaynağından m-cli almanız gerekiyor, ancak demleme sürümü 2017'den eski olduğu için)
Mint

1

Yolların POSIX filefor /posix/pathsveya as aliaswith kullanılarak düzgün bir şekilde başvurulması gerekir Old:Mac:Style:Paths.

Zehirini seç ...

POSIX yolu:

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

Mac yolu:

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

Yukarıdaki Applescripts'lerden herhangi birini kullanarak kolayca bir terminal komutuna dönüştürebilirsiniz 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'

Birden çok masaüstünü ayarlamak için benzer bir şey deneyebilirsiniz tell application "System Events" to set picture of every desktop to "<path>". Ne yazık ki, bu 10.7'de kırılmış gibi görünüyor, bu nedenle aşağıdaki hatayı alıyorsunuz:Expected class name but found application constant or consideration.


1

Jeremyjjbrown'un cevabı ve bu Gist'i irade ile birleştirmek , El Capitan ve üstü için en uygun yol aşağıdaki gibidir:

  1. Automator'u (Uygulamalar'da) açın ve yeni bir Servis oluşturun
  2. Set Service receives selectediçin image filesiş akışı üstündeki. İsteğe bağlı olarak yalnızca Finder'da çalışacak şekilde sınırlandırabilirsiniz.

Örnek resim 1

  1. Bir ekleme Run Shell Scriptiş akışı için harekete
  2. Varsayılan komut dosyasını boşaltın ve jeremyjjbrown'un yanıtının biraz değiştirilmiş bir sürümünü düzenleyiciye ekleyin :

    read -e IMAGE;
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '$IMAGE'";
    killall Dock;
    
  3. Örneğin hizmeti seçtiğiniz bir adla kaydedin Set Desktop Picture on all Spaces.

Artık herhangi bir görüntüyü doğrudan Finder'dan sağ tıklatıp bağlam menüsünden hizmeti seçerek tüm masaüstü bilgisayarlar için arka planı kolayca ayarlayabilirsiniz.


0

Aynı işlemi gerçekleştirmek için bir perl betiği:

#!/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
Hayır, arka plan olarak ayarlanacak olan görüntü dosyasını girerek bir sürü gereksiz perl kodu ile ilk gönderiyle aynı işlemi gerçekleştiren bir osascript çalıştıran bir perl betiğidir.
rudolph9

0

Bahsedilen çözümlerin hiçbiri benim için macOS 10.14.2 Sierra'da işe yaramadı ve ben bu AppleScript ile sonuçlandık:

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

Bunun gibi bir terminalden çalıştırılabilir:

osascript path_to_applescript_file.scpt

Veya bir oneliner olarak:

osascript -e 'tell application "System Events" to tell every desktop to set picture to "path_to_wallpaper.jpg"'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.