Quaternion是矩陣協議的跨平台桌面IM客戶端。您可以在此處找到有關應用程序使用情況和設置的一般信息。有關建築物的說明,請參見建築物。
關於四個問題的大部分談論發生在其父項目的房間中,商:#Quotient:matrix.org。您可以在項目的問題跟踪器中提交問題。如果您發現看起來像安全問題,請按照特殊說明進行操作。
安裝四元組的建議方法如下(請確保根據您的環境閱讀下面的註釋):
源代碼託管在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;除此之外,任何新事物也應該很好。
除了四個封裝包裝外,您通常不需要安裝任何其他內容。如果由於缺失的依賴性而無法工作,則是軟件包中的一個錯誤 - 請將其報告給您的發行版的四個封裝器,而不是將其報告給該存儲庫。
Flathub也有flatpaks可供四季度。要安裝,請使用:
flatpak install https://flathub.org/repo/appstream/com.github.quaternion.flatpakref
這些軟件包是使用合適的KDE運行時構建的。您可以將它們安裝在具有Flatpak的任何發行版上 - 即使它比上面提到的還要古老。請在https://github.com/flathub/com.github.quaternion上提交問題,如果您認為flatpak quaternion包含一個問題。
由於Windows上沒有建立的軟件包管理以解決依賴關係,因此除了OpenSSL外,所有需要的庫和C ++運行時都包裝/安裝了Quaternion。除非您已經在周圍有openssl(例如,它是任何QT開發安裝的一部分),則應自己安裝。 OpenSSL的Wiki列出了OpenSSL安裝程序的一些鏈接。它們具有不同的構建配置;當前的四元建築需要使用/用於Visual Studio(不是mingw)的OpenSSL 3.x。
如果您使用自製(應該!), brew install quaternion安裝Quaternion及其依賴項。否則,在GitHub版本上發布的軟件包還附帶了所有已經捆綁的必要的內容。
多虧了Cloudsmith的慷慨和支持的人,他們為OSS項目提供免費託管的人,那些想要查看最新的人(不一定是最偉大的,請參見下文)代碼可以找到在那裡的Quaternion Repo中連續集成(CI)產生的軟件包。
如果您是新手,請在這些軟件包上進行一些重要說明:
/join #quotient:matrix.org ,並從中下載了Quaternion的URL。如果遇到麻煩,如果您想從來源構建四元組,請參見building.md。
只需以您最喜歡的方式啟動可執行文件 - 從構建目錄或已安裝的位置啟動。如果您有興趣調整UI中可用內容的配置,請在下面進一步閱讀“配置”部分。
Quaternion使用lokalise.co進行翻譯工作。很容易參加:在lokalise.co上加入項目,要求添加您的語言(#Quotient:matrix.org或lokalise項目聊天中)並開始翻譯!許多語言仍然渴望貢獻者。
到目前為止,唯一可用的非平凡命令行選項是--locale - 它使您可以覆蓋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 - 四季度是否應通過通知和如何分散用戶的一般設置。
none完全抑制通知(房間和消息仍然是示意的,但托盤圖標被靜音了);non-intrusive允許托盤圖標顯示通知彈出窗口;intrusive (默認)增加了四個窗口窗口的激活(即,在任務欄中閃爍的應用程序,或提高了凸起,或以其他特定於環境的方式需要注意)。 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,u.*,im.quotient.direct,im.quotient.none,m.lowpriority ,含義:收藏夾,隨後是所有用戶自定義標籤,然後是所有人,沒有啟用標籤的房間(“房間”組)(“房間”組)和最終優先級。如果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字體family(例如Monospace )在時間表中顯示消息。如果未指定,則使用範圍範圍的字體系列。Fonts/timeline_pointSize字體大小(以點為單位)在時間軸中顯示消息。如果未指定,則使用範圍範圍的點大小。maybe_read_timer以毫秒為單位的閾值時間間隔,以將顯示為讀取的顯示消息。hyperlink_users如果您不想在消息中使用超鏈接矩陣用戶ID,則將其設置為false(或0)。默認情況下是真的。auto_markdown (實驗) - 由於版本0.0.95四個版本在輸入消息時對降壓有實驗支持。如果消息以/md命令啟動(發送之前,將命令本身從消息中刪除),則Quaternion僅將消息視為Markdown。將auto_markdown設置為true啟用所有不始於/plain消息中的標記解析。默認情況下,此設置是false ,因為QT當前對Markdown的支持是錯誤的,並且在第四個中實現了其自己的怪癖。如果您啟用了它(或使用/md命令),請隨時在通常的位置提交錯誤報告。paste_plaintext_by_default如果要默認使用粘貼格式的文本,將此設置為false(或0)。Quaternion使用QT鑰匙鏈來存儲訪問令牌和數據庫泡菜。如果不可用QT密鑰鏈支持的安全存儲,則四元組將無法存儲您的訪問令牌和泡菜,並且會自動禁用E2EE,以避免無法恢復的加密消息。 Quaternion Pre-0.0.96使用的後備文件不再使用。
Quaternion在傳統位置在您的平台的傳統位置中,在文件系統上緩存了房間的狀態和用戶/房間的頭像,如下所示:
$HOME/.cache/Quotient/quaternion$HOME/Library/Cache/Quotient/quaternion%LOCALAPPDATA%/Quotient/quaternion/cache緩存文件可以隨時安全刪除,但是Quaternion僅在啟動並在運行時定期覆蓋它們時才在尋找它們。因此,在未運行四元時,刪除緩存文件才有意義。如果Quaternion在啟動時找不到或無法滿足加載緩存文件,它將從矩陣服務器下載整個狀態。如果服務器支持,它試圖通過懶惰的房間成員來優化此過程;在不幸的情況下,當服務器無法進行懶惰加載時,初始同步可能會花費大量時間(最多一分鐘甚至更多,具體取決於房間的數量和其中的用戶數量)。
刪除緩存文件可能有助於遇到丟失的化身,房間陷入錯誤狀態等問題。
四元基因在引擎蓋下使用Libquotient;一些四季度問題實際上是性慾的問題。如果您在下面尚未找到案例,請還檢查libquotient readme.md中的故障排除部分。
不幸的是,這是當前的Libquotient代碼中的一個限制:它不請求較舊的密鑰,因此不能解密較舊的消息。檢查問題608是否有進度。
如果Quaternion運行但您在聊天中看不到任何消息(儘管您可以輸入) - 您可能沒有安裝QT快速庫和/或插件。在Linux上,這可能是您不使用官方包裝的發行版。檢查Stdout/stderr日誌,在這種情況下它們很明顯。在Windows,Mac和使用Flatpak時,只需打開一個問題(請參閱此文件開頭的“聯繫人”),因為很可能並非所有必要的QT零件都與Quaternion一起包裝。
尤其是在Windows上,如果Quaternion啟動,但嘗試連接時,返回諸如“無法製作SSL上下文”之類的消息 - Quaternion Binary無法達到正確的SSL庫。重新閱讀本文件開頭的“需求”,“ Windows”部分,並按照其建議進行操作(請確保您使用正確版本的OpenSSL - 應該是3.x,而不是1.x)。
如果您想在命令行控制台中查看日誌消息(默認情況下,它們將被發送到Windows上的系統登錄,一些(但不是所有帶有日記帳的Linux系統),請設置QT_ASSUME_STDERR_HAS_CONSOLE=1 ,迫使要重定向到控制台的輸出。
當追逐錯誤並調查崩潰時,它有助於從命令線運行Quaternion,並提高記錄級別。 libquotient and(由於0.0.96 beta 4)QUATERNION使用記錄類別允許對代碼的給定部分的日誌進行細粒度切換。四季度和Libquotient使用不同的類別;該文本僅描述了四元素的內容,請確保還要檢查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 (HTML的QT和矩陣子集之間的轉換以及從其他應用程序導入的HTML)messageinput (消息輸入框)thumbnails (為時間表提供圖像的代碼)<level>是debug , info和warning之一;<flag>是true或false 。請記住,所有四季度的記錄類別都從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'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只是將記錄級別編碼到其首字母中)。

