Obsidian URI هو بروتوكول URI مخصص يدعمه Obsidian يتيح لك تنفيذ إجراءات متنوعة، مثل فتح ملاحظة أو إنشاء ملاحظة. يُمكّن Obsidian URI من الأتمتة وسير العمل بين التطبيقات.
## تنسيق URI
تستخدم عناوين Obsidian URI التنسيق التالي:
```
obsidian://action?param1=value¶m2=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`. هذا المعرّف فريد لكل مجلد على حاسوبك. يمكن العثور على المعرّف بفتح مبدّل الخزنات والنقر على "انسخ معرف الخزنة" في قائمة السياق للخزنة المطلوبة.