هذا تطبيق واجهة طرفية (TUI)، مجرد تسلٍّ بسيط… وفي مرحلة تجريبية بعض الشيء حتى الآن!
| ملخص | واجهة طرفية لتصفح المنتديات على Discourse والنشر فيها، مع قوائم المواضيع، وعرض كامل للمواضيع، والردود، والإعجابات، والبحث، ومحرر مدمج. | |
| رابط المستودع | GitHub - merefield/termcourse: A terminal based client to access Discourse instances, supporting API keys, username/password (and with MFA token) · GitHub | |
| دليل التثبيت | ملف README.md في المستودع (قسم البدء السريع) | |
| الرعاية | يُرجى النظر في أن تصبح راعيًا مستمرًا لأعمالي مفتوحة المصدر (Sponsor @merefield on GitHub Sponsors · GitHub) بمستوى يناسب مواردك أو موارد مؤسستك واحتياجاتك، لضمان حصول هذا المشروع على الصيانة التي يستحقها ومواصلة عمله لموقعك في المستقبل. |
هل تستمتع بـ termcourse؟ يُرجى إعطاؤه
على GitHub
نظرة عامة
termcourse هو عميل Discourse مبني على الطرفية، أُعيد بناؤه كملف تنفيذي واحد بلغة Go. يمكنه استخدام جلسة كوكيز خفيفة تشبه المتصفح باستخدام اسم المستخدم/البريد الإلكتروني وكلمة المرور، بما في ذلك MFA باستخدام TOTP ورموز النسخ الاحتياطي. تتوفر المصادقة عبر مفتاح API للمواقع التي لا تناسبها تسجيل الدخول التفاعلي.
تستخدم الواجهة حزمة Charm الحالية وتعمل مع لوحة المفاتيح والفأرة. صُممت تنقلها بنمط المجلدات، والفلاتر السياقية، واللوحات المتجاوبة، والعناصر ذات السمة، وعرض Markdown، والصور المضمنة لجعل تصفح المنتديات مريحًا دون مغادرة الطرفية.
الميزات
- تصفح قوائم المواضيع لأحدث، وأحلى، وجديد، وغير مقروء، وأفضل، ورسائل خاصة، مع تبديل فترات “الأفضل”.
- التنقل بين مجلدات المواضيع الدائمة، والبحث، والإشعارات، والتأليف، مع فلاتر سياقية من المستوى الثاني.
- استخدام لوحة المفاتيح طوال الوقت، أو النقر على التبويبات وصفوف المواضيع وعناصر التذييل والأزرار المُبرزة عند التحويم.
- فتح المواضيع الظاهرة بزر Enter أو مفاتيح الأرقام
1–0. - قراءة المواضيع الكاملة مع تحميل تدريجي للمشاركات، ومقتضبات مضغوطة، ومشاركات محددة موسعة، وتمرير متجاوب.
- انقر على مسار تقدم الموضوع للقفز مباشرة إلى تلك النقطة في تدفق المشاركات.
- إنشاء مواضيع، واختيار فئات، والرد على المواضيع أو مشاركات فردية، والإعجاب أو إلغاء الإعجاب بالمشاركات.
- البحث في المشاركات والقفز مباشرة إلى المشاركة المطابقة في سياق موضوعها.
- تصفح الإشعارات وتصفيتها، بما في ذلك شارات غير المقروء والرسائل الخاصة.
- تأليف محتوى متعدد الأسطر مع حركة المؤشر، والإدراج، واللف، ودعم اللصق، والتحقق الفوري.
- عرض Markdown (GFM) بما في ذلك الروابط، والقوائم، والاقتباسات، والرمز، وقوائم المهام، والجداول.
- عرض صور مضمنة وبملء الشاشة عالية الجودة باستخدام بروتوكول Kitty graphics، مع رموز
chafaالملونة أوviuكبديل قابل للنقل. - استلام تحديثات فورية لقوائم المواضيع، والمواضيع، والإشعارات، والرسائل الخاصة عند استخدام جلسة كوكيز.
- استخدام بيانات اعتماد لكل موقع من متغيرات البيئة أو
credentials.yml، مع طلب إدخال حقول تسجيل الدخول الناقصة. - الاختيار من سمات
defaultوslateوfairgroundوrustوhacker، وإضافة سمات YAML، وتبديل السمات أثناء تشغيل التطبيق. - استخدام إخراج Truecolor أو 256 لونًا أو 16 لونًا مع كشف تلقائي لقدرات الطرفية.
- تشغيل الواجهة باللغة الإنجليزية أو الفرنسية أو الألمانية أو الإسبانية.
- تغيير حجم الطرفية بحرية: تتجاوب التخطيطات والألوان وقوائم المواضيع وصور Kitty مع المساحة المتاحة.
- رؤية توقيت إعادة المحاولة الذي يوفره الخادم عندما يفرض Discourse حدودًا معدودة على إجراء، مع تشخيصات اختيارية لـ HTTP والواجهة والصور.
التثبيت والتشغيل
على Linux أو macOS، يقوم المثبّت الموصى به بتنزيل الإصدار المصنوع مسبقًا للنظام operativo المعمارية الحالية، والتحقق من مجموع التحقق SHA-256 والإصدار المبلغ عنه، ثم تثبيته:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh | sh
termcourse your.discourse.host
يطالبك Termcourse بإدخال اسم المستخدم وكلمة المرور إذا لم يتم تكوين بيانات الاعتماد بالفعل. يتم إخفاء إدخال كلمة المرور.
استخدم termcourse --version لعرض الإصدار الدلالي المثبت؛ يظهر نفس الإصدار في الترويسة الواسعة للطرفية.
للتثبيت المحلي للمستخدم الذي لا يتطلب sudo:
curl -fsSL https://raw.githubusercontent.com/merefield/termcourse/master/install-release.sh |
TERMCOURSE_BIN_DIR="$HOME/.local/bin" sh
يوفر كل إصدار GitHub مجاميع تحقق SHA-256 وأرشيفات مصنوعة مسبقًا لـ Linux وmacOS وWindows على معماريات AMD64 وARM64. يستخدم Linux/macOS .tar.gz؛ ويستخدم Windows .zip. لا تتطلب الإصدارات المصنوعة مسبقًا لغة Go.
على Windows، قم بتنزيل المثبّت وفحصه، ثم شغّله دون تغيير سياسة التنفيذ على مستوى الجهاز:
Invoke-WebRequest https://raw.githubusercontent.com/merefield/termcourse/master/install-release.ps1 -OutFile install-release.ps1
powershell -NoProfile -ExecutionPolicy Bypass -File .\install-release.ps1
يتم تثبيته افتراضيًا في %LOCALAPPDATA%\Programs\termcourse\bin وينفذ نفس التحقق من المجموع والإصدار. يمكن أيضًا للمثبّتات تثبيت إصدار محدد باستخدام --version أو -Version. لا يُطلب Go 1.26.6 أو أحدث إلا عند التثبيت من المصدر.
لبناء ملف تنفيذي محلي من نسخة بدلاً من ذلك:
git clone https://github.com/merefield/termcourse.git
cd termcourse
make build
./termcourse your.discourse.host
للاستخدام المتكرر، ضع تفاصيل تسجيل الدخول في ملف .env محلي أو استخدم credentials.yml لكل مضيف كما هو موضح في README.
تسجيل الدخول باسم المستخدم/كلمة المرور (موصى به)
يتيح تسجيل الدخول باسم المستخدم/كلمة المرور التحديثات الفورية:
DISCOURSE_USERNAME="you@example.com" \
DISCOURSE_PASSWORD="your_password" \
termcourse your.discourse.host
بديل مفتاح API
DISCOURSE_API_KEY="your_key" \
DISCOURSE_API_USERNAME="your_username" \
termcourse your.discourse.host
راجع أحدث README للتكوين والسمات والتحكم وخلفيات الصور واستكشاف الأخطاء وإصلاحها.
ملاحظات المصادقة
- يتبع تسجيل الدخول باسم المستخدم/كلمة المرور تدفق CSRF وكوكيز الخاص بـ Discourse ويُمكّن تحديثات MessageBus الفورية.
- يتم دعم MFA باستخدام TOTP ورموز النسخ الاحتياطي.
- تحافظ المصادقة عبر مفتاح API على وظائف HTTP لكنها لا تُنشئ جلسة متصفح فورية.
- تعطل بعض المواقع أو تقيد تسجيل الدخول التلقائي باسم المستخدم/كلمة المرور؛ بيانات اعتماد API هي البديل لتلك المواقع.
الأمان
-
لا يكتب Termcourse بيانات الاعتماد المطلوبة أو كوكيز الجلسة على القرص؛ تبقى كوكيز الجلسة في الذاكرة.
-
يحافظ طلب كلمة المرور على إبقاء كلمة المرور خارج سجل الطرفية (shell history).
-
بيانات الاعتماد الدائمة اختيارية وتبقى تحت سيطرة المستخدم في ملفات البيئة أو YAML.
-
التسجيل التشخيصي اختياري (opt-in)، ومعطل افتراضيًا، ولا يسجل بيانات الاعتماد أو أجسام الاستجابة.
القيود
- قد تتطلب المواقع التي تمنع تدفقات تسجيل الدخول عن بُعد المصادقة عبر مفتاح API.
- تتطلب التحديثات الفورية المصادقة بكوكيز اسم المستخدم/كلمة المرور.
- يعتمد جودة الصور المضمنة الأصلية على دعم الطرفية؛ يُفضل Kitty، مع توفر عرض رموز في أماكن أخرى.
- إنه يعيش في الطرفية.

الإحاطات
مستوحى جزئيًا من Dumbcourse: واجهة متصفح قديمة صديقة للشاشات الصغيرة/لوحة D-pad. ![]()





