터미널 명령으로 데스크탑 배경을 어떻게 변경합니까?


19

OS X 구성 스크립트 에 배경을 일반 어두운 회색으로 설정하는 명령 을 추가하려고 시도 했지만 적용 할 때 기본 모니터로 설정하고 현재 연결된 추가 모니터는 현재 배경을 유지하고 그 이후에도 추가됩니다. 기본 공간 배경을받습니다. 지금까지 내가 가진 것은 다음과 같습니다.

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

터미널 명령을 통해 기본값을 어두운 회색 배경으로 설정하는 방법은 무엇입니까? 터미널 명령을 통해 이미 구성된 모든 모니터를 회색으로 변경하려면 어떻게합니까?


매우 유용한 명령입니다! 나는 또한 당신의 .aliases도 좋아합니다. 감사!
binarybob

나는 모든 신용을 얻을 수 없으며 mathiasbynens 에서 포크 하고 키보드, 마우스 및 작동하지 않는 배경 설정을 추가했습니다.
rudolph9

Ohh와 마우스 추적 속도가 시스템 환경 설정에서 허용하는 것보다 높게 설정되어 있습니다 : :) 빠른 추적 때문에 비명을 지 릅니다.
rudolph9 2012

답변:


22

Apple이 설정을 sqlite DB로 옮겼 기 때문에 이러한 다른 솔루션은 더 이상 Mavericks에서 작동하지 않습니다. 그러나 이제는 더 쉬워지고 png는 파일 시스템의 어느 곳에 나있을 수 있으며 모든 데스크톱 (가상)도 업데이트되기 때문에 괜찮습니다.

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

또는 ~ / .bash_profile에 함수로 추가하고 상대 경로가 아닌 경로를 사용하여 터미널 명령으로 호출하십시오.

#   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


이것은 현재 작동하는 유일한 것입니다.
saruftw

2
@ jeremyjjbrown : 답변 주셔서 감사합니다! 불행히도 이것은 더 이상 macOS Sierra에서 작동하지 않습니다. Apple이 현재 어느 그림을 배경 화면으로 사용할 위치에 저장하고 있는지 알고 있습니까?
Benjamin Herzog

센터 / 타일 / 스크린에 맞추는 방법 등을 알고 있습니까?
BSUK

@BenjaminHerzog 이상현의 답변은 여전히 ​​작동합니다 (Mojave에서), 그냥 양조하지 말고 GitHub 소스에서 빌드하십시오 : apple.stackexchange.com/a/273628/1195
Mint

15

이것은 당신을 위해 작동해야합니다 :

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

이 Mac Rumors 스레드 에는 몇 가지 다른 방법 있지만 가장 쉬운 방법입니다.


이 일을 스스로 해냈습니까? 그것은 나를 위해 작동하지 않았다.
rudolph9

1
나를 준./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

바탕 화면이 이미 어두운 회색으로 설정되어 있는지와 다른 색상으로 다시 ./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)
시도해 보았습니다

@KurtRudolph AppleScript 편집기에서 실행 해보십시오. 거기에서 작동합니까? 나는 그것을 시도하지 않았지만 나는 과거에 있다고 믿습니다.
daviesgeek

@faraz의 답변을 바탕으로 파일 키워드 앞에 POSIX 키워드를 포함시켜 POSIX 경로를 제공하고 있음을 Apple Script에 알려 주어야합니다.tell application "Finder" to set desktop picture to POSIX file "/Library/Desktop Pictures/Solid Colors/Solid Gray Dark.png"
Jason Musgrove

12

한 줄로하는 가장 간단한 방법 :

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

나중에 osascript달리는 경우에만 사용 방법이 효과적입니다 killall Dock. 아무도 눈치 채지 못합니까?
Quinn Comendant

2

새로운 기능을 수행하기 위해 새 응용 프로그램을 설치하려는 경우 사용하는 m-cli것이 좋습니다. 사용하기 쉽고 필요한 경우 다른 유용한 기능이 많이 있습니다.

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

m-cliauto는 OS 버전을 감지하고 내부적으로bash 스크립트를 사용하여 다른 정답과 동일한 작업을 수행합니다 .


감사!! 이것은 macOS Mojave에서 나를 위해 일했습니다 (2017 년부터 brew 버전이 구식이기 때문에 Github 소스에서 m-cli를 가져와야 함)
Mint

1

POSIX filefor /posix/paths또는 as aliaswith를 사용하여 경로를 올바르게 참조해야합니다 Old:Mac:Style:Paths.

독을 고르세요 ...

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

맥 경로 :

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

다음을 사용하여 위의 Applescript를 터미널 명령으로 쉽게 전환 할 수 있습니다 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'

여러 데스크톱을 설정하려면 다음과 같이 시도해보십시오 tell application "System Events" to set picture of every desktop to "<path>". 불행히도, 이것은 10.7에서 깨져서 다음과 같은 오류가 발생합니다.Expected class name but found application constant or consideration.


1

결합 jeremyjjbrown의 대답willurd하여이 요점 은 다음과 같이 최대, 엘 캐피 탄을위한 가장 편리한 방법을하고하는 것입니다 :

  1. 응용 프로그램에서 Automator를 열고 새 서비스를 만듭니다.
  2. 설정 Service receives selectedimage files워크 플로우의 상단에. 선택적으로 Finder에서만 작동하도록 제한 할 수 있습니다.

샘플 이미지 1

  1. Run Shell Script워크 플로우에 동작 추가
  2. 기본 스크립트를 비우고 약간 수정 된 jeremyjjbrown의 답변 을 편집기에 삽입하십시오.

    read -e IMAGE;
    sqlite3 ~/Library/Application\ Support/Dock/desktoppicture.db "update data set value = '$IMAGE'";
    killall Dock;
    
  3. 예를 들어, 원하는 이름으로 서비스를 저장하십시오 Set Desktop Picture on all Spaces.

이제 Finder에서 직접 이미지를 마우스 오른쪽 단추로 클릭하고 상황에 맞는 메뉴에서 서비스를 선택하여 모든 데스크탑의 배경을 쉽게 설정할 수 있습니다.


0

동일한 작업을 수행하는 펄 스크립트 :

#!/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
아니 그것은 배경으로 설정할 이미지 파일을 입력하는 불필요한 펄 코드의 무리와 함께 첫 번째 게시물과 동일한 작업을 수행하는 osascript를 실행하는 펄 스크립트입니다.
rudolph9

0

언급 된 솔루션 중 어느 것도 macOS 10.14.2 Sierra에서 작동하지 않았 으며이 AppleScript로 끝났습니다.

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

다음과 같은 터미널에서 실행할 수 있습니다.

osascript path_to_applescript_file.scpt

또는 oneliner로 :

osascript -e 'tell application "System Events" to tell every desktop to set picture to "path_to_wallpaper.jpg"'
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.