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只是将记录级别编码到其首字母中)。

