الحصول على خلفية سطح المكتب على نظام التشغيل Mac
-
08-07-2019 - |
سؤال
وكيف أحصل على خلفية الحالي على ماك؟ مجرد نقطة لي أن وظيفة 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
المحلول
تحديث الجواب (دالاس مافريكس وأحدث)
وبدءا مافريكس، أبل يكتب صور سطح المكتب ل
/Users/<current-user>/Application Support/Dock/desktoppicture.db
والذي هو قاعدة بيانات SQLite. يمكنك فتح هذا الملف في المحطة مثل هذا
sqlite3 "/Application Support/Dock/desktoppicture.db"
ووتشغيل ثم يلي SELECT:
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 من عرض (على سبيل المثال عرض ماك بوك الخاص بك، عرض خارجي، وما إلى ذلك كل عرض يمكن أن يكون صورة الخلفية الخاصة)، UID2
هو اختياري (في بعض الأحيان كان مفقودا، وهو ما يعني على الأرجح عن فضاءات هذا العرض)، وأنه هو UID من مساحة (كل عرض على OS X يمكن أن يكون المسافات المتعددة وكل مساحة يمكن أن يكون لها iamge الخلفية الخاصة) و<PicturePath>
هو المسار إلى الصورة (لهذا الفضاء بشكل خاص على هذا العرض معين).
وبالطبع يمكنك ربط التطبيقات الخاص بك ضد مكتبة سكليتي وتفعل كل ذلك مع المكالمات مكتبة، ولكن كيفية استخدام برنامج SQLite وبناء الجملة SQL للاستعلامات وتحديث البيانات، بطبيعة الحال، <م> الطريق خارج نطاق هذا . الجواب م> واحد فقط غيض: هل خروج العميل sqlite
بكتابة .exit
(! لاحظ فترة الرائدة) وهاهنا (وCTRL + C لا تعمل)
واحد فقط أكثر ملاحظة: يمكنك تحديث قاعدة البيانات في التطبيق الخاص بك، ولكن هذا لن يكون له أي تأثير كما قفص الاتهام لن تعرف عن ذلك (تقوم بتغييره وراء ظهرها). لجعل حوض بينة من هذا التغيير، لديك قتله مثل killall Dock
، قد يكون كافيا لمجرد HUP عليه (killall -HUP Dock
)، والذي لن يقتل حقا (أنا لم تختبر ذلك). ضمن التطبيق، عليك أن تجد معرف العملية من قفص الاتهام وإرساله إشارة (هذا هو نفسه الذي killall
لا)، والحصول على معرفات العملية وإرسال إشارات هو أيضا خارج نطاق هذا الرد.
تراث الجواب (الأسد وأقدم)
وأنت على الطريق الصحيح. إذا كنت أكتب تطبيق في الكربون / الكاكاو، مجرد تحميل ملف التفضيل. وهي تقع في
/Users/<current-user>/Library/Preferences/com.apple.desktop.plist
والقاموس يحتوي على-القاموس الفرعية مع default
مفتاح وهذا القاموس الفرعية يحتوي على ImageFilePath
مفتاح، تحتوي على المسار المطلق لملف الصورة.
نصائح أخرى
ويمكنك أن تفعل ذلك في قذيفة + ابليسكريبت مثل هذا:
#!/bin/bash
osascript -e 'tell app "finder" to get posix path of (get desktop picture as alias)'