문제

Mac에서 현재 벽지를 어떻게 얻습니까? 더 많은 Google을 할 수 있도록 API 기능을 지적하십시오.

편집 : 나는 그것을 찾았다 고 생각합니다. [nsuserDefaults StandardUserDefaults]에 언급되었습니다 http://lists.apple.com/archives/student-dev/2004/aug/msg00140.html

쉘에서도 가능 : 기본값은 com.apple.desktop 배경을 읽습니다

그리고 사과 스크립트에서 :http://discussions.apple.com/thread.jspa?messageid=7111272

도움이 되었습니까?

해결책

업데이트 된 답변 (Mavericks and Newer)

Mavericks부터 Apple은 데스크탑 이미지를

/Users/<current-user>/Application Support/Dock/desktoppicture.db 

SQLITE 데이터베이스입니다. 이 파일을 이와 같이 터미널에서 열 수 있습니다

sqlite3 "/Application Support/Dock/desktoppicture.db"

그런 다음 다음 선택을 실행하십시오.

SELECT display_uuid,space_uuid,value 
FROM preferences 
JOIN data ON preferences.data_id=data.ROWID 
JOIN pictures ON preferences.picture_id=pictures.ROWID
JOIN displays ON pictures.display_id=displays.ROWID 
JOIN spaces ON pictures.space_id=spaces.ROWID ;

출력이 될 것입니다

<UID1>|<UID2>|<PicturePath>
<UID1>|<UID2>|<PicturePath>
:

UID1 디스플레이의 UID (예 : MacBook 디스플레이, 외부 디스플레이 등)는 모든 디스플레이가 자체 배경 이미지를 가질 수 있으므로), UID2 선택 사항 (때로는 누락 된 경우에는 해당 디스플레이의 모든 공간을 의미 할 수도 있음)과 공간의 UID입니다 (OS X의 모든 디스플레이는 여러 공간을 가질 수 있으며 모든 공간이 자체 배경을 가질 수 있음) 및 <PicturePath> 그림의 경로입니다 (이 특정 디스플레이 의이 특정 공간에 대한).

물론 앱을 SQLITE 라이브러리와 연결하고 라이브러리 호출로 모든 작업을 수행 할 수 있지만 쿼리 및 데이터 업데이트에 대한 SQLITE 및 SQL 구문을 사용하는 방법은 물론입니다. 이 답변의 범위를 넘어서는 길. 하나의 팁 : 당신은 종료합니다 sqlite 입력하여 클라이언트 .exit (주요 기간에 주목하십시오!) Enter (Ctrl+C는 작동하지 않습니다).

한 가지 더 참고 : 앱에서 데이터베이스를 업데이트 할 수 있지만 도크가 알지 못하기 때문에 영향을 미치지 않습니다 (뒷면 뒤에서 변경). 도크가 그 변화를 알리기 위해, 당신은 killall Dock, 단지 그것을 hup하기에 충분할 수 있습니다 (killall -HUP Dock), 이것은 실제로 그것을 죽이지 않을 것입니다 (나는 그것을 테스트하지 않았습니다). 앱 내에서 도크의 프로세스 ID를 찾고 신호를 보내야합니다 (이것은 동일합니다. killall 프로세스 ID를 얻고 신호를 보내는 것도 해당 답변의 범위를 벗어납니다.

레거시 답변 (사자 및 이전)

당신은 올바른 길을 가고 있습니다. Carbon/Cocoa로 응용 프로그램을 작성하는 경우 기본 설정 파일을로드하십시오. 위치에 있습니다

/Users/<current-user>/Library/Preferences/com.apple.desktop.plist

사전에는 키가있는 하위 사전이 포함되어 있습니다 default 그리고이 하위 사전에는 열쇠가 포함되어 있습니다 ImageFilePath, 이미지 파일에 대한 절대 경로를 포함합니다.

다른 팁

Shell + AppleScript에서 다음과 같이 할 수 있습니다.

#!/bin/bash
osascript -e 'tell app "finder" to get posix path of (get desktop picture as alias)'
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top