Quaternionは、マトリックスプロトコル用のクロスプラットフォームデスクトップIMクライアントです。ここで、アプリケーションの使用と設定に関する一般的な情報を見つけることができます。建物の指示については、building.mdを参照してください。
Quaternionについて話すことのほとんどは、親プロジェクトの部屋で起こります。プロジェクトの問題トラッカーに問題を提出できます。セキュリティの問題のように見えるものを見つけた場合は、特別な指示に従ってください。
Quaternionをインストールする推奨される方法は次のとおりです(環境に応じて以下のメモを必ずお読みください):
ソースコードはGithubでホストされています。
Quaternion 0.0.97にはQTバージョン6.4以降が必要です。
Quaternionは、Debian、Ubuntu、Opensuseのさまざまなバージョン、Arch Linux、Nixos、FreeBSDなど、多くの分布用にパッケージ化されています。かなり包括的なリストは、Repologyで見つけることができます。上記のQT要件を満たす一般的な分配は、Debian 12(BookWorm)、Ubuntu 24.04(Noble)、Fedora 39、OpenSuse Leap 15.6です。それ以上の新しいものも大丈夫です。
Quaternionパッケージの上に、通常、何かをインストールする必要はありません。依存関係が欠落しているために何かが機能していない場合は、パッケージのバグです。このリポジトリではなく、DistributionのQuaternion Packagerに報告してください。
Flathubから入手できるQuaternion用のフラットパックもあります。インストールするには、使用してください。
flatpak install https://flathub.org/repo/appstream/com.github.quaternion.flatpakref
これらのパッケージは、適切なKDEランタイムで構築されています。 Flatpakのある配信にそれらをインストールできます - 上記よりも古い場合でも。 QuaternionのFlatpakパッケージに固有の問題があると思われる場合は、https://github.com/flathub/com.github.quaternionで問題を提出してください。
依存関係を解決するためのWindowsにパッケージ管理が確立されていないため、必要なすべてのライブラリとC ++ランタイムは、OpenSSLを除くQuaternionと一緒にパッケージ化/インストールされます。既にOpenSSLが周りにいない限り(たとえば、QT開発のインストールの一部です)、自分でインストールする必要があります。 OpenSSLのWikiは、OpenSSLインストーラーへのいくつかのリンクをリストしています。それらは異なるビルド構成があります。現在のQuaternion Buildsは、Visual Studio(MINGWではなく)で作成/用に作成されたOpenSSL 3.xが必要です。
Homebrew(すべきです!)を使用する場合、 brew install quaternion Quaternionとその依存関係をインストールします。それ以外の場合、Githubリリースで公開されているパッケージには、必要なものがすべて既に束ねられています。
OSSプロジェクトに無料のホスティングを提供するCloudSmithの寛大で支援的な人々のおかげで、最新の(必ずしも最大ではない、以下を参照)コードをチェックしたい人は、Quaternion Repoで継続的な統合(CI)によって生成されたパッケージを見つけることができます。
これらのパッケージに関するいくつかの重要なメモは、あなたがそれらに慣れていない場合に備えています:
/join #quotient:matrix.org 、QuaternionをダウンロードしたURLを確認してください。トラブルの場合、ソースからQuaternionを構築する場合は、building.mdを参照してください。
ビルドディレクトリまたはインストールされた場所から、最も好ましい方法で実行可能ファイルを起動します。 UIで利用可能なものを超えて構成を調整することに興味がある場合は、以下の「構成」セクションを読んでください。
Quaternionは翻訳の取り組みにLokalise.coを使用しています。参加は簡単です:lokalise.coでプロジェクトに参加し、言語を追加するように依頼(#quotient:matrix.orgまたはlokalise Project Chat)と翻訳を開始してください!多くの言語は、貢献者にまだ憧れています。
これまでに利用可能な唯一の文書化されていないコマンドラインオプションは、 --localeロケールQuaternionの使用をオーバーライドできることです(UNIXベースのシステムでLC_ALL変数を設定することに相当)。バージョン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 - Quaternionが通知とその方法でユーザーに注意をそらす必要があるかどうかの一般的な設定。
none (部屋とメッセージはまだ照明されていますが、トレイアイコンはミュートされています)。non-intrusiveにより、トレイアイコンに通知ポップアップが表示されます。intrusive (デフォルト)は、Quaternionウィンドウのアクティベーションに追加されます(つまり、タスクバーで点滅するアプリケーション、または環境固有の方法で注意を要求するアプリケーション)。 timeline_layoutこれにより、タイムラインレイアウトを選択できます。これが「XChat」に設定されている場合、QuaternionはXchat/Hexchatスタイルで、各メッセージの左側に著者を表示します。その他の値は、「デフォルト」レイアウトを選択し、著者はメッセージのブロックの上にラベルを付けます。
use_shuttle_dial Quaternionは、タイムラインの垂直スクロールコントロールには、クラシックスクロールバーの代わりにシャトルダイヤルを使用します。スクロールを開始するには、シャトルダイヤルを中央のニュートラル位置から移動します。遠くに移動するほど、その方向に速くスクロールします。ダイヤルを解放すると、それをニュートラルな位置に戻し、スクロールを停止します。これは、マトリックスのタイムラインの場合のように、エッジに対する位置を知らずに動き回る必要がある場合に便利です。しかし、コントロールはやや型破りであり、すべての人がそれを好むわけではありません。シャトルダイヤルはデフォルトで有効になります。これをfalse(または0)に設定して、クラシックなスクロールバーを使用します。
autoload_images画面にメッセージが表示されたら、すぐにフルサイズの画像をロードする必要があるかどうか。デフォルトは、フルサイズの画像を自動的にロードすることです。これをfalse(または0)に設定してそれを無効にし、タイムラインにサムネイルのみをロードします(コンテキストメニューで「保存」または「開く」をクリックした後に完全な画像がダウンロードされます)。警告については#601をご覧ください。
show_spammy (メニューの「効果のないアクティビティを表示」) - falseに設定すると、この設定は、合理的な方法で会話に貢献しないイベントからタイムラインをクリーンアップしようとします。
RoomsDock/tags_orderルームリストのタグの順序を変更できます。これは、タグ/名前空間のコンマ分離されたリストです。以下に説明するように、いくつかの文字に特別な意味があります。タグが言及されておらず、名前空間に適合しない場合、辞書編集順にルームリストの最後に配置されます。同じ名前空間内のタグも辞書化されています。
.* (文字列の端でのみ認識される)は、名前空間全体を意味します。これで終わらない文字列は、完全に指定されたタグとして扱われます。
-タグ/名前空間の前では、グループ化に使用しないことを意味します。たとえば、人グループが必要ない場合は、リスト内の任意の場所に-im.quotient.directを追加できます。 im.quotient.none ( "ルーム")は常に存在し、無効にすることはできません。リスト内の位置のみが考慮されています。
デフォルトのタグの順序は次のとおりです。M.Favourite m.favourite,u.*,im.quotient.direct,im.quotient.none,m.lowpriority 、favotions、その後のすべてのユーザーカスタムタグ、次に人、有効なタグのない部屋(「ルーム」グループ)および最終的な優先室。 Quaternionが構成内の設定が見つからない場合、この行は構成に書き留めて、ゼロから入力する必要がないようにします。
UIで公開されていない設定:
show_author_avatarsこれを1(またはtrue)に設定して、タイムラインに著者アバターを表示します(デフォルトのタイムラインレイアウトがデフォルトに設定されている場合)。これを0(またはfalse)に設定すると、アバターが抑制されます(XCHATタイムラインレイアウトのデフォルト)。suppress_local_echoこれを1(またはTrue)に設定して、ローカルエコー(現在のアプリケーションから送信されたが、サーバーによってまだ確認されていないイベント)の表示を抑制します。デフォルトでは、ローカルエコーが表示されます。animations_duration_ms -ティムラインのアニメーション効果の基本期間(ミリ秒単位)を定義します。デフォルトは400です。アニメーションを無効にするために0に設定します。outgoing_colorこれを送信したテキストを好むカラー名に設定します。 HTMLカラー名とSVG #codesがサポートされています。デフォルトでは、 #204A87 (ネイビーブルー)です。highlight_colorこれを強調表示された部屋/メッセージに好むカラー名に設定します。 HTMLカラー名とSVG #codesがサポートされています。デフォルトではorangeです。highlight_modeハイライトにテキスト色を使用する場合は、これをtextに設定します。デフォルトは、ハイライトに背景を使用することです。use_human_friendly_dates -uiで人間に優しい日付(「今日」、「月曜日」)を使用したくない場合は、これをfalse(または0)に設定します。デフォルトは真です。show_noop_eventsこれを1に設定して、状態を変更しない状態イベントを表示します(これらのほとんどの状態(繰り返される)」を表示します。quote_style引用テンプレート。 \1引用された文字列を意味します。デフォルトでは、 > \1nです。quote_regex - ^([\s\S]*)に設定して、 UI/quote_style引用の最初と終了時にのみ追加します。デフォルトでは(.+)(?:n|$)です。Fonts/render_type Quaternionのタイムラインでフォントをレンダリングする方法を選択します。考えられる値は、「nativerendering」(デフォルト)と「qtrendering」です。Fonts/family - アプリケーション全体についてフォントファミリーをオーバーライドします。指定されていない場合、環境のデフォルトフォントが使用されます。Fonts/pointSize - アプリケーション全体のフォントサイズ(ポイント)をオーバーライドします。指定されていない場合、環境のデフォルトサイズが使用されます。Fonts/timeline_family -Fontファミリ( Monospaceなど)は、タイムラインにメッセージを表示します。指定されていない場合、アプリケーション全体のフォントファミリーが使用されます。Fonts/timeline_pointSizeフォントサイズ(ポイント内)タイムラインにメッセージを表示します。指定されていない場合、アプリケーション全体のポイントサイズが使用されます。maybe_read_timer表示されているメッセージが読み取られると見なされるため、millisecondsでのしきい値時間間隔。hyperlink_usersメッセージ内のユーザーIDをハイパーリンクしたくない場合は、これをfalse(または0)に設定します。デフォルトではそれは本当です。auto_markdown (実験) - バージョン0.0.95 Quaternionは、メッセージを入力するときにMarkdownを実験的にサポートしているためです。 Quaternionは、メッセージが/mdコマンドで始まる場合にのみメッセージをマークダウンとして扱います(コマンド自体が送信前にメッセージから削除されます)。 auto_markdown trueに設定することで、代わりに/plainで開始されないすべてのメッセージでマークダウンペーシングが可能になります。デフォルトでは、QTによるMarkdownの現在のサポートがバギーであり、Quaternionでの実装には独自の癖があるため、この設定はfalse 。有効になっている場合(または/mdコマンドを使用)場合は、通常の場所でバグレポートをお気軽に送信してください。paste_plaintext_by_defaultデフォルトでフォーマットされたテキストを貼り付けたい場合は、これをfalse(または0)に設定します。QuaternionはQTキーチェーンを使用して、アクセストークンとデータベースピクルスを保存します。 QTキーチェーンでサポートされている安全なストレージが利用できない場合、Quaternionはアクセストークンとピクルスを保存できず、E2EEを自動的に無効にして、回復不可能な暗号化されたメッセージを避けます。 Quaternion Pre-0.0.96が使用するフォールバックファイルは、もはや使用されていません。
Quaternionは、次のように、プラットフォームの従来の場所にあるファイルシステム上の部屋の状態とユーザー/ルームアバターをキャッシュします。
$HOME/.cache/Quotient/quaternion$HOME/Library/Cache/Quotient/quaternion%LOCALAPPDATA%/Quotient/quaternion/cacheキャッシュファイルはいつでも削除できますが、Quaternionは起動時にのみそれらを探し、実行中に定期的に上書きします。したがって、Quaternionが実行されていないときにキャッシュファイルを削除することは理にかなっています。 Quaternionが起動時にキャッシュファイルが見つからないか、完全にロードできない場合、マトリックスサーバーから状態全体をダウンロードします。サーバーがそれをサポートしている場合、怠zyなロードルームメンバーによってこのプロセスを最適化しようとします。サーバーが怠zyなロードを行うことができない不運な場合、初期同期には時間がかかる場合があります(部屋の数とその中のユーザーの数に応じて、最大1分以上)。
キャッシュファイルを削除すると、アバターの欠落、間違った状態に閉じ込められた部屋などの問題に役立つ場合があります。
Quaternionはフードの下でLibquotientを使用しています。いくつかのQuaternionの問題は、実際にはLibquatientの問題です。以下にケースが見つからない場合は、Libquotient Readme.mdのトラブルシューティングセクションも確認してください。
残念ながら、これは現在のLibquotientコードの制限です。古いキーを要求せず、したがって古いメッセージを解読することはできません。これの進捗については、問題608を確認してください。
Quaternionが実行されているが、チャットにメッセージが表示されない場合(それらを入力できますが) - QTクイックライブラリやプラグインがインストールされていない場合があります。 Linuxでは、これは、ディストリビューションに公式パッケージを使用していない場合になる場合があります。 stdout/stderrログを確認してください。このような場合は非常に明確です。 Windows、Mac、およびFlatpakを使用する場合は、必要なすべてのQT部品がQuaternionと一緒にパッケージ化されているわけではないため、問題を開くだけです(このファイルの先頭の「連絡先」を参照)。
特にWindowsでは、Quaternionが起動しますが、接続しようとすると、「SSLコンテキストを作成できなかった」などのメッセージが返されます。正しいSSLライブラリは、Quaternionバイナリによって到達できません。このファイルの先頭で「要件」、セクション「ウィンドウ」を再読み込み、アドバイスしたとおりに実行します(特にOpenSSLの正しいバージョンを使用していることを確認してください - それは1.xではなく3.xである必要があります)。
コマンドラインコンソールのログメッセージを表示する場合(デフォルトでは、ジャーナルを使用してすべてのLinuxシステムではなく、システムログオンWindowsに送信されます)、 QT_ASSUME_STDERR_HAS_CONSOLE=1を設定して、出力をコンソールにリダイレクトするように強制します。
バグを追いかけてクラッシュを調査するとき、ロギングレベルが上昇してコマンドラインからQuaternionを実行するのに役立ちます。 Libquotientと(0.0.96 Beta 4以降)Quaternionは、ロギングカテゴリを使用して、コードの特定の部分のログの微細な切り替えを可能にします。 QuaternionとLibquotientは、さまざまなカテゴリを使用しています。このテキストは、Quaternionのみを説明しています。Lib/readme.mdのLibquotientロギングカテゴリも確認してください。問題をデバッグするためにロギングを構成する最も実用的な方法は、 QT_LOGGING_RULES環境変数を使用することです。 QTドキュメント(上記のリンクを参照)には、他のいくつかの方法がリストされています。すべての場合において、次のように見える1つまたは複数の条項を提供する必要があります。
quaternion.<category>.<level>=<flag>
どこ
<category>はの1つです( client/logging_categories.hも参照):mainaccountselectormodels (ユーザーリストとルームリスト用のQuaternionバックエンド)models.events (イベントでも同じ)timeline (タイムラインビジュアル用のC ++コード - ログ行が非常に少なく、何を探すべきかわからない限り、あまり有益ではありません)timeline.qml (タイムラインビジュアル用のQMLコード - これは、タイムラインが間違っている理由を理解するために必要なものです)htmlfilter (HTMLのQTとマトリックスのサブセット間の変換、および他のアプリケーションからのHTMLインポート)messageinput (メッセージエントリボックス)thumbnails (タイムラインに画像を提供するコード)<level>は、 debug 、 info 、 warningの1つです。<flag>はtrueまたはfalseいずれかです。 Quaternionのすべてのロギングカテゴリは、 quaternionで始まり、Libquatientのロギングカテゴリは常にquotientから始まることに注意してください。
* (アスタリスク)は、2つのドットの間の任意の部分のワイルドカードとして *(アスタリスク)を使用でき、セミコロンはセパレーターに使用されます。後者のステートメントは以前のステートメントをオーバーライドするので、 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を参照)。私の(@kitsun's) 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}`
(怖い%{if} sは、ログレベルを最初の文字にエンコードするだけです)。

