الأسئلة الشائعة: آلية العلامات في macOS (Finder) وشرح تنفيذها في هذا التطبيق
1. ما هي علامات Finder في macOS؟ وأين تُخزَّن؟
تُعتبر علامات Finder من ضمن البيانات الوصفية للملف، ولا تُكتب داخل محتوى الملف نفسه، بل تُخزَّن في الخصائص الموسَّعة (xattr) الخاصة بالملف، ويكون الاسم الرئيسي لها:
com.apple.metadata:_kMDItemUserTags
ومحتواها عبارة عن ملف plist ثنائي، وهو في الأساس "مصفوفة من العلامات". يحتوي كل عنصر من هذه العلامات على اسم العلامة و رقم اللون، حيث يتراوح رقم اللون بين 0–7 (0 بلا لون، 1 رمادي، 2 أخضر، 3 أرجواني، 4 أزرق، 5 أصفر، 6 أحمر، 7 برتقالي).
وبالتالي:
- إن "وضع علامة على ملف" هو في جوهره "كتابة البيانات الوصفية للعلامة في الخصائص الموسَّعة".
- أما إمكانية البحث عنها بواسطة Spotlight فهي أمر منفصل.
2. حول الخصائص الموسَّعة القديمة com.apple.FinderInfo
تُعد com.apple.FinderInfo إحدى الآليات القديمة المستخدمة في macOS/Finder:
- الآلية القديمة: كانت تتيح تمثيل لون واحد فقط، ولم تكن تتضمن أسماء العلامات.
- لا تزال تُكتب في الأنظمة الحديثة: رغم أن التركيز الآن ينصب على
_kMDItemUserTags، فإن Finder قد يستمر في كتابة/تحديثcom.apple.FinderInfo(للتوافق مع الأنظمة القديمة).
وبشكل أكثر تحديدًا:
- لن يقوم Finder بكتابة/تحديث معلومات اللون في
com.apple.FinderInfoإلا إذا كان اسم العلامة موجودًا في قائمة العلامات المخصصة لدى Finder. - عند وجود عدة ألوان للعلامات، سيتم استخدام آخر لون في القائمة الفعالة.
3. مشكلة تعدد اللغات: لماذا يتحول اللون نفسه إلى "علامة مختلفة" في أنظمة ذات لغات مختلفة؟
تقوم macOS بكتابة أسماء العلامات المترجمة حسب اللغة المحلية:
- في النظام الإنجليزي يتم كتابة
Red. - وفي النظام الصيني يتم كتابة
红色.
وهذا يعني أنهما يُعتبران علامتين مختلفتين من وجهة نظر النظام. يستخدم هذا التطبيق واجهة برمجة التطبيقات الخاصة بالنظام للحصول على أسماء العلامات الافتراضية، وبالتالي فإن النتائج تعتمد على البيئة اللغوية للنظام (إعدادات النظام → عام → اللغة والمنطقة / لغة الواجهة؛ عند اختيار "تلقائي"، فإنها ستتبع لغة النظام الحالية). وإذا لم تتطابق لغة النظام مع لغة التطبيق، فقد يحدث عدم توافق في أسماء العلامات.
4. لماذا يجب أن تتطابق إعدادات التطبيق مع تكوين العلامات في Finder؟
- بسبب قيود نظام macOS، لا يستطيع التطبيق عادةً قراءة قائمة تكوين "أسماء العلامات المخصصة ↔ الألوان" كاملةً من Finder.
- عند قراءة العلامات، غالبًا ما توفر واجهة برمجة التطبيقات فقط اسم العلامة دون اللون مباشرةً؛ وإذا لم يكن التطبيق قد قام بتكوين اللون المقابل لهذا الاسم، فقد لا يظهر اللون بشكل صحيح.
- عند كتابة العلامات، عادةً ما توفر واجهة برمجة التطبيقات أيضًا اسم العلامة فقط، ويتم تحديد اللون النهائي بناءً على تعريف Finder لذلك الاسم.
5. كيف تُحفظ البيانات الوصفية للعلامات في الأماكن المختلفة على القرص أو عبر الشبكة؟ (APFS / AppleDouble / NTFS ADS)
5.1 APFS (القرص المحلي) — الحفظ الأصلي باستخدام xattr (الأكثر موثوقية)
يدعم نظام APFS الخصائص الموسَّعة بشكل أصلي، وتُحفظ البيانات الوصفية للعلامات مباشرةً في الخصائص الموسَّعة الخاصة بالملف.
5.2 الأماكن التي لا تدعم xattr أو تدعمها بشكل غير كامل — AppleDouble (._اسم_الملف_الأصلي)
عندما يكون نظام الملفات أو البروتوكول الهدف غير قادر على حفظ الخصائص الموسَّعة بشكل موثوق (كما هو الحال في FAT32 وexFAT والمحركات الشبكية مثل SMB/WebDAV/NFS)، تقوم macOS بتخزين البيانات الوصفية في ملفات AppleDouble المرافقة:
._اسم_الملف_الأصلي(على سبيل المثال،photo.jpgيقابله._photo.jpg).
إمكانية الظهور:
- لا يعرضها Finder أبدًا (حتى لو تم تمكين عرض الملفات المخفية).
- يمكن رؤيتها باستخدام الأمر
ls -laفي Terminal. - يمكن رؤيتها في Windows عند تمكين عرض الملفات المخفية، ولذلك ستجد العديد من الملفات الصغيرة التي تبدأ بـ
._.
ملاحظة هامة (سبب شائع لفقدان العلامات):
- إذا قمت بنقل/نسخ ملفات في Windows أو باستخدام بعض الأدوات، وقمت بنقل الملف الأصلي فقط، تاركًا ملفات
._في مكانها، فستبدو العلامات وكأنها اختفت عند الوصول إلى الموقع الجديد. - ولكن بمجرد نقل ملفات
._المقابلة أيضًا، يمكن استعادة العلامات عادةً.
5.3 اتصال SMB بـ NTFS: قد تُستخدم ADS (تدفقات البيانات البديلة)
عند الوصول إلى نظام NTFS عبر SMB، وفي ظل توافق إعدادات الخادم/البروتوكول، قد لا تقوم macOS بإنشاء ملفات ._، بل تكتب البيانات الوصفية في ADS (Alternate Data Streams، تدفقات البيانات البديلة) الخاصة بنظام NTFS:
- ADS هي خاصية خاصة بنظام NTFS: إذ يمكن لملف واحد، بالإضافة إلى "البيانات الرئيسية"، أن يحتوي على عدة "تدفقات بيانات إضافية غير مرئية" تُستخدم لتخزين بيانات وصفية إضافية.
- الميزة: عند نقل/نسخ الملفات داخل نظام NTFS، تبقى هذه البيانات الوصفية عادةً محفوظة، كما أنها تُعتبر "أنظف" بالنسبة لمستخدمي Windows (لا تُنتج ملفات
._).
لكن يُرجى الانتباه إلى التالي:
- عندما تقوم بنقل/نسخ ملفات من NTFS إلى FAT32 أو exFAT، فإن نظام الملفات الوجهة لا يدعم ADS/xattr أو أي نوع من البيانات الوصفية، وغالبًا ما سيظهر لك Windows رسالة مثل:
"هل تريد حقًا نسخ الملف بدون نسخ خصائصه؟" وهذا يعني أن هذه البيانات الإضافية ستُفقد؛ وقد لا تُحفظ العلامات بعد النسخ.
6. كيف يمكنني عرض خصائص xattr الخاصة بالملفات؟
الأمر xattr في سطر الأوامر غير مريح: فهو لا يدعم معالجة/عرض خاصية com.apple.metadata:_kMDItemUserTags من نوع plist الثنائي، ولذلك يجب استخدام الخيار -px لإخراجها بشكل صحيح في صيغة سداسية عشرية.
نوصي باستخدام أدوات طرف ثالث:
- xattred: يمكنه عرض التحقق من خصائص xattr مثل
_kMDItemUserTagsوcom.apple.FinderInfoبطريقة واضحة.
7. ما العلاقة بين Spotlight والعلامات؟ وهل تعتمد العلامات على Spotlight؟
- العلامات نفسها لا تعتمد على Spotlight: فبمجرد وضع العلامة على الملف، تُكتب في خصائصه الموسَّعة، ولا يؤثر ما إذا كانت مفهرسة أم لا على وجود العلامة من الأساس.
- Spotlight مجرد محرك فهرسة: وهو المسؤول عن فهرسة أسماء العلامات وغيرها من البيانات الوصفية لاستخدامها في عمليات البحث على مستوى النظام.
- عادةً ما يقوم macOS بصيانة الفهرس تلقائيًا عند نقل الملفات أو إعادة تسميتها؛ لكن الأقراص الخارجية والأقراص الشبكية والمجلدات المدرجة ضمن "خصوصية البحث" قد لا تُفهرس بواسطة Spotlight.
8. ما الذي يقوم به "الفهرس المحسَّن" في هذا التطبيق؟
عندما لا يستطيع Spotlight تغطية المناطق المطلوبة (مثل الأقراص الخارجية أو الشبكية أو المجلدات المُستبعدة من البحث)، يقدم هذا التطبيق فهرسًا محسنًا:
- أثناء تصفحك للمجلدات داخل التطبيق، يقوم التطبيق بتسجيل معلومات العلامات الخاصة بالملفات الموجودة في هذا المجلد.
- عند اختيار عرض جميع الملفات ذات علامة معينة من خلال شجرة المجلدات، سيقوم التطبيق بإظهار الملفات التي وجدها الفهرس المحسَّن، بالإضافة إلى نتائج Spotlight.
- يمكنك تحديث فهرس العلامات لمحتوى مجلد معين من خلال النقر بزر الماوس الأيمن على المجلد واختيار "مسح وتحديث".