Quaternion ist ein plattformübergreifender Desktop-IM-Client für das Matrixprotokoll. Hier finden Sie allgemeine Informationen zu Anwendungsnutzung und Einstellungen. Siehe Building.md für den Bau von Anweisungen.
Das meiste Gespräch mit Quaternion findet im Raum seines übergeordneten Projekts Quotient: #quotient: matrix.org statt. Sie können Probleme am Ausgaberfolg des Projekts einreichen. Wenn Sie ein Sicherheitsproblem finden, befolgen Sie bitte spezielle Anweisungen.
Die empfohlene Möglichkeit zur Installation von Quaternion ist wie folgt (lesen Sie die folgenden Notizen je nach Umgebung):
Der Quellcode wird bei GitHub gehostet.
Quaternion 0.0.97 benötigt QT Version 6.4 oder höher.
Quaternion ist für viele Verteilungen verpackt, einschließlich verschiedener Versionen von Debian, Ubuntu und OpenSuse sowie Arch Linux, Nixos und FreeBSD. Eine ziemlich umfassende Liste finden Sie in Repology. Beliebte Verteilungen, die die erwähnte QT -Anforderung erfüllen, sind Debian 12 (Bookworm), Ubuntu 24.04 (Noble), Fedora 39, OpenSuse Sprung 15.6; Alles, was neuer als das ist, sollte auch in Ordnung sein.
Zusätzlich zum Quaternion -Paket sollten Sie normalerweise nichts zusätzlich installieren müssen. Wenn etwas aufgrund einer fehlenden Abhängigkeit nicht funktioniert, handelt es sich um einen Fehler im Paket - bitte melden Sie es dem Quaternion -Packager Ihrer Verteilung, nicht dem Repository.
Es gibt auch Flatpaks für Quaternion bei Flathub. Um zu installieren, verwenden Sie:
flatpak install https://flathub.org/repo/appstream/com.github.quaternion.flatpakref
Diese Pakete sind mit einer geeigneten KDE -Laufzeit gebaut. Sie können sie auf jeder Verteilung mit Flatpak installieren - auch wenn sie älter als oben erwähnt ist. Bitte stellen Sie Probleme unter https://github.com/flathub/com.github.quaternion ein, wenn Sie glauben, dass ein Problem für das Flatpak -Paket von Quaternion spezifisch ist.
Da auf Windows keine festgelegte Paketverwaltung zur Auflösung von Abhängigkeiten vorhanden ist, werden alle benötigten Bibliotheken und eine C ++ - Laufzeit zusammen mit Quaternion verpackt/installiert - mit Ausnahme von OpenSSL. Wenn Sie OpenSSL nicht bereits haben (z. B. ein Teil einer QT -Entwicklungsinstallation), sollten Sie es selbst installieren. OpenSSLs Wiki listet einige Links zu OpenSSL -Installateuren auf. Sie kommen in verschiedenen Build -Konfigurationen; Aktuelle Quaternion -Builds benötigen OpenSSL 3.x mit/für Visual Studio (nicht Mingw).
Wenn Sie Homebrew verwenden (Sie sollten!), Installiert brew install quaternion Quaternion zusammen mit seinen Abhängigkeiten. Andernfalls sind Pakete, die bei Github Releases veröffentlicht werden, mit allem aus, was bereits erforderlich ist.
Dank großzügiger und unterstützender Leute von Cloudmith, die OSS -Projekten kostenloses Hosting anbieten, können diejenigen, die den neuesten (nicht unbedingt größten, siehe unten) Code ansehen möchten, Pakete finden, die durch Continuous Integration (CI) in das Quaternion -Repo erstellt wurden.
Ein paar wichtige Hinweise zu diesen Paketen, falls Sie neu für sie sind:
/join #quotient:matrix.org und von der URL, von der Sie die Quaternion heruntergeladen haben. Im Schwierigkeiten,Wenn Sie Quaternion aus Quellen bauen möchten, siehe Building.md.
Beginnen Sie einfach die ausführbare Datei auf Ihre am meisten bevorzugte Weise - entweder aus dem Build -Verzeichnis oder vom installierten Standort. Wenn Sie die Konfiguration über das, was in der Benutzeroberfläche verfügbar ist, interessiert sind, lesen Sie den Abschnitt "Konfiguration" weiter unten.
Quaternion verwendet lokalise.co für die Übersetzungsaufwand. Es ist einfach zu beteiligen: Treten Sie dem Projekt unter lokalise.co bei, bitten Sie, Ihre Sprache hinzuzufügen (entweder in #quotient: matrix.org oder im Lokalise -Projekt -Chat) und beginnen Sie mit der Übersetzung! Viele Sprachen sehnen sich immer noch nach Mitwirkenden.
Die einzige bisher verfügbare nicht triviale Befehlszeilenoption ist --locale . Sie können das Gebietsschema-Verwendungszweck überschreiben (ein Äquivalent zum Einstellen LC_ALL Variablen auf UNIX-basierten Systemen). Version 0.0.96 ist mit deutschen, russischen, polnischen und spanischen Übersetzungen ausgestattet.
Quaternion speichert seine Konfiguration auf eine Weise für QT -Anwendungen, wie nachstehend beschrieben. Es wird die Konfiguration in den benutzerspezifischen Standort gelesen und geschrieben (erstellen Sie sie, falls dies nicht existent) und wird nur den systemweiten Speicherort mit angemessenen Standardeinstellungen lesen, wenn die Konfiguration nicht am benutzerspezifischen gefunden wird.
$HOME/.config/Quotient/quaternion.conf$XDG_CONFIG_DIR/Quotient/quaternion oder /etc/xdg/Quotient/quaternion$HOME/Library/Preferences/im.quotient.quaternion.plist/Library/Preferences/im.quotient.quaternion.plistHKEY_CURRENT_USERSoftwareQuotientquaternionHKEY_LOCAL_MACHINESoftwareQuotientquaternion Alle unten aufgeführten Einstellungen befinden sich im UI -Abschnitt der Konfigurationsdatei oder (für Windows) Registrierung.
Einige Einstellungen in der Benutzeroberfläche (Einstellungen und Ansichtsmenüs) sind:
notifications - Eine allgemeine Einstellung, ob Quaternion den Benutzer mit Benachrichtigungen ablenken sollte und wie.
none unterdrückt Benachrichtigungen vollständig (Räume und Nachrichten sind immer noch beleuchtet, aber das Tablettsymbol ist gedämpft);non-intrusive ermöglicht das Tray-Symbol-Benachrichtigungs-Popups.intrusive (Standard) fügt die Aktivierung des Quaternionfensters hinzu (dh die in der Taskleiste blinkte Anwendung oder fordert auf umweltspezifische Weise aufmerksam oder fordert auf andere Weise Aufmerksamkeit). timeline_layout - Dadurch können Sie das Timeline -Layout auswählen. Wenn dies auf "Xchat" eingestellt ist, zeigt Quaternion den Autor links von jeder Nachricht im Xchat/Hexchat -Stil. Jeder andere Wert wählt das Layout "Standard" mit Autorenbezeichnungen über Nachrichtenblöcken aus.
use_shuttle_dial - Quaternion verwendet ein Shuttle -Zifferblatt anstelle einer klassischen Scrollbar für die vertikale Scrolling -Steuerung der Timeline. Um zu starten, bewegen Sie das Shuttle -Zifferblatt von seiner neutralen Position in der Mitte weg; Je weiter Sie es bewegen, desto schneller scrollen Sie in diese Richtung. Das Verlassen des Zifferblatts setzt es zurück in die neutrale Position und hört auf, die Scrollen zu erstellen. Dies ist bequemer, wenn Sie sich bewegen müssen, ohne die Position relativ zu den Kanten zu kennen, wie dies bei einer Matrix -Zeitleiste der Fall ist. Die Kontrolle ist jedoch etwas unkonventionell und nicht alle Menschen mögen sie. Das Shuttle -Zifferblatt ist standardmäßig aktiviert. Stellen Sie dies auf false (oder 0) ein, um die klassische Scrollbar zu verwenden.
autoload_images - ob Bilder in voller Größe sofort geladen werden sollten, sobald die Nachricht auf dem Bildschirm angezeigt wird. Die Standardeinstellung besteht darin, Bilder automatisch in voller Größe zu laden. Legen Sie dies auf false (oder 0) ein, um dies zu deaktivieren, und laden Sie nur eine Miniaturansicht in der Zeitleiste (mit dem vollständigen Bild, nachdem Sie im Kontextmenü "als" oder "öffnen" klicken). Schauen Sie sich #601 für die Einschränkung an.
show_spammy ("No -Effect -Aktivität im Menü anzeigen) - Wenn diese Einstellung auf false festgelegt wird, versucht die Zeitleiste, die Zeitleiste von Ereignissen zu beseitigen, die nicht in einer vernünftigen Weise zur Konversation beitragen.
RoomsDock/tags_order - Ermöglicht die Änderung der Reihenfolge der Tags in der Raumliste. Dies ist eine von Kommas getrennte Liste von Tags/Namespaces. Einige Zeichen haben eine besondere Bedeutung, wie unten beschrieben. Wenn ein Tag nicht erwähnt wird und nicht in einen Namespace passt, wird es am Ende der Raumliste in lexikografischer Reihenfolge gesetzt. Auch Tags im gleichen Namespace werden lexikografisch geordnet.
.* (nur am Ende der Zeichenfolge anerkannt) bedeutet den gesamten Namespace; Saiten, die nicht damit enden, werden als vollständig spezifizierte Tags behandelt.
- Vor dem Tag/Namespace bedeutet, dass es nicht für die Gruppierung verwendet werden sollte. ZB, wenn Sie keine Personengruppen haben möchten, können Sie in der Liste überall -im.quotient.direct . im.quotient.none ("Räume") existiert immer und kann nicht deaktiviert werden, nur seine Position in der Liste wird berücksichtigt.
Die Standard -Tags -Reihenfolge lautet wie folgt: m.favourite,u.*,im.quotient.direct,im.quotient.none,m.lowpriority , was bedeutet: Favoriten, gefolgt von allen benutzerdefinierten Tags, dann Personen, Räumen mit fähigen Tags (der "Räume" Gruppe) und schließlich niedrigem Prioritätsräumen. Wenn Quaternion die Einstellung in der Konfiguration nicht findet, wird diese Zeile in die Konfiguration geschrieben, sodass Sie sie nicht von Grund auf neu eingeben müssen.
Einstellungen, die nicht in der Benutzeroberfläche ausgesetzt sind:
show_author_avatars - setzen Sie diese auf 1 (oder true), um Autoren -Avatare in der Zeitleiste anzuzeigen (Standard, wenn das Timeline -Layout auf Standardeinstellung festgelegt ist); Wenn Sie dies auf 0 (oder False) einstellen, wird Avatare unterdrückt (Standard für das Xchat -Timeline -Layout).suppress_local_echo - Setzen Sie diese auf 1 (oder true) auf die Unterdrückung des lokalen Echos (Ereignisse, die von der aktuellen Anwendung gesendet wurden, aber vom Server noch nicht bestätigt wurden). Standardmäßig wird lokales Echo angezeigt.animations_duration_ms - definiert die Basisdauer (in Millisekunden) von Animationseffekten in der Timline. Der Standard ist 400; Stellen Sie es auf 0 ein, um die Animation zu deaktivieren.outgoing_color - Stellen Sie dies auf den Farbnamen ein, den Sie für Text bevorzugen, den Sie gesendet haben. HTML -Farbnamen und SVG #codes werden unterstützt. Standardmäßig ist es #204A87 (Marineblau).highlight_color - Stellen Sie diesen auf den Farbnamen ein, den Sie für hervorgehobene Räume/Nachrichten bevorzugen. HTML -Farbnamen und SVG #codes werden unterstützt. Standardmäßig ist es orange .highlight_mode - Stellen Sie diesen auf text ein, wenn Sie es vorziehen, die Textfarbe zum Hervorheben zu verwenden. Die Standardeinstellung besteht darin, den Hintergrund zum Hervorheben zu verwenden.use_human_friendly_dates -Setzen Sie dies auf false (oder 0), wenn Sie nicht die Verwendung von menschlichfreundlichen Daten ("Today", "Monday" anstelle der Standard-Triade des Tagesmonats) in der UI wünschen. Der Standard ist wahr.show_noop_events - Setzen Sie dies auf 1, um Statusereignisse anzuzeigen, die den Status nicht ändern (Sie werden "(wiederholt)" neben den meisten davon).quote_style - Die Zitatvorlage. Die \1 bedeutet die zitierte Zeichenfolge. Standardmäßig ist es > \1n .quote_regex - Setzen Sie auf ^([\s\S]*) um nur am Anfang und am Ende des Zitats UI/quote_style hinzuzufügen. Standardmäßig ist es (.+)(?:n|$) .Fonts/render_type - Wählen Sie, wie Sie Schriftarten in der Quaternion -Zeitleiste rendern. Mögliche Werte sind "Nativerendering" (Standard) und "Qtrendering".Fonts/family - Überschreiben Sie die Schriftfamilie für die gesamte Anwendung. Wenn nicht angegeben, wird die Standardschrift für Ihre Umgebung verwendet.Fonts/pointSize - Überschreiben Sie die Schriftgröße (in Punkten) für die gesamte Anwendung. Wenn nicht angegeben, wird die Standardgröße für Ihre Umgebung verwendet.Fonts/timeline_family - Schriftfamilie (z. B. Monospace ), um Nachrichten in der Zeitachse anzuzeigen. Wenn nicht angegeben, wird die anwendungsweite Schriftfamilie verwendet.Fonts/timeline_pointSize - Schriftgröße (in Punkten), um Nachrichten in der Zeitleiste anzuzeigen. Wenn nicht angegeben, wird die anwendungsweite Punktgröße verwendet.maybe_read_timer - Schwellenzeitintervall in Millisekunden für eine angezeigte Nachricht, die als Lesen betrachtet wird.hyperlink_users - setzen Sie dies auf false (oder 0), wenn Sie keine Matrix -Benutzer -IDs in Nachrichten hyperlink -ids hyperlink haben möchten. Standardmäßig ist es wahr.auto_markdown (experimentell) - Seit Version 0.0.95 Quaternion hat beim Eingeben von Nachrichten experimentelle Unterstützung für den Markdown. Quaternion behandelt die Nachricht nur als Markdown, wenn die Nachricht mit dem Befehl /md beginnt (der Befehl selbst wird vor dem Senden von der Nachricht entfernt). Durch das Einstellen auto_markdown in true ermöglicht das Markdown -Parsen in allen Nachrichten, die nicht mit /plain beginnen. Standardmäßig ist diese Einstellung false , da die aktuelle Unterstützung von Markdown durch QT fehlerhaft ist, und die Implementierung in Quaternion hat seine eigenen Macken darüber hinaus. Wenn Sie es aktiviert haben (oder /md -Befehl verwenden), können Sie Fehlerberichte an der üblichen Stelle senden.paste_plaintext_by_default - setzen Sie diese auf false (oder 0), wenn Sie standardmäßig formatierten Text einfügen möchten.Quaternion verwendet QT Keychain, um Zugriffstoken und Datenbankgurken zu speichern. Wenn der von QT Keychain unterstützte sichere Speicher nicht verfügbar ist, kann Quaternion Ihre Zugriffstoken und Gurken nicht speichern und die E2EE automatisch deaktiviert, um nicht wiederbeschwerde verschlüsselte Nachrichten zu vermeiden. Die von Quaternion vor 0.0.0.96 verwendete Fallback-Datei wird nicht mehr verwendet.
Quaternion zwischen den Zimmern und Benutzerin-/Raum -Avataren auf dem Dateisystem an einem herkömmlichen Ort für Ihre Plattform wie folgt zwischengewertet:
$HOME/.cache/Quotient/quaternion$HOME/Library/Cache/Quotient/quaternion%LOCALAPPDATA%/Quotient/quaternion/cacheCache -Dateien sind jederzeit sicher zu löschen, aber Quaternion sucht sie nur beim Starten und Überschreiben von ihnen beim Laufen. Daher ist es nur sinnvoll, Cache -Dateien zu löschen, wenn Quaternion nicht ausgeführt wird. Wenn Quaternion beim Start Cache -Dateien nicht vollständig findet oder nicht vollständig geladen wird, wird der gesamte Status von Matrix -Servern heruntergeladen. Es wird versucht, diesen Prozess durch faul-laden-Raum-Mitglieder zu optimieren, wenn der Server dies unterstützt. In einem unglücklichen Fall, in dem der Server nicht faul laden kann, kann die anfängliche Synchronisierung viel Zeit in Anspruch nehmen (bis zu einer Minute und noch mehr, abhängig von der Anzahl der Räume und der Anzahl der Benutzer).
Das Löschen von Cache -Dateien kann bei Problemen wie fehlenden Avataren, Räumen in einem falschen Zustand usw. helfen.
Quaternion verwendet libquotient unter der Motorhaube; Einige Quaternionsprobleme sind tatsächlich Probleme von libquotient. Wenn Sie Ihren Fall unten nicht gefunden haben, überprüfen Sie auch den Abschnitt "Fehlerbehebung" in libquotient readme.md.
Leider ist dies eine Einschränkung im aktuellen Libquotient -Code: Es fordert keine älteren Schlüssel an und kann daher nicht ältere Nachrichten entschlüsseln. Überprüfen Sie das Problem 608 für die Fortschritte dazu.
Wenn Quaternion ausgeführt wird, Sie jedoch keine Nachrichten im Chat anzeigen können (obwohl Sie sie eingeben können), haben Sie möglicherweise keine QT -Schnellbibliotheken und/oder Plugins installiert. Unter Linux kann dies ein Fall sein, wenn Sie die offiziellen Pakete nicht für Ihre Distribution verwenden. Überprüfen Sie die Stdout/Stderr -Protokolle, sie sind in solchen Fällen ziemlich klar. Öffnen Sie unter Windows, Mac und bei Verwendung von Flatpak einfach ein Problem (siehe "Kontakte" zu Beginn dieser Datei), da höchstwahrscheinlich nicht alle erforderlichen QT -Teile zusammen mit Quaternion verpackt wurden.
Insbesondere unter Windows, wenn Quaternion beginnt, bei einem Versuch, eine Verbindung zu verbinden, gibt eine Nachricht wie "SSL -Kontext nicht geschafft" zurück - die korrekten SSL -Bibliotheken sind von der Quaternion -Binärdatei nicht erreichbar. Lesen Sie das Kapitel "Anforderungen", Abschnitt "Windows" am Anfang dieser Datei erneut und tun Sie dies, was dies berät (stellen Sie sicher, dass Sie die richtige Version von OpenSSL verwenden - es sollte 3.x sein, nicht 1.x).
Wenn Sie Protokollnachrichten in der Befehlszeilenkonsole anzeigen möchten (standardmäßig werden sie mit Journald an Systemprotokoll unter Windows und nicht allen Linux-Systemen gesendet), setzen Sie QT_ASSUME_STDERR_HAS_CONSOLE=1 um die Ausgabe zu erzwingen, die in die Konsole weitergeleitet werden soll.
Wenn Sie Fehler verfolgen und Abstürze untersuchen, hilft es, Quaternion aus der Kommandozeile mit einem erhöhten Protokollierungsniveau auszuführen. Sowohl libquotient als Quaternion und libquotient verwenden verschiedene Kategorien; Dieser Text beschreibt nur diejenigen für Quaternion. Überprüfen Sie auch lib/readme.md auf libquotient -Protokollierungskategorien. Der praktischste Weg, um die Protokollierung zu konfigurieren, um ein Problem zu debuggen, ist die Umgebungsvariable QT_LOGGING_RULES . In der QT -Dokumentation (siehe Link oben) listet einige andere Methoden auf. In allen Fällen müssen Sie eine oder mehrere Klauseln bereitstellen, die wie folgt aussehen:
quaternion.<category>.<level>=<flag>
Wo
<category> ist einer von (siehe auch client/logging_categories.h ):mainaccountselectormodels (Quaternion Backend für Benutzer- und Raumlisten)models.events (gleiche für Ereignisse)timeline (C ++ - Code für Timeline -Visuals - Sehr wenige Protokollzeilen und nicht sehr informativ, es sei denn, Sie wissen, wonach Sie suchen müssen)timeline.qml (QML -Code für Timeline -Visuals - Dies ist das, was Sie wahrscheinlich herausfinden müssen, warum die Timeline falsch aussieht.htmlfilter (Konvertierungen zwischen QT- und Matrix -Teilmengen von HTML sowie HTML -Import aus anderen Anwendungen)messageinput (Nachrichteneintragsfeld)thumbnails (der Code zur Lieferung von Bildern für die Zeitleiste)<level> ist eine von debug , info und warning ;<flag> ist entweder true oder false . Denken Sie daran, dass alle Protokollierungskategorien für Quaternion mit quaternion beginnen, während die Kategorien für libquotient immer mit quotient beginnen.
Sie können * (Sternchen) als Platzhalter für jeden Teil zwischen zwei Punkten verwenden, und für einen Separator wird ein Semikolon verwendet. Letztere Anweisungen überschreiben frühere. Wenn Sie also alle Debug -Protokolle außer timeline.qml einschalten möchten, können Sie festlegen
QT_LOGGING_RULES= " quaternion.*.debug=true;quaternion.timeline.qml.debug=false " Möglicherweise möchten Sie auch QT_MESSAGE_PATTERN so festlegen, dass Protokolle etwas informativer werden (siehe https://doc.qt.io/qt-6/qtlogging.html#qsetMessagePattern für die Formatbeschreibung). Mein (@kitsune) QT_MESSAGE_PATTERN sieht wie folgt aus:
`%{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}`
(Die gruseligen %{if} s codieren nur die Protokollierungsstufe in seinen Anfangsbuchstaben).

