[English](../../README.md) · [简体中文](../../README.zh.md) · [繁體中文](README.zh-Hant.md) · [日本語](README.ja.md) · [한국어](README.ko.md) · [Español](README.es.md) · [Português](README.pt.md) · [Français](README.fr.md) · [Deutsch](README.de.md) · [Italiano](README.it.md) · [Русский](README.ru.md) · [Tiếng Việt](README.vi.md) · [ไทย](README.th.md) · [Bahasa Indonesia](README.id.md) · [हिन्दी](README.hi.md) · [বাংলা](README.bn.md) · **العربية** · [Türkçe](README.tr.md)
# QuickText
> مدير مقتطفات وموسّع نصوص مقيم في شريط نظام Windows.

**توقّف عن كتابة الشيء نفسه مرتين.** يقيم QuickText في شريط مهام ويندوز (Tray): خزّن النص الذي تعود إليه مرارًا وتكرارًا — البريد الإلكتروني، العناوين، التوقيعات، القوالب، الردود الجاهزة، الصور — مرة واحدة، ثم في **أي حقل إدخال** اطبع بضعة أحرف أو اختصارًا فيَحطّ مباشرةً عند مؤشّر الكتابة. متعدّد الأسطر، مع الحفاظ على الأحرف الخاصة والرموز التعبيرية حرفًا بحرف.
> نصوصك القابلة لإعادة الاستخدام على بُعد بضع ضغطات — تُلقى مباشرةً عند المؤشّر.
- WPF / .NET 10، ملف تنفيذي محمول واحد، **بلا حساب، غير متصل افتراضيًا** — لا يتصل بـ GitHub سوى التحقق الاختياري من التحديثات.
- البيانات عبارة عن **JSON محلي** داخل مجلّدك الخاص — ضعها في Dropbox / OneDrive / NAS لمزامنتها.
- سمتان داكنة وفاتحة (أو اتّباع Windows)، **18 لغة للواجهة** (مع عكس الاتجاه من اليمين إلى اليسار للعربية)، وتُطبَّق الإعدادات فورًا.
**[⬇ تنزيل أحدث إصدار](https://github.com/rockbenben/QuickText/releases/latest)** —— Windows x64، محمول بملف واحد. غير موقَّع رقميًا، لذا يحذّر SmartScreen عند أول تشغيل: **More info → Run anyway**.
- `QuickText--win-x64.zip` — يتضمّن وقت تشغيل .NET، لذا يعمل على أي جهاز Windows 10/11 x64 دون أي متطلبات مسبقة. اختر هذا إن لم تكن متأكدًا: أجهزة الشبكة الداخلية أو غير المتصلة بالإنترنت، أو للتنقّل به على ذاكرة USB.
- `QuickText--win-x64-needs-dotnet10.zip` — يتطلّب تثبيت [وقت تشغيل .NET 10 لسطح المكتب](https://dotnet.microsoft.com/download/dotnet/10.0) مسبقًا. لجهازك المتصل بالإنترنت: ثبّته مرة واحدة، وبعدها يصبح كل تحديث صغير الحجم جدًا.
- `QuickText.exe` — نفس البناء بدون ملف مضغوط: انقر وشغّله مباشرة، أو استبدل به نسختك الحالية للتحديث.
الميزات والبيانات متطابقة تمامًا؛ الفرق الوحيد هو تضمين وقت التشغيل من عدمه.
---
## أين تستخدمه
أينما كنت **تكتب الشيء نفسه مرارًا وتكرارًا على ويندوز**. يقيم في شريط المهام ويعمل في كل حقل إدخال (نوافذ الدردشة، نماذج المتصفّح، المحرّرات، عملاء البريد — غير مرتبط بتطبيق بعينه). إنه **مدير مقاطع نصّية (snippet) وموسّع نصوص (text expander) في آنٍ واحد**، مع بحث بالبينيين وقوالب متغيّرات وصور.
| مَن | ما الذي يخزّنه |
| ------------------------------------------------ | ------------------------------------------------------------------------------------------------- |
| **الدعم / التجارة الإلكترونية** | ردود جاهزة، أجوبة معيارية، عبارات ترويجية، رموز QR أو صور المنتجات |
| **المبيعات / الأعمال** | قوالب البريد، عبارات الافتتاح، عروض الأسعار، عبارات الختام |
| **المطوّرون / التشغيل** | الأوامر، ملفات الإعداد، JSON، الشيفرة النمطية (يُخرَج `{...}` حرفيًا ولا يُفسَّر أبدًا) |
| **المكتب / تعبئة النماذج** | البريد، العنوان، الهاتف، أرقام الهوية، قوالب محاضر الاجتماعات (يطالبك بالإدخال، ويتذكّر آخر قيمة) |
| **الموارد البشرية / الإدارة / الشؤون القانونية** | إشعارات التعيين، الإخطارات المعيارية، إخلاءات المسؤولية — محلّي، دون اتصال، مناسب للمحتوى الحسّاس |
> **قبل أن تضع فيه شيئًا حسّاسًا.** تُحفظ المقاطع بصيغة **JSON نصية غير مشفَّرة**، وذلك عن قصد — كي تستطيع قراءة الملف ومقارنته وتحريره بنفسك. هذا مناسب تمامًا للقوالب والعبارات الجاهزة على جهاز تستخدمه وحدك. لكنه يعني أيضًا أن رقم هوية أو كلمة مرور تضعها هناك يقرؤها كل ما يستطيع قراءة الملف — بما في ذلك أي برنامج آخر يعمل بحسابك، وخدمة المزامنة إن وضعت المجلد في Dropbox / OneDrive. أمّا الأسرار الحقيقية فاتركها لمدير كلمات المرور، ودع QuickText للنص الذي لا يزعجك أن يكون ظاهرًا.
## شاهده في 30 ثانية
في **أي مكان يمكنك الكتابة فيه** — لنقُل إنك تحتاج بريدك الإلكتروني في نافذة دردشة:
1. **الاستدعاء** — اضغط `Ctrl+Shift+8`؛ تظهر اللوحة فوق النافذة النشطة.
2. **البحث** — اطبع بضعة أحرف؛ تُبرَز النتائج المطابقة. يطابق الاسم والبينيين (كاملًا + الحروف الأولى) والاختصار والمتن.
3. **Enter** — يُلصَق البريد **حيث كان مؤشّرك تمامًا**. تمّ.
> لا تطبع شيئًا لتتصفّح حسب الفئة، مع تثبيت `الأخيرة` / `المفضّلة` في الأعلى؛ وما تستخدمه أكثر **يطفو إلى القمة** تلقائيًا.
> `↑↓` للتنقّل · `←→` لتبديل الفئة · `Alt+1–9` للاختيار السريع · النقر المزدوج للإرسال · `Esc` للإغلاق.
## ثلاث طرق للوصول إليه — اختر ما يناسبك
المكتبة نفسها، ثلاث طرق للسحب منها؛ امزج بينها بحرّية:
| الطريقة | كيف تُشغَّل | الأنسب لـ |
| -------------------- | ----------------------------------------------- | ------------------------------------------------ |
| 🔍 **بحث اللوحة** | `Ctrl+Shift+8` ← اطبع ← Enter | مقاطع كثيرة، استخدام متقطّع، التصفّح للاختيار |
| ⌨️ **اختصار مضمّن** | فقط اطبع `;sig` ثم Space / Tab / Enter | العبارات الثابتة عالية التكرار، دون الحاجة للوحة |
| 🧩 **قالب متغيّرات** | اسحب مقطعًا يحوي `{variables}` عبر أيٍّ مما سبق | البريد / النماذج: قالب واحد، مع تغيير بضع كلمات |
- **الصور أيضًا**: أضِفها من الحافظة أو من ملف، وتُلصَق كصورة عند الإرسال؛ ويمكن أن يكون للصور اختصارات، فاطبع الاختصار لتحصل على الصورة (رموز QR، توقيعات بشعار).
- **إخراج لكل مقطع على حدة**: عبارات الدردشة تُرسَل تلقائيًا بعد اللصق، ومقاطع الشيفرة لا تفعل ذلك أبدًا — فلا تتداخل.
تجد التفاصيل الكاملة حول الاختصارات والمتغيّرات في **بالتفصيل** أدناه — قسمَي **العناصر النائبة (Placeholders)** و**الاختصارات (Abbreviations)**.
---
**بالتفصيل**
## يعمل فور التثبيت
انقر نقرًا مزدوجًا على **`QuickText.exe`**؛ فيقيم في **شريط مهام النظام** (بلا زرّ في شريط المهام). عند **التشغيل الأول** فإنه:
- يُسقِط **مكتبة مبدئية** صغيرة (فئتان، بلغة **واجهتك**) لتجرّبه فورًا؛
- يعرض فقاعة تُظهر مفتاح الاستدعاء — الافتراضي **`Ctrl+Shift+8`**.
> أيقونات أعلى يمين اللوحة: **+ جديد** · **المدير** (فتح المحرّر) · **الإعدادات** · **📌 تثبيت** (إبقاء اللوحة مفتوحة بعد الإرسال، لإطلاق عدّة عناصر متتالية). انتقل مباشرةً إلى المدير / الإعدادات دون العودة إلى شريط المهام.
## إضافة / تعديل نصوصك

- **شريط المهام ← فتح المدير** — المحرّر الكامل: الفئات على اليسار، المقاطع على اليمين، والمحرّر بالأسفل. أضِف/أعِد تسمية/احذف الفئات (بوسم من **7 ألوان**)، وحرّر المقاطع (الاسم، الاختصار، المتن، الصورة). اسحب لإعادة الترتيب أو النقل بين الفئات؛ ويتراجع `Ctrl+Z` عن الحذف.
- **شريط المهام ← جديد من الحافظة** — أنشئ مقطعًا جديدًا من محتوى الحافظة الحالي وافتحه في المدير لإكماله (اضغط على **حفظ** لكتابته على القرص؛ يسألك إغلاق المدير عن الحفظ أو التجاهل).
- **الإنشاء في اللوحة** — اكتب النص في حقل البحث واضغط `Ctrl+N` لحفظه كمقتطف جديد (يصبح هذا النص هو المتن؛ و`@التصنيف …` يضعه في ذلك التصنيف) والانتقال إلى المدير لإكماله (`Ctrl+E` يحرّر المحدَّد).
> **النص الطويل / الشيفرة**: يفتح زر `⤢` أعلى المتن محرّرًا شبه ملء الشاشة (أو اضغط `Ctrl+Shift+Enter` داخل المتن)؛ ينهي `Esc` أو "تمّ" الجلسة؛ وإن غيّرت شيئًا فسيُسأل أولًا عن الحفظ أو التجاهل. مع تفعيل "تمكين العناصر النائبة {variable}"، تُلوَّن الرموز **حسب نوعها** — المتغيّرات بلون سماوي، والرموز التلقائية مثل `{date}` بلون كهرماني، و`{snippet:x}` بلون بنفسجي، و`{cursor}` بخط سماوي متقطّع — بينما يحصل اسم مقطع مكتوب خطأ، أو تنسيق تاريخ غير صالح، أو قوس غير مغلق على **موجة حمراء** يمكنك التحويم عليها لمعرفة السبب. كل هذه تُلصَق **حرفيًا** عند الإرسال، وهو ما كان يُكتشَف سابقًا فقط بعد لصق الشيء الخطأ. التحويم على رمز تاريخ يعرض أيضًا معاينة لقيمته المحسوبة. أما بالنسبة للشيفرة، فاترك المربّع دون تفعيل: يُعطَّل الإبراز كليًا فيبقى متن مليء بـ `{}` هادئًا، ويكتفي شريط الحالة بذكر عدد الرموز التي ستُخرَج كما هي. مُضمَّن أيضًا: **يحافظ Enter على المسافة البادئة** و**يُزيح `Tab` تحديدًا كاملًا متعدّد الأسطر**.
>
> تعرض النافذة الموسَّعة **أرقام الأسطر دائمًا**، ويقدّم تذييلها مُنتقي **تنسيق الشيفرة** — JSON وYAML وXML وHTML وMarkdown وSQL وPython وJavaScript/TypeScript وC# وJava وPowerShell وShell وINI، 13 تنسيقًا في المجموع — يُبرز صياغة المتن ويُتذكَّر لكل مقطع على حدة. **يبقى النص المخزَّن صِرفًا وما يُلصَق دون تغيير.** يلوّن إبراز العناصر النائبة الخلفية بينما يلوّن إبراز الصياغة الرموز نفسها، فلا يتعارض الاثنان أبدًا: يُظهر متن JSON يحوي `{variables}` بنيته ومتغيّراته في آنٍ واحد.
## العناصر النائبة (قالب واحد، مواقف متعدّدة) · التفعيل اختياري لكل مقطع
العناصر النائبة عبارة عن **مفتاح لكل مقطع على حدة**: فعّل "**تمكين العناصر النائبة {variable}**" في محرّر المدير لتُحلّ الرموز أدناه عند الإرسال؛ **وإن تُرِك دون تفعيل (الوضع الافتراضي) يُرسَل المتن حرفيًا** — فالشيفرة والسكربتات وملفات JSON المليئة بـ `{...}` الحرفية لا تُساء قراءتها أو يُطالَب بها أبدًا.
> عند الترقية: كانت العناصر النائبة سابقًا مُفعَّلة دائمًا. سيؤدي أول تشغيل بعد الترقية إلى تفعيل المفتاح تلقائيًا لـ **المقاطع الموجودة** التي يحوي متنها `{...}`، فلا يتغيّر أي سلوك؛ ألغِ تفعيله في المدير لتلك التي هي شيفرة فعليًا.
عند التفعيل، تُحلّ هذه العناصر النائبة عند الإرسال:
| العنصر النائب | ما يفعله |
| ------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `{name}` (أي تسمية) | **يطالبك بتعبئته** قبل اللصق؛ **ويتذكّر آخر قيمة** فلا يُعيد السؤال عند التكرار |
| `{name:John}` | متغيّر بقيمة **افتراضية**، مُعبَّأة مسبقًا في المطالبة |
| `{env\|dev\|test\|prod}` | متغيّر بـ **خيارات** — تعرض المطالبة قائمة منسدلة (الخيار الأول يعمل كقيمة افتراضية أيضًا؛ والكتابة الحرّة ما زالت مسموحة) |
| `{clipboard}` | يُدرِج محتوى الحافظة الحالي |
| `{cursor}` | يترك المؤشّر عند هذه النقطة بعد اللصق (ويكبح أيضًا الضغط التلقائي على Enter) |
| `{date}` `{time}` `{datetime}` | يُدرِج التاريخ/الوقت الحالي؛ ويدعم الإزاحات مثل `{date+7}` (بعد 7 أيام) والتنسيقات المخصّصة مثل `{date=yyyy-MM-dd}` / `{time=HH:mm:ss}`، ويمكن دمجها مع الإزاحة: `{date+7=MM-dd}`. كما تعمل الأسماء المستعارة الصينية `{日期}` / `{时间}` / `{日期时间}` |
| `{uuid}` `{random}` | قيم عشوائية: UUID / 6 أرقام، جديدة في كل موضع |
| `{snippet:name}` | **يُضمّن متن مقطع آخر** (حتى 3 مستويات عمقًا، آمن ضدّ الدورات) — احتفظ بالتوقيعات المشتركة في مكان واحد |
مثال: توقيع `Best regards,\n{name}` (مع تمكين العناصر النائبة) ← يسأل عن الاسم عند الإرسال ← يلصق التوقيع المكتمل.
## الاختصارات (تتوسّع أثناء الكتابة، بلا لوحة) · اختياري
امنح مقطعًا **اختصارًا** ليتوسّع مباشرةً في أي حقل إدخال. تُضبَط **بادئة التشغيل** مرة واحدة في الإعدادات (الافتراضية `;`):
1. في المدير، اطبع **الاختصار نفسه فقط** — مثلًا `sig` لتوقيعك. تُضاف البادئة تلقائيًا (لا تُعِد كتابتها)؛ ويُظهِر الحقل البادئة الحالية `;` أمامه.
2. في أي حقل إدخال اطبع **`;sig`** (= البادئة + الاختصار) ثم **Space / Tab / Enter** ← يحذف `;sig` ويوسّع المتن (يظهر عنصر نائب `{placeholder}` أولًا عندما يكون المقطع قد فعّل العناصر النائبة).
3. **أخطأت في الكتابة؟** اضغط **Backspace مباشرةً بعد** التوسّع لإعادته إلى `;sig` (النافذة نفسها، خلال 5 ثوانٍ).
تفاصيل: المطابقة **غير حسّاسة لحالة الأحرف** (`;SIG` يعمل مع تشغيل CapsLock)؛ والخطأ الإملائي المصحَّح بـ Backspace لا يزال يتوسّع؛ ومقطعان يتشاركان اختصارًا يحصلان على **تحذير مضمّن** في المدير؛ وتتضمّن قائمة شريط المهام مفتاح **"إيقاف التوسّع مؤقتًا"** بنقرة واحدة (للعروض التوضيحية/الألعاب).
> **حول البادئة:** تمنع البادئة (الافتراضية `;`) الكتابة العادية / البينيين من إطلاق اختصار مجرّد عن طريق الخطأ. غيّرها من **الإعدادات ← الاختصارات ← بادئة التشغيل** (إلى `,` أو `:` …) أو **اتركها فارغة**. الاختصار المسبوق ببادئة محدّد ذاتيًا ويعمل حتى لو التصق بالنصّ السابق (مثل `thx;sig`)؛ ومن دون بادئة يعمل فقط ككلمة مستقلة (لا يعمل أبدًا كذيل لكلمة أطول مثل `graf`). يمكنك أيضًا تعطيل الاختصارات لكل تطبيق (قائمة سوداء، مثل `cmd.exe; putty.exe`) أو إيقافها بالكامل.
## الإخراج والإعدادات الشائعة (شريط المهام ← الإعدادات)
- **الإخراج** — الافتراضي "اللصق في التطبيق النشط"؛ أو "النسخ إلى الحافظة فقط" (تلصق أنت بـ `Ctrl+V`). اختياري: الضغط على Enter بعد اللصق، الإرسال بنقرة واحدة، “إبقاء الحافظة كما هي” (الاستعادة معطّلة افتراضيًا — التطبيقات التي تقرأ الحافظة ببطء قد تلصق المحتوى القديم). **يمكن لكل مقطع تجاوز هذا** (المدير ← الإخراج: اتّباع العام / لصق / لصق + Enter / نسخ فقط) — عبارات الدردشة تُرسَل تلقائيًا، ومقاطع الشيفرة لا تفعل أبدًا.
- **موضع اللوحة** — اتّباع النافذة النشطة (الافتراضي) / اتّباع مؤشّر النص / تذكّر آخر موضع.
- **طريقة الاستدعاء (اختر واحدة)** — ① **تركيبة مفاتيح**: انقر الحقل واضغط تركيبة جديدة (تحتاج المفاتيح العادية إلى `Ctrl`/`Alt`/`Shift`/`Win`؛ ومفاتيح الوظائف **`F1`–`F24` تعمل بمفردها**)؛ أو ② **نقر مُعدِّل**: **انقر نقرة مفردة أو مزدوجة على مُعدِّل واحد** (مثل `Ctrl` الأيمن، أو `Shift` الأيمن) للاستدعاء (لا يمكن أن يكون المُعدِّل المنفرد اختصارًا عاديًا، لذا يُكتشَف عبر النقر). اختيار النقر يعطّل التركيبة — فالاثنان يتنافيان، ويبقى واضحًا دائمًا أيّهما فعّال.
- **مفتاح الالتقاط** — تركيبة ثانية اختيارية **تحفظ محتوى الحافظة بصمت كمقطع جديد** (تغذية راجعة بفقاعة، بلا نافذة).
- **مجلّد البيانات** — وجّهه إلى قرص مزامنة؛ **تصدير / استيراد نسخة احتياطية** (zip، تُتحقَّق مع تأكيد استبدال)؛ **نسخ احتياطي يومي تلقائي** إلى هذا الجهاز (يُحتفَظ بأحدث 10، مع وصول للمجلّد بنقرة واحدة).
- **اللغة** — **18 لغة**: English · 简体中文 · 繁體中文 · 日本語 · 한국어 · Español · Português · Français · Deutsch · Italiano · Русский · Tiếng Việt · ไทย · Bahasa Indonesia · हिन्दी · বাংলা · العربية (RTL) · Türkçe، تُبدَّل فورًا. **البدء مع ويندوز** اختياري.
- **السمة** — داكنة (افتراضيًا) / فاتحة / اتّباع Windows، تُطبَّق فور اختيارها دون إعادة تشغيل.
- **التحقق من التحديثات** — مُعطَّل افتراضيًا؛ عند التفعيل يتصل بـ GitHub مرة واحدة عند بدء التشغيل للتحقق من وجود إصدار أحدث (المرة الوحيدة التي يتصل فيها بالإنترنت). «تحقق الآن» يشغّله عند الطلب.
## بطاقة اختصارات لوحة المفاتيح
| الإجراء | المفاتيح |
| --------------------------------- | ------------------------------------------------------- |
| استدعاء / إغلاق اللوحة | `Ctrl+Shift+8` (قابل للتخصيص) / `Esc` |
| تحديد / تبديل الفئة / اختيار سريع | `↑↓` / `←→` / `Alt+1–9` |
| إرسال | `Enter` أو النقر المزدوج (النقر المفرد اختياري) |
| مفضّلة / إلغاء التفضيل | `Ctrl+D` |
| إنشاء / تحرير في اللوحة | `Ctrl+N` / `Ctrl+E` |
| التراجع عن الحذف (المدير) | `Ctrl+Z` |
| الاختصار: تشغيل / تراجع | اطبع الاختصار + Space·Tab·Enter / Backspace بعد التوسّع |
---
## نظرة سريعة على الميزات
- **الاستدعاء**: مفتاح عام — **تركيبة مفاتيح** (مفاتيح الوظائف تعمل كمفتاح مفرد) أو **نقر مفرد/مزدوج على مُعدِّل** (مثل Ctrl الأيمن)، **اختر واحدة**؛ تتبع اللوحة النافذة النشطة / مؤشّر النص / الموضع المتذكَّر؛ أزرار الصفّ العلوي تنتقل إلى **جديد / المدير / الإعدادات**؛ ثبّتها لإرسال عدّة عناصر متتالية؛ اسحبها وغيّر حجمها مع تذكّر الحجم.
- **البحث**: الاسم / البينيين / الحروف الأولى / الاختصار / المتن، مع الإبراز؛ **تُحسَم التعادلات بتكرار الاستخدام (frecency)**؛ و `@category keywords` يقصُر البحث على فئة واحدة (`@category` وحده يتصفّحها).
- **المحتوى**: نصّ صِرف (متعدّد الأسطر، أحرف خاصة، رموز تعبيرية بلا فقد)، عناصر نائبة (قيم افتراضية / قوائم منسدلة للخيارات / تعشيش المقاطع / تنسيقات تاريخ مخصّصة / uuid / random — **يُفعَّل لكل مقطع**)، **صور** (من الحافظة أو ملف، تُلصَق كصورة عند الإرسال؛ **يمكن أن يكون للصور اختصارات أيضًا** — اطبع الاختصار، احصل على الصورة).
- **الاختصارات**: تُشغَّل بمفتاح منهٍ، مطالبة بالمتغيّرات، تراجع بضغطة واحدة، تصحيح الأخطاء بـ Backspace، غير حسّاسة لحالة الأحرف، النقر يكسر الرمز، تحذير من التكرار، قائمة سوداء لكل تطبيق، **إيقاف مؤقت بنقرة واحدة من شريط المهام**.
- **الإخراج**: لصق مباشر / نسخ فقط؛ Enter تلقائي اختياري، استعادة الحافظة، إرسال بنقرة واحدة؛ **تجاوز الإخراج لكل مقطع**؛ مفتاح الالتقاط (من الحافظة ← مقطع بضغطة واحدة).
- **المدير**: **محرر متن واسع** (`⤢ تكبير` يفتحه في نافذة خاصة به؛ ويُسأل دائمًا عن التغييرات غير المحفوظة — عند إغلاق النافذة وعند الانتقال إلى عنصر آخر)، **إبراز العناصر النائبة** (ملوّن حسب النوع؛ مراجع المقاطع الميتة / تنسيقات التاريخ غير الصالحة / الأقواس غير المغلقة تُسطَّر بموجة حمراء مع السبب عند التحويم؛ لا شيء يُبرَز عند إيقاف تفعيل العناصر النائبة — يذكر شريط الحالة ذلك بدلًا من ذلك)، **مناسب للشيفرة** (تعرض النافذة الموسَّعة أرقام الأسطر دائمًا وتقدّم 13 تنسيق شيفرة لإبراز الصياغة؛ يحافظ Enter على المسافة البادئة، ويُزيح Tab تحديدًا متعدّد الأسطر، ووضع بلا التفاف)، 7 ألوان للفئات، سحب لإعادة الترتيب / النقل، **نقل / حذف دفعي بتحديد متعدّد** (تحديد بـ Ctrl / Shift ثم نقر يمين)، تراجع عن الحذف، **سلّة مهملات (استرجاع خلال 30 يومًا، مع معاينة المتن)**، تحذير من تكرار الاختصار، إحصاءات الاستخدام، تغذية راجعة عند الحفظ.
- **البيانات**: JSON محلي، إعادة تحميل حيّة (تدمج تلقائيًا التعديلات الخارجية / المزامنة)، إشعار بتعارض المزامنة، تصدير / استيراد نسخة احتياطية، **نسخ احتياطي يومي تلقائي (يُحتفَظ بـ 10)**، البدء مع ويندوز.
- **التوطين**: **18 لغة للواجهة** (الصينية المبسّطة / التقليدية، English، 日本語، 한국어، Español، Français، Deutsch، Русский، العربية …) مع **عكس الاتجاه من اليمين إلى اليسار للعربية**، تُبدَّل مباشرةً في الإعدادات. وسمتان داكنة وفاتحة (أو اتّباع Windows)، تتبدّلان فورًا كذلك.
- **المتانة**: نسخة واحدة (التشغيل الثاني يستدعي لوحة البحث بدلًا من تثبيت الخطّافات مرتين)؛ يشغّل CI الاختبارات إضافةً إلى فحص دخان للنافذة عند كل دفع، وينشر كلا البنائين أحاديّي الملف عند وسوم `v*`.
## البيانات والمزامنة
مجلّد البيانات (الافتراضي `Documents\QuickText`، قابل للتغيير في الإعدادات، ويمكن توجيهه إلى قرص مزامنة):
```text
/
├─ index.json # category order + each category's file name and color
├─ .json # the snippets in that category (Snippet[])
├─ trash.json # soft-deleted snippets (auto-purged after 30 days)
└─ images/ # image files for image snippets
```
- `Snippet`: `{ id, name, abbr, body, useVariables, outputMode, imagePath?, updatedAt }`.
- **كتابات ذرّية** (`*.tmp` ← `File.Replace`) بحيث لا تقرأ المزامنة أبدًا ملفًا نصف مكتوب؛ إعادة تحميل حيّة عبر `FileSystemWatcher` (مُجمَّعة)، مع حارس ضدّ الكتابة الذاتية.
- تبقى الحالة المحلية للجهاز **خارج مجلّد المزامنة**: الإعدادات في `%APPDATA%\QuickText\settings.json`، وعدّادات الاستخدام / المفضّلة في `%APPDATA%\QuickText\usage.stats` (تتغيّر عند كل إرسال وقد تتعارض بين الأجهزة)، والنسخ الاحتياطية اليومية التلقائية في `%APPDATA%\QuickText\backups\`.
- **الوضع المحمول** (بلا أثر / USB): فعّله من **الإعدادات ← البيانات ← الوضع المحمول** — يُسقِط علامة `QuickText.portable` بجوار `QuickText.exe` و**يُطبَّق عند إعادة التشغيل التالية** (أول بدء محمول يحمل إعداداتك وسجلّ استخدامك، فلا تعيد الإعداد من جديد). عندئذٍ تقيم الإعدادات والاستخدام والنسخ الاحتياطية والمكتبة الافتراضية تحت `\Data\` بدلًا من `%APPDATA%` / Documents، ويستخدم "البدء مع ويندوز" اختصارًا في مجلّد بدء التشغيل (Startup) بدلًا من السجلّ (Registry) — فتنتقل الأداة بأكملها على عصا USB ولا تترك شيئًا على المضيف. يجب أن يوجد التطبيق في موقع قابل للكتابة (عصا USB، وليس `Program Files`)؛ و**تنتقل مكتبة النصوص عبر تصدير / استيراد نسخة احتياطية**. يُتتبَّع البدء مع ويندوز لكل وضع، فأعِد تفعيله في الوضع الجديد بعد التبديل إن أردته. اتركه معطّلًا للتخطيط المثبَّت أعلاه (وهو الخيار الصحيح عندما يكون مجلّد البيانات قرص مزامنة).
_(لا بدّ أن تكون علامةً في ملف، لا مجرّد إعداد عادي — فهي تقرّر أين يقيم `settings.json` نفسه؛ ولا يسري المفتاح إلا عند البدء التالي، دون أن يزعج الجلسة الحالية.)_
## العلامة التجارية
تقيم الأصول في `assets/branding/`: `quicktext-mark.svg` (أساسي)، `quicktext-mark-mono.svg` (أحادي اللون)، `quicktext.ico` (16–256، أيقونة التطبيق / شريط المهام)، `quicktext-256.png`، `quicktext-social.png` (1200×630 og:image)، `quicktext-social-2x.png` (2400×1260 @2x)، `brand.html` (ورقة العلامة). العلامة عبارة عن **مؤشّر كتابة على هيئة حرف I** فوق بلاطة نعناعية، بجوار كتلة كهرمانية من نصّ حطّ للتوّ — "text▮"، أي وضع نصّك عند المؤشّر. اللوحة اللونية "غسق الطرفية" (terminal dusk): نعناعي (لون تمييز التطبيق `#3DC2A0`) + كهرماني `#F2B457` على حبر مائل إلى الأزرق المخضرّ؛ مع خطّ كلمة (wordmark) بلا زخارف مقترن بخطّ Cascadia Code أحادي المسافة.
## البنية
نواة صرفة (Core بلا Win32، قابلة للاختبار الوحدوي) تُبقى منفصلة عن Win32/الواجهة.
| المشروع | المحتويات |
| ---------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `src/QuickText.Core` | `Models`، `Persistence` (`Store`، `UsageStore`، `JsonConfig`)، `Search` (`SearchIndex`)، `Abbr` (`AbbrMatcher`)، `Snippets` (`Placeholders`)، `Pinyin`، `Settings`، `Localization` (.resx، 18 لغة) |
| `src/QuickText.App` | واجهة WPF (`SearchPanel` / `ManagerWindow` / `SettingsWindow` / `AppDialog` / `VariablesDialog`)، `Ui/Theme.xaml` (سمة داكنة)، `Interop` (`GlobalHotkey`، `KeyboardHook`، `PasteEngine`، `Autostart`، `NativeMethods`) |
| `tests/QuickText.Core.Tests` | اختبارات وحدوية للنواة (xUnit) |
## البناء والتشغيل
```bash
dotnet build QuickText.sln -c Debug
dotnet test tests/QuickText.Core.Tests/QuickText.Core.Tests.csproj
dotnet run --project src/QuickText.App # or run QuickText.exe under bin
```
نشر بناء محمول أحادي الملف (win-x64):
```bash
dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64
dotnet publish src/QuickText.App -c Release -p:PublishProfile=win-x64-needs-dotnet10
```
يتطلّب .NET 10 SDK. ويندوز فقط (مفتاح عام / خطّاف لوحة المفاتيح / حافظة عبر Win32).
## الترخيص
[MIT License](../../LICENSE) · حقوق النشر © 2026 rockbenben. حرّ الاستخدام والتعديل والتوزيع.
## عن خطة 365 مفتوح المصدر
المشروع **#023** من [خطة 365 مفتوح المصدر](https://github.com/rockbenben/365opensource) — شخص واحد + ذكاء اصطناعي، أكثر من 300 مشروع مفتوح المصدر في عام واحد.
[شارك فكرتك ←](https://365.aishort.top/) · [Discord](https://discord.gg/PZTQfJ4GjX) · [Telegram](https://t.me/aishort_top)