Quaternion هو سطح المكتب عبر المنصات العميل IM لبروتوكول المصفوفة. يمكنك العثور على معلومات عامة حول استخدام التطبيق والإعدادات هنا. انظر Building.MD للحصول على تعليمات المبنى.
يحدث معظم الحديث حول الرباعة في غرفة المشروع الأم ، Quitient: #quotient: matrix.org. يمكنك تقديم مشكلات في تعقب إصدار المشروع. إذا وجدت ما يبدو وكأنه مشكلة أمان ، فيرجى اتباع التعليمات الخاصة.
الطريقة الموصى بها لتثبيت الرباعي هي كما يلي (تأكد من قراءة الملاحظات أدناه اعتمادًا على بيئتك):
يتم استضافة رمز المصدر في Github.
يحتاج Quaternion 0.0.97 إلى الإصدار 6.4 أو أعلى.
يتم تعبئة الرباعة للعديد من التوزيعات ، بما في ذلك إصدارات مختلفة من Debian و Ubuntu و Opensuse ، وكذلك linux Arch و Nixos و FreeBSD. يمكن العثور على قائمة شاملة جدًا في علم الرموز. التوزيعات الشعبية التي تفي بمتطلبات QT المذكورة هي Debian 12 (Bookworm) ، Ubuntu 24.04 (Noble) ، Fedora 39 ، Opensuse Leap 15.6 ؛ أي شيء أحدث من ذلك يجب أن يكون على ما يرام أيضًا.
علاوة على حزمة الربع ، يجب ألا تحتاج عادة إلى تثبيت أي شيء بالإضافة إلى ذلك ؛ إذا كان هناك شيء لا يعمل بسبب التبعية المفقودة ، فهذا خطأ في الحزمة - يرجى الإبلاغ عن ذلك إلى حزمة رباعي التوزيع الخاصة بك ، وليس إلى هذا المستودع.
هناك أيضا flatpaks للرباع المتاحة من flathub. للتثبيت ، استخدم:
flatpak install https://flathub.org/repo/appstream/com.github.quaternion.flatpakref
تم تصميم هذه الحزم مع وقت تشغيل KDE مناسب. يمكنك تثبيتها على أي توزيع يحتوي على Flatpak - حتى لو كان أقدم من المذكور أعلاه. يرجى تقديم مشكلات على https://github.com/flathub/com.github.quaternion إذا كنت تعتقد أن هناك مشكلة خاصة بحزمة flatpak من الرباعي.
نظرًا لعدم وجود إدارة حزمة ثابتة على Windows لحل التبعيات ، يتم تعبئة جميع المكتبات المطلوبة ووقت تشغيل C ++ مع الربع - باستثناء OpenSSL. ما لم تكن قد فتحت بالفعل (على سبيل المثال ، فهو جزء من أي تثبيت تطوير QT) ، يجب عليك تثبيته بنفسك. يسرد Wiki الخاص بـ OpenSSL بعض الروابط إلى مثبتات OpenSSL. أنها تأتي في تكوينات بناء مختلفة. حاجة بنية Quaternion الحالية Openssl 3.x مصنوعة مع/لاستوديو Visual (وليس Mingw).
إذا كنت تستخدم Homebrew (يجب عليك!) ، يقوم brew install quaternion Quaternion مع تبعياته. خلاف ذلك ، فإن الحزم المنشورة في إصدارات Github تأتي مع كل ما هو ضروري بالفعل.
بفضل الأشخاص السخيين والدعامين في Cloudsmith الذين يقدمون استضافة مجانية لمشاريع OSS ، يمكن لأولئك الذين يرغبون في التحقق من أحدث الكود (وليس بالضرورة الأعظم ، انظر أدناه) الحزم التي تنتجها التكامل المستمر (CI) في ريبو الرباعي هناك.
بعض الملاحظات المهمة على هذه الحزم في حال كنت جديدًا عليها:
/join #quotient:matrix.org و url قمت بتنزيلها من الربع. في حالة مشكلة ،إذا كنت ترغب في بناء رباعي من المصادر ، انظر Building.MD.
ما عليك سوى بدء تشغيل القابل للتنفيذ بأكثر الطرق المفضلة لديك - إما من دليل الإنشاء أو من الموقع المثبت. إذا كنت مهتمًا بالتبديل عن التكوين بما يتجاوز ما هو متاح في واجهة المستخدم ، فاقرأ قسم "التكوين" أدناه.
يستخدم Quaternion lokalise.co لجهود الترجمة. من السهل المشاركة: انضم إلى المشروع على lokalise.co ، اطلب إضافة لغتك (إما في #Quotient: matrix.org أو في دردشة مشروع Lokalise) وابدأ في الترجمة! العديد من اللغات لا تزال تتوق للمساهمين.
خيار سطر الأوامر الوحيد غير التافهة المتاح حتى الآن هو- --locale يسمح لك بتجاوز استخدامات Quateral (ما يعادل تعيين متغير LC_ALL على الأنظمة المستندة إلى UNIX). الإصدار 0.0.96 يأتي مع الترجمات الألمانية والروسية والبولندية والإسبانية.
يخزن Quaternion تكوينه بطريقة قياسية لتطبيقات QT ، كما هو موضح أدناه. ستقرأ ويكتب التكوين في الموقع الخاص بالمستخدم (إنشاءه إذا لم يكن موجودًا) وسوف يقرأ فقط الموقع على مستوى النظام مع الافتراضات المعقولة إذا لم يتم العثور على التكوين في الموقع الخاص بالمستخدم.
$HOME/.config/Quotient/quaternion.conf$XDG_CONFIG_DIR/Quotient/quaternion أو /etc/xdg/Quotient/quaternion$HOME/Library/Preferences/im.quotient.quaternion.plist/Library/Preferences/im.quotient.quaternion.plistHKEY_CURRENT_USERSoftwareQuotientquaternionHKEY_LOCAL_MACHINESoftwareQuotientquaternion توجد جميع الإعدادات المذكورة أدناه في قسم UI في ملف التكوين أو سجل (لنظام التشغيل Windows).
بعض الإعدادات المكشوفة في واجهة المستخدم (الإعدادات وقوائم العرض) هي:
notifications - إعداد عام ما إذا كان يجب أن يصرف الرافعات عن المستخدم بإخطارات وكيف.
none يقمع الإخطارات بالكامل (لا تزال الغرف والرسائل مشعة ولكن أيقونة الدرج صامتة) ؛non-intrusive برمجية الأيقونة المعرضة للأيقونة.intrusive (الافتراضي) إلى تنشيط نافذة الرباعي (أي التطبيق الوامض في شريط المهام ، أو الحصول على رفع ، أو يتطلب الانتباه بطريقة خاصة بالبيئة). timeline_layout - هذا يسمح باختيار تخطيط الجدول الزمني. إذا تم تعيين هذا على "Xchat" ، فسيعرض الرباعة المؤلف على يسار كل رسالة ، بأسلوب Xchat/Hexchat. ستقوم أي قيمة أخرى بتحديد التصميم "الافتراضي" ، مع ملصقات المؤلف أعلاه كتل الرسائل.
use_shuttle_dial - سوف يستخدم الرباعة قرصًا مكوكًا بدلاً من شريط التمرير الكلاسيكي للتحكم في التمرير العمودي للجدول الزمني. للبدء في التمرير نقل الاتصال الهاتفي المكوك بعيدًا عن وضعه المحايد في الوسط ؛ كلما نقلتها بعيدًا ، كلما تم التمرير بشكل أسرع في هذا الاتجاه. إطلاق الاتصال الهاتفي يعيد تعيينه إلى الموضع المحايد ويتوقف عن التمرير. هذا أكثر ملاءمة إذا كنت بحاجة إلى التحرك دون معرفة الموقف بالنسبة للحواف ، كما هو الحال في جدول زمني للمصفوفة ؛ ومع ذلك ، فإن السيطرة غير تقليدية إلى حد ما وليس كل الناس يحبونها. يتم تمكين الاتصال الهاتفي المكوك بشكل افتراضي ؛ اضبط هذا على false (أو 0) لاستخدام شريط التمرير الكلاسيكي.
autoload_images - ما إذا كان ينبغي تحميل صور كاملة الحجم فور عرض الرسالة على الشاشة. الافتراضي هو تحميل الصور كاملة الحجم تلقائيًا ؛ اضبط هذا على FALSE (أو 0) لتعطيل ذلك وتحميل الصورة المصغرة فقط في الجدول الزمني (مع تنزيل الصورة الكاملة بعد النقر فوق "حفظ" أو "فتح" في قائمة السياق). تحقق من #601 للتحذير.
show_spammy ("إظهار نشاط عدم التأثير" في القائمة) - عند ضبطه على false ، يحاول هذا الإعداد تنظيف الجدول الزمني من الأحداث التي لا تسهم في المحادثة بأي طريقة معقولة.
RoomsDock/tags_order - يسمح بتغيير ترتيب العلامات في قائمة الغرفة. هذه قائمة مفصولة بفاصلة من علامات/مساحات الأسماء ؛ بعض الشخصيات لها معنى خاص كما هو موضح أدناه. إذا لم يتم ذكر علامة ولم تتناسب مع أي مساحة اسم ، فسيتم وضعها في نهاية قائمة الغرفة بالترتيب المعجم. كما يتم طلب العلامات داخل مساحة الاسم نفسها معجمًا.
.* (المعترف به فقط في نهاية السلسلة) يعني مساحة الاسم بأكملها ؛ يتم التعامل مع الأوتار التي لا تنتهي بهذا على أنها علامات محددة بالكامل.
- أمام مساحة العلامة/الاسم يعني أنه لا ينبغي استخدامه للتجميع ؛ على سبيل المثال ، إذا كنت لا تريد مجموعة الأشخاص ، فيمكنك إضافة -im.quotient.direct في أي مكان في القائمة. im.quotient.none ("الغرف") موجود دائمًا ولا يمكن تعطيله ، يتم أخذ موقعه فقط في القائمة في الاعتبار.
أمر العلامات الافتراضي هو كما يلي: m.favourite,u.*,im.quotient.direct,im.quotient.none,m.lowpriority ، المعنى: المفضلة ، تليها جميع العلامات المخصصة للمستخدم ، ثم الأشخاص ، والغرف التي لا تحتوي على علامات ممكّنة (مجموعة "الغرف") وأخيراً غرف أولوية منخفضة. إذا لم يجد الرباعة الإعداد في التكوين ، فسيقوم بتكتب هذا السطر إلى التكوين بحيث لا تحتاج إلى إدخاله من نقطة الصفر.
الإعدادات لا تتعرض في واجهة المستخدم:
show_author_avatars - قم بتعيين هذا على 1 (أو صحيح) لإظهار تجسيم المؤلف في الجدول الزمني (افتراضي إذا تم تعيين تخطيط الجدول الزمني على الافتراضي) ؛ سيؤدي تعيين هذا إلى 0 (أو خطأ) إلى قمع الآلهة (الافتراضي لتخطيط الجدول الزمني XCHAT).suppress_local_echo - اضبط هذا على 1 (أو صحيح) لقمع إظهار الصدى المحلي (الأحداث المرسلة من التطبيق الحالي ولكن لم يتم تأكيدها بعد من الخادم). بشكل افتراضي يظهر الصدى المحلي.animations_duration_ms - يحدد المدة الأساسية (بالمللي ثانية) من تأثيرات الرسوم المتحركة في timline. الافتراضي هو 400 ؛ اضبطها على 0 لتعطيل الرسوم المتحركة.outgoing_color - اضبط هذا على اسم اللون الذي تفضله للنص الذي أرسلته ؛ يتم دعم أسماء الألوان HTML و SVG #codes ؛ بشكل افتراضي ، إنه #204A87 (Navy Blue).highlight_color - اضبط هذا على اسم اللون الذي تفضله للغرف/الرسائل المميزة ؛ يتم دعم أسماء الألوان HTML و SVG #codes ؛ بشكل افتراضي إنه orange .highlight_mode - اضبط هذا على text إذا كنت تفضل استخدام لون النص للتمييز ؛ الافتراضي هو استخدام الخلفية للتمييز.use_human_friendly_dates اضبط هذا على خطأ (أو 0) إذا كنت لا تريد استخدام التواريخ الصديقة للإنسان ("اليوم" ، "الاثنين" بدلاً من ثالوث السنة القياسية في الشهر) في واجهة المستخدم ؛ الافتراضي صحيح.show_noop_events - اضبط هذا على 1 لإظهار أحداث الحالة التي لا تغير الحالة (سترى "(متكررة)" بجانب معظم هؤلاء).quote_style - قالب اقتباس. يعني \1 السلسلة المقتبسة. بشكل افتراضي هو > \1n .quote_regex - ضبط على ^([\s\S]*) لإضافة UI/quote_style فقط في بداية ونهاية الاقتباس. بشكل افتراضي هو (.+)(?:n|$) .Fonts/render_type - حدد كيفية تقديم الخطوط في الجدول الزمني الرباعي ؛ القيم المحتملة هي "nativerenging" (الافتراضي) و "Qtrendering".Fonts/family - تجاوز عائلة الخط للتطبيق بأكمله. إذا لم يتم تحديده ، يتم استخدام الخط الافتراضي لبيئتك.Fonts/pointSize - تجاوز حجم الخط (في النقاط) للتطبيق بأكمله. إذا لم يتم تحديدها ، يتم استخدام الحجم الافتراضي لبيئتك.Fonts/timeline_family - عائلة Font (على سبيل المثال Monospace ) لعرض الرسائل في الجدول الزمني. إذا لم يتم تحديدها ، يتم استخدام عائلة الخط على مستوى التطبيق.Fonts/timeline_pointSize - حجم الخط (في النقاط) لعرض الرسائل في الجدول الزمني. إذا لم يتم تحديدها ، يتم استخدام حجم النقطة على مستوى التطبيق.maybe_read_timer - فترة زمنية عتبة بالمللي ثانية لرسالة معروضة يجب اعتبارها قراءتها.hyperlink_users - قم بتعيين هذا على False (أو 0) إذا كنت لا ترغب في ربط معرفات مستخدم Matrix Hyperink في الرسائل. بشكل افتراضي ، هذا صحيح.auto_markdown (تجريبي) - منذ الإصدار 0.0.95 ، يتمتع رباعي الدعم التجريبي بالتخفيض عند إدخال الرسائل. يعامل Quaternion فقط الرسالة على أنها Markdown إذا بدأت الرسالة بأمر /md (تتم إزالة الأمر نفسه من الرسالة قبل الإرسال). يتيح تعيين auto_markdown إلى true تحليل التمييز في جميع الرسائل التي لا تبدأ بـ /plain بدلاً من ذلك. بشكل افتراضي ، يكون هذا الإعداد false لأن الدعم الحالي لـ Marmdown by QT هو عربات التي تجرها الدواب ، والتنفيذ في الربع يحتوي على المراوغات الخاصة به علاوة على ذلك. إذا قمت بتمكينه (أو أمر الاستخدام /md ) ، فلا تتردد في إرسال تقارير الأخطاء في المكان المعتاد.paste_plaintext_by_default - اضبط هذا على خطأ (أو 0) إذا كنت تريد لصق النص المنسق افتراضيًا.يستخدم Quaternion سلسلة مفاتيح QT لتخزين رموز الوصول ومخللات قاعدة البيانات. إذا لم يكن التخزين الآمن المدعوم من QT Keychain متاحًا ، فلن يتمكن Quaternion من تخزين رمز (رموز) وصولك إلى تعطيل E2EE تلقائيًا لتجنب الرسائل المشفرة غير القابلة للاسترداد. لم يعد استخدام ملف الاحتياطي المستخدم من قبل Quaternion Pre0.0.96.
يقوم Quaternion بتخزين الغرف في حالة الأفاتار والغرفة/الغرفة على نظام الملفات في موقع تقليدي لمنصتك ، على النحو التالي:
$HOME/.cache/Quotient/quaternion$HOME/Library/Cache/Quotient/quaternion%LOCALAPPDATA%/Quotient/quaternion/cacheتعتبر ملفات ذاكرة التخزين المؤقت آمنة لحذفها في أي وقت ، لكن الرباعية لا تبحث عنها إلا عند بدء تشغيلها وترتبطها بانتظام أثناء الركض ؛ لذلك من المنطقي فقط حذف ملفات ذاكرة التخزين المؤقت عندما لا يتم تشغيل الرباعة. إذا لم يجد Quaternion أو لا يمكن تحميل ملفات ذاكرة التخزين المؤقت بالكامل عند بدء تشغيل ، فإنه يقوم بتنزيل الحالة بأكملها من خوادم Matrix. يحاول تحسين هذه العملية من قبل أعضاء غرفة التحميل الكسول إذا كان الخادم يدعم ذلك ؛ في حالة سيئة الحظ عندما لا يستطيع الخادم القيام بالتحميل كسول ، يمكن أن يستغرق المزامنة الأولي الكثير من الوقت (حتى دقيقة وأكثر من ذلك ، اعتمادًا على عدد الغرف وعدد المستخدمين فيها).
قد يساعد حذف ملفات ذاكرة التخزين المؤقت في مشاكل مثل الرمزية المفقودة ، والغرف التي تم تعليقها في حالة خاطئة وما إلى ذلك.
يستخدم الرباعة libquotient تحت الغطاء. بعض مشاكل الرباعة هي في الواقع مشاكل في libquotient. إذا لم تجد قضيتك أدناه ، فتحقق أيضًا من قسم استكشاف الأخطاء وإصلاحها في libquotient readme.md.
لسوء الحظ ، هذا قيود في رمز libquotient الحالي: لا يطلب مفاتيح أقدم وبالتالي لا يمكن فك الرسائل القديمة. تحقق من الإصدار 608 للتقدم في هذا.
إذا تم تشغيل Quaternion ولكن لا يمكنك رؤية أي رسائل في الدردشة (على الرغم من أنه يمكنك كتابتها) - فقد لا يكون لديك مكتبات QT سريعة و/أو مكونات إضافية مثبتة. في Linux ، قد تكون هذه حالة عندما لا تستخدم الحزم الرسمية لتوزيعك. تحقق من سجلات stdout/stderr ، فهي واضحة تمامًا في مثل هذه الحالات. على Windows ، Mac ، وعند استخدام FlatPak ، فقط افتح مشكلة (انظر "جهات الاتصال" في بداية هذا الملف) لأنه على الأرجح لم يتم تعبئة أجزاء QT الضرورية مع الرباعي.
خاصة على Windows ، إذا بدأت الرباعة ، ولكن عند محاولة توصيلها ، تقوم بإرجاع رسالة مثل "فشل في إنشاء سياق SSL" - لا يمكن الوصول إلى مكتبات SSL الصحيحة بواسطة الثنائي الرباعي. أعد قراءة الفصل "متطلبات" ، القسم "Windows" في بداية هذا الملف والقيام به كما ينصح (تأكد على وجه الخصوص من استخدام الإصدار الصحيح من OpenSSL - يجب أن يكون 3.x ، وليس 1.x).
إذا كنت ترغب في رؤية رسائل السجل في وحدة تحكم سطر الأوامر (افتراضيًا ، يتم إرسالها إلى سجل النظام وبعض أنظمة Linux ولكن ليس جميعها مع Journald) ، فقم بتعيين QT_ASSUME_STDERR_HAS_CONSOLE=1 لإجبار الإخراج على وحدة التحكم.
عند مطاردة الحشرات والتحقيق في حوادث التعطل ، فإنه يساعد على تشغيل الرباعة من سطر الأوامر مع زيادة مستوى التسجيل. كل من libquotient و (بما أن 0.0.96 بيتا 4) يستخدم الرباعة فئات قطع الأشجار للسماح بتبديل السجلات الدقيقة لجزء معين من الرمز. Quaternion و libquotient استخدام فئات مختلفة. يصف هذا النص فقط تلك الخاصة بـ Quaternion ، تأكد أيضًا من التحقق من lib/readme.md لفئات تسجيل libquotient. الطريقة الأكثر عملية لتكوين التسجيل من أجل تصحيح المشكلة هي عبر متغير البيئة QT_LOGGING_RULES ؛ يسرد وثائق QT (انظر الرابط أعلاه) بعض الطرق الأخرى. في جميع الحالات ، تحتاج إلى توفير واحد أو عدة جمل تبدو على النحو التالي:
quaternion.<category>.<level>=<flag>
أين
<category> هو واحد من (انظر أيضًا client/logging_categories.h ):mainaccountselectormodels (الواجهة الخلفية لكرة القدم لقوائم المستخدم والغرف)models.events (نفس للأحداث)timeline (رمز C ++ للمرئيات الزمنية - عدد قليل جدًا من خطوط السجل وليس مفيدًا جدًا إلا إذا كنت تعرف ما الذي تبحث عنه)timeline.qml (رمز QML للمرئيات الزمنية - هذا هو ما تحتاجه على الأرجح لمعرفة سبب ظهور الجدول الزمني بشكل خاطئ)htmlfilter (التحويلات بين مجموعات فرعية من QT و MATRIX من HTML وكذلك استيراد HTML من التطبيقات الأخرى)messageinput (مربع إدخال الرسائل)thumbnails (الرمز لتوفير الصور للجدول الزمني)<level> هو واحد من debug info warning ؛<flag> إما true أو false . ضع في اعتبارك أن جميع فئات التسجيل الخاصة بـ Quaternion تبدأ quaternion أثناء تسجيل فئات Libquotient دائمًا مع quotient .
يمكنك استخدام * (العلامة النجمية) كبطاقة برية لأي جزء بين نقطتين ، ويتم استخدام فاصلة فاصلة للفاصل. تتجاوز العبارات الأخيرة تلك السابقة ، لذلك إذا كنت ترغب في تشغيل جميع سجلات التصحيح باستثناء timeline.qml يمكنك تعيينها
QT_LOGGING_RULES= " quaternion.*.debug=true;quaternion.timeline.qml.debug=false " قد ترغب أيضًا في تعيين QT_MESSAGE_PATTERN لجعل السجلات أكثر إفادة قليلاً (انظر https://doc.qt.io/qt-6/qtlogging.html#qsetmessagepattern لوصف التنسيق). يبدو (@kitsune) QT_MESSAGE_PATTERN على النحو التالي:
`%{time h:mm:ss.zzz}|%{category}|%{if-debug}D%{endif}%{if-info}I%{endif}%{if-warning}W%{endif}%{if-critical}C%{endif}%{if-fatal}F%{endif}|%{message}`
(charcary %{if} s هي مجرد ترميز مستوى التسجيل في خطابها الأولي).

