Obsidian URI هو بروتوكول URI مخصص يدعمه Obsidian يتيح لك تنفيذ إجراءات متنوعة، مثل فتح ملاحظة أو إنشاء ملاحظة. يُمكّن Obsidian URI من الأتمتة وسير العمل بين التطبيقات. ## تنسيق URI تستخدم عناوين Obsidian URI التنسيق التالي: ``` obsidian://action?param1=value&param2=value ``` المعامل `action` هو الإجراء الذي ترغب في تنفيذه. تشمل الإجراءات المتاحة: - `open` لفتح ملاحظة. - `new` لإنشاء ملاحظة أو الإضافة إلى ملاحظة موجودة. - `daily` لإنشاء أو فتح ملاحظتك اليومية. - `unique` لإنشاء ملاحظة فريدة جديدة. - `search` لفتح البحث. - `choose-vault` لفتح مدير الخزنات. > [!warning] الترميز > تأكد من أن قيمك مرمّزة بشكل صحيح وفق معيار URI. على سبيل المثال، يجب ترميز أحرف الشرطة المائلة `/` كـ `%2F` ويجب ترميز أحرف المسافة كـ `%20`. > > هذا مهم بشكل خاص لأن الحرف "المحجوز" المرمّز بشكل غير صحيح قد يُفسد تفسير URI. [اطلع على التفاصيل هنا](https://en.wikipedia.org/wiki/Percent-encoding). ## فتح ملاحظة يفتح الإجراء `open` خزنة Obsidian، أو يفتح ملفًا داخل تلك الخزنة. ### أمثلة - `obsidian://open?vault=my%20vault` يفتح هذا الخزنة `my vault`. إذا كانت الخزنة مفتوحة بالفعل، يتم التركيز على النافذة. - `obsidian://open?vault=ef6ca3e3b524d22f` يفتح هذا الخزنة المعرّفة بالمعرّف `ef6ca3e3b524d22f`. - `obsidian://open?vault=my%20vault&file=my%20note` يفتح هذا الملاحظة `my note.md` في الخزنة `my vault`، بافتراض أن الملف موجود. - `obsidian://open?path=%2Fhome%2Fuser%2Fmy%20vault%2Fpath%2Fto%2Fmy%20note` سيبحث هذا عن أي خزنة تحتوي على المسار `/home/user/my vault/path/to/my note`. ثم يتم تمرير بقية المسار إلى معامل `file`. على سبيل المثال، إذا كانت هناك خزنة في `/home/user/my vault`، فسيكون هذا مكافئًا لتعيين معامل `file` على `path/to/my note`. > [!tip] فتح عنوان أو كتلة > باستخدام ترميز URI الصحيح، يمكنك الانتقال إلى عنوان أو كتلة داخل ملاحظة. `Note%23Heading` سينتقل إلى العنوان المسمى "Heading"، بينما `Note%23%5EBlock` سينتقل إلى الكتلة المسماة "Block". ### المعاملات - `vault` يمكن أن يكون إما اسم الخزنة أو معرّف الخزنة[^1]. - `file` يمكن أن يكون إما اسم ملف، أو مسارًا من جذر الخزنة إلى الملف المحدد. إذا كان امتداد الملف `md`، يمكن حذف الامتداد. - `path` مسار مطلق لنظام الملفات إلى ملف. - استخدام هذا المعامل سيتجاوز كلًا من `vault` و `file`. - سيؤدي هذا إلى جعل التطبيق يبحث عن الخزنة الأكثر تحديدًا التي تحتوي على مسار الملف المحدد. - ثم يحل بقية المسار محل معامل `file`. - `prepend` سيضيف إلى أعلى الملف ويحاول دمج الخصائص. - `append` سيضيف إلى نهاية الملف ويحاول أيضًا دمج الخصائص. - `paneType` (اختياري) يحدد أين سيتم فتح الملاحظة في واجهة المستخدم. - إذا لم يكن موجودًا، يتم استبدال علامة التبويب النشطة الأخيرة. - `paneType=tab` الفتح في علامة تبويب جديدة. - `paneType=split` الفتح في مجموعة علامات تبويب جديدة. - `paneType=window` الفتح في نافذة منبثقة (سطح المكتب فقط). ## إنشاء ملاحظة ينشئ الإجراء `new` ملاحظة جديدة في الخزنة، اختياريًا مع بعض المحتوى. ### أمثلة - `obsidian://new?vault=my%20vault&name=my%20note` يفتح هذا الخزنة `my vault`، وينشئ ملاحظة جديدة باسم `my note`. - `obsidian://new?vault=my%20vault&file=path%2Fto%2Fmy%20note` يفتح هذا الخزنة `my vault`، وينشئ ملاحظة جديدة في `path/to/my note`. ### المعاملات - `vault` يمكن أن يكون إما اسم الخزنة أو معرّف الخزنة[^1]. نفس الإجراء `open`. - `name` اسم الملف المراد إنشاؤه. إذا تم تحديد هذا، سيتم اختيار موقع الملف بناءً على إعدادات "الموقع الافتراضي للملاحظة الجديدة". - `file` مسار مطلق داخل الخزنة، بما في ذلك الاسم. سيتجاوز `name` إذا تم تحديده. - `path` مسار مطلق عام. يعمل بشكل مشابه لخيار `path` في الإجراء `open`، والذي سيتجاوز كلًا من `vault` و `file`. - `paneType` (اختياري) يحدد أين سيتم فتح الملاحظة في واجهة المستخدم. نفس الإجراء `open`. - `content` (اختياري) محتويات الملاحظة. - `clipboard` (اختياري) استخدام محتويات الحافظة بدلًا من تحديد `content`. - `silent` (اختياري) قم بتضمين هذا المعامل إذا كنت لا تريد فتح الملاحظة الجديدة. - `append` (اختياري) قم بتضمين هذا المعامل للإلحاق بملف موجود إذا كان موجودًا. - `overwrite` (اختياري) الكتابة فوق ملف موجود إذا كان موجودًا، ولكن فقط إذا لم يتم تعيين `append`. - `x-success` (اختياري) انظر [[#استخدام معاملات x-callback-url]]. ## إنشاء أو فتح الملاحظة اليومية ينشئ الإجراء `daily` ملاحظتك اليومية أو يفتحها. يجب تمكين مكوّن [[الملاحظات اليومية]] الإضافي. ### أمثلة - `obsidian://daily?vault=my%20vault` يفتح هذا الخزنة `my vault`، وينشئ أو يفتح الملاحظة اليومية. ### المعاملات يقبل الإجراء `daily` نفس معاملات الإجراء `new`. ## ملاحظة فريدة ينشئ الإجراء `unique` ملاحظة فريدة جديدة في الخزنة. يجب تمكين مكوّن [[مُنشئ الملاحظات الفريدة]] الإضافي. ### أمثلة - `obsidian://unique?vault=my%20vault` يفتح هذا الخزنة `my vault`، وينشئ ملاحظة فريدة جديدة. - - `obsidian://unique?vault=my%20vault&content=Hello%20World` يفتح هذا الخزنة `my vault`، وينشئ ملاحظة فريدة جديدة بمحتوى `Hello World`. ### المعاملات - `vault` يمكن أن يكون إما اسم الخزنة أو معرّف الخزنة[^1]. نفس الإجراء `open`. - `paneType` (اختياري) يحدد أين سيتم فتح الملاحظة في واجهة المستخدم. نفس الإجراء `open`. - `content` (اختياري) محتويات الملاحظة. - `clipboard` (اختياري) استخدام محتويات الحافظة بدلًا من تحديد `content`. - `x-success` (اختياري) انظر [[#استخدام معاملات x-callback-url]]. ## فتح البحث يفتح الإجراء `search` [[البحث]] في الخزنة المحددة، ويُجري اختياريًا مصطلح بحث. ### أمثلة - `obsidian://search?vault=my%20vault` يفتح هذا الخزنة `my vault`، ويفتح [[البحث]]. - `obsidian://search?vault=my%20vault&query=Obsidian` يفتح هذا الخزنة `my vault`، ويفتح [[البحث]]، ويُجري بحثًا عن `Obsidian`. ### المعاملات - `vault` يمكن أن يكون إما اسم الخزنة أو معرّف الخزنة[^1]. نفس الإجراء `open`. - `query` (اختياري) مصطلح البحث المراد تنفيذه. ## فتح مدير الخزنات يفتح الإجراء `choose-vault` [[إدارة الخزنات|مدير الخزنات]]. ### أمثلة - `obsidian://choose-vault` ## التكامل مع Hook إجراء Obsidian URI هذا مُصمّم للاستخدام مع [Hook](https://hookproductivity.com/). ### مثال `obsidian://hook-get-address` ### المعاملات - `vault` (اختياري) يمكن أن يكون إما اسم الخزنة أو معرّف الخزنة[^1]. إذا لم يتم توفيره، سيتم استخدام الخزنة الحالية أو آخر خزنة تم التركيز عليها. - `x-success` (اختياري) انظر [[#استخدام معاملات x-callback-url]]. - `x-error` (اختياري) انظر [[#استخدام معاملات x-callback-url]]. إذا تم تعريف `x-success`، ستستخدمه واجهة API هذه كـ x-callback-url. وإلا، سيتم نسخ رابط Markdown للملاحظة المركّز عليها حاليًا إلى الحافظة، كعنوان URL بصيغة `obsidian://open`. ## استخدام معاملات x-callback-url تقبل بعض نقاط النهاية معاملات x-callback-url وهي `x-success` و `x-error`. عند توفيرها، سيقدم Obsidian ما يلي لاستدعاء `x-success`: - `name` اسم الملف، بدون امتداد الملف. - `url` عنوان URI بصيغة `obsidian://` لهذا الملف. - `file` (سطح المكتب فقط) عنوان URL بصيغة `file://` لهذا الملف. على سبيل المثال، إذا استقبل Obsidian `obsidian://.....x-success=myapp://x-callback-url`، ستكون الاستجابة `myapp://x-callback-url?name=...&url=obsidian%3A%2F%2Fopen...&file=file%3A%2F%2F...` ## التنسيقات المختصرة بالإضافة إلى التنسيقات المذكورة أعلاه، هناك تنسيقان "مختصران" إضافيان متاحان لفتح الخزنات والملفات: 1. `obsidian://vault/my vault/my note` يكافئ `obsidian://open?vault=my%20vault&file=my%20note`. 2. `obsidian:///absolute/path/to/my note` يكافئ `obsidian://open?path=%2Fabsolute%2Fpath%2Fto%2Fmy%20note`. ## استكشاف الأخطاء وإصلاحها ### تسجيل Obsidian URI على Windows و macOS، يكفي تشغيل التطبيق مرة واحدة لتسجيل بروتوكول Obsidian URI على حاسوبك. على Linux، تكون العملية أكثر تعقيدًا: 1. تأكد من إنشاء ملف `obsidian.desktop`. [اطلع على التفاصيل هنا](https://developer.gnome.org/documentation/guidelines/maintainer/integrating.html#desktop-files). 2. تأكد من أن ملف سطح المكتب يحدد حقل `Exec` كـ `Exec=executable %u`. يُستخدم `%u` لتمرير عناوين URI بصيغة `obsidian://` إلى التطبيق. 3. إذا كنت تستخدم مثبّت AppImage، فقد تحتاج إلى فك ضغطه باستخدام `Obsidian-x.y.z.AppImage --appimage-extract`. ثم تأكد من أن توجيه `Exec` يشير إلى الملف التنفيذي المفكوك. [^1]: معرّف الخزنة هو رمز عشوائي مكون من 16 حرفًا مخصص للخزنة، على سبيل المثال `ef6ca3e3b524d22f`. هذا المعرّف فريد لكل مجلد على حاسوبك. يمكن العثور على المعرّف بفتح مبدّل الخزنات والنقر على "انسخ معرف الخزنة" في قائمة السياق للخزنة المطلوبة.