Quaternion es un cliente IM de escritorio multiplataforma para el protocolo Matrix. Puede encontrar información general sobre el uso de la aplicación y la configuración aquí. Consulte Building.MD para las instrucciones de construcción.
La mayor parte de hablar de Quaternion ocurre en la habitación de su proyecto matriz, Cociente: #Quotient: matrix.org. Puede presentar problemas en el rastreador de problemas del proyecto. Si encuentra lo que parece un problema de seguridad, siga las instrucciones especiales.
La forma recomendada de instalar Quaternion es la siguiente (asegúrese de leer las notas a continuación dependiendo de su entorno):
El código fuente está alojado en GitHub.
Quaternion 0.0.97 necesita QT versión 6.4 o superior.
Quaternion está empaquetado para muchas distribuciones, incluidas varias versiones de Debian, Ubuntu y OpenSuse, así como Arch Linux, Nixos y FreeBSD. Se puede encontrar una lista bastante completa en Repology. Las distribuciones populares que satisfacen el requisito de QT mencionado son Debian 12 (bookworm), Ubuntu 24.04 (Noble), Fedora 39, OpenSuse Leap 15.6; Cualquier cosa más nueva que eso también debería estar bien.
Además del paquete de Quaternion, normalmente no debe necesitar instalar nada además; Si algo no funciona debido a una dependencia faltante, es un error en el paquete; infórmelo al Packager de Quaternion de su distribución, no a este repositorio.
También hay Flatpaks para Quaternion disponibles en Flathub. Para instalar, use:
flatpak install https://flathub.org/repo/appstream/com.github.quaternion.flatpakref
Estos paquetes están construidos con un tiempo de ejecución KDE adecuado. Puede instalarlos en cualquier distribución que tenga FlatPak, incluso si es más antigua que el mencionado anteriormente. POR FAVOR PRESENTA PROBLEMAS en https://github.com/flathub/com.github.quaternion Si cree que hay un problema específico para el paquete de cuaternión plano de quaternion.
Dado que no hay una administración de paquetes establecida en Windows para resolver las dependencias, todas las bibliotecas necesarias y un tiempo de ejecución de C ++ están empaquetados/instalados junto con Quaternion, excepto OpenSSL. A menos que ya tenga OpenSSL alrededor (por ejemplo, es parte de cualquier instalación de desarrollo de QT), debe instalarlo usted mismo. Wiki de OpenSSL enumera algunos enlaces a los instaladores de OpenSSL. Vienen en diferentes configuraciones de compilación; Las compilaciones de cuaternión actuales necesitan OpenSSL 3.x hecho con/para Visual Studio (no Mingw).
Si usa Homebrew (¡debería!), brew install quaternion instala Quaternion junto con sus dependencias. De lo contrario, los paquetes publicados en las versiones de GitHub vienen con todo lo necesario ya agrupado.
Gracias a la gente generosa y de apoyo en Cloudsmith que proporcionan alojamiento gratuito a proyectos OSS, aquellos que desean ver el último código (no necesariamente el mejor, ver a continuación) pueden encontrar paquetes producidos por Continua Integration (CI) en el repositorio de Quaternion allí.
Algunas notas importantes sobre estos paquetes en caso de que sean nuevos en ellos:
/join #quotient:matrix.org y tenga la URL de la que descargó Quaternion. En caso de problemas,Si desea construir Quaternion a partir de fuentes, consulte Building.md.
Simplemente inicie el ejecutable de su manera más preferida, ya sea desde el directorio de compilación o desde la ubicación instalada. Si está interesado en ajustar la configuración más allá de lo que está disponible en la interfaz de usuario, lea la sección "Configuración" más a continuación.
Quaternion usa Lokalise.co para el esfuerzo de traducción. Es fácil de participar: únase al proyecto en Lokalise.co, solicite agregar su idioma (ya sea en #Quotient: matrix.org o en el chat del proyecto Lokalise) y comience a traducir. Muchos idiomas aún anhelan contribuyentes.
La única opción de línea de comandos no trivial disponible hasta ahora es --locale -le permite anular los usos de cuaternión local (un equivalente de configuración de la variable LC_ALL en sistemas basados en UNIX). La versión 0.0.96 viene con traducciones alemanas, rusas, polacas y de español.
Quaternion almacena su configuración de una manera estándar para aplicaciones QT, como se describe a continuación. Leerá y escribirá la configuración en la ubicación específica del usuario (creándola si es inexistente) y solo leerá la ubicación de todo el sistema con valores predeterminados razonables si la configuración no se encuentra en la específica del usuario.
$HOME/.config/Quotient/quaternion.conf$XDG_CONFIG_DIR/Quotient/quaternion o /etc/xdg/Quotient/quaternion$HOME/Library/Preferences/im.quotient.quaternion.plist/Library/Preferences/im.quotient.quaternion.plistHKEY_CURRENT_USERSoftwareQuotientquaternionHKEY_LOCAL_MACHINESoftwareQuotientquaternion Todas las configuraciones enumeradas a continuación residen en la sección UI del archivo de configuración o el registro (para Windows).
Algunas configuraciones expuestas en la interfaz de usuario (configuración y visión de menús) son:
notifications : una configuración general si el cuaternion debe distraer al usuario con notificaciones y cómo.
none suprime las notificaciones por completo (las habitaciones y los mensajes aún están encendidos, pero el ícono de la bandeja está silenciado);non-intrusive permite la bandeja emergente de notificaciones emergentes;intrusive (predeterminado) se suma a esa activación de la ventana de cuaternión (es decir, la aplicación parpadeando en la barra de tareas, o recaudarse, o de otra manera exige atención de manera específica del entorno). timeline_layout : esto permite elegir el diseño de la línea de tiempo. Si esto se establece en "Xchat", Quaternion mostrará al autor a la izquierda de cada mensaje, en un estilo Xchat/HexChat. Cualquier otro valor seleccionará el diseño "predeterminado", con etiquetas de autor por encima de los bloques de mensajes.
use_shuttle_dial - Quaternion usará un dial de transbordador en lugar de una barra de desplazamiento clásica para el control de desplazamiento vertical de la línea de tiempo. Para comenzar a desplazarse, mueva el dial de transporte lejos de su posición neutral en el medio; Cuanto más lejos lo mueva, más rápido se desplazará en esa dirección. Liberando el dial reinicia a la posición neutral y deja de desplazarse. Esto es más conveniente si necesita moverse sin conocer la posición relativa a los bordes, al igual que el caso de una línea de tiempo de matriz; Sin embargo, el control es algo poco convencional y no a todas las personas les gusta. El dial de transporte está habilitado de forma predeterminada; Establezca esto en falso (o 0) para usar la barra de desplazamiento clásica.
autoload_images : si las imágenes de tamaño completo deben cargarse inmediatamente una vez que el mensaje se muestra en la pantalla. El valor predeterminado es cargar automáticamente imágenes de tamaño completo; Establezca esto en falso (o 0) para deshabilitar eso y solo cargue una miniatura en la línea de tiempo (con la imagen completa descargada después de hacer clic en "Guardar como" o "Abrir" en el menú contextual). Echa un vistazo al #601 para la advertencia.
show_spammy ("Mostrar actividad de no efectos" en el menú): cuando se establece en false , esta configuración intenta limpiar la línea de tiempo de los eventos que no contribuyen a la conversación de una manera razonable.
RoomsDock/tags_order - Permite alterar el orden de las etiquetas en la lista de habitaciones. Esta es una lista separada por comas de etiquetas/espacios de nombres; Algunos personajes tienen un significado especial como se describe a continuación. Si no se menciona una etiqueta y no se ajusta a ningún espacio de nombres, se colocará al final de la lista de habitaciones en orden lexicográfico. Las etiquetas dentro del mismo espacio de nombres también se ordenan lexicográficamente.
.* (solo reconocido al final de la cadena) significa todo el espacio de nombres; Las cadenas que no terminan con esto se tratan como etiquetas completamente especificadas.
- frente a la etiqueta/espacio de nombres significa que no debe usarse para agrupar; Por ejemplo, si no desea un grupo de personas, puede agregar -im.quotient.direct en cualquier lugar de la lista. im.quotient.none ("habitaciones") siempre existe y no se puede deshabilitar, solo se tiene en cuenta su posición en la lista.
El orden de etiquetas predeterminado es el siguiente: m.favourite,u.*,im.quotient.direct,im.quotient.none,m.lowpriority , significado: favoritos, seguidos de todas las etiquetas personalizadas de los usuarios, luego personas, habitaciones sin etiquetas habilitadas (el grupo "habitaciones" y finalmente habitaciones de baja prioridad. Si Quaternion no encuentra la configuración en la configuración, escribirá esta línea a la configuración para que no necesite ingresarla desde cero.
Configuración no expuesta en UI:
show_author_avatars : configure esto en 1 (o verdadero) para mostrar los avatares del autor en la línea de tiempo (predeterminado si el diseño de la línea de tiempo se establece en predeterminado); Configurar esto en 0 (o falso) suprimirá los avatares (predeterminado para el diseño de la línea de tiempo XCHAT).suppress_local_echo : configure esto en 1 (o verdadero) para suprimir la muestra de eco local (eventos enviados desde la aplicación actual pero aún no confirmado por el servidor). Por defecto se muestra el eco local.animations_duration_ms - Define la duración base (en milisegundos) de los efectos de animación en la línea de tiempo. El valor predeterminado es 400; Configure en 0 para deshabilitar la animación.outgoing_color : configure esto en el nombre de color que prefiera para el texto que envió; Se admiten los nombres de color HTML y SVG #codes ; Por defecto, es #204A87 (azul marino).highlight_color : configure esto en el nombre de color que prefiera para las habitaciones/mensajes resaltados; Se admiten los nombres de color HTML y SVG #codes ; Por defecto es orange .highlight_mode : configure esto en text si prefiere usar el color de texto para resaltar; El valor predeterminado es usar el fondo para resaltar.use_human_friendly_dates -Establezca esto en falso (o 0) si no desea el uso de fechas amigables para los humanos ("hoy", "lunes" en lugar de la tríada estándar de un año de día) en la interfaz de usuario; El valor predeterminado es verdadero.show_noop_events : configure esto en 1 para mostrar eventos estatales que no alteran el estado (verá "(repetido)" junto a la mayoría de ellos).quote_style - la plantilla de cotización. El \1 significa la cadena citada. Por defecto es > \1n .quote_regex - establecido en ^([\s\S]*) para agregar UI/quote_style solo al principio y al final de la cita. Por defecto es (.+)(?:n|$) .Fonts/render_type : seleccione cómo representar las fuentes en la línea de tiempo de Quaternion; Los valores posibles son "NativerEndering" (predeterminado) y "QTrendering".Fonts/family : anule a la familia de fuentes para toda la aplicación. Si no se especifica, se utiliza la fuente predeterminada para su entorno.Fonts/pointSize : anule el tamaño de fuente (en puntos) para toda la aplicación. Si no se especifica, se utiliza el tamaño predeterminado para su entorno.Fonts/timeline_family - Familia de fuentes (por ejemplo Monospace ) para mostrar mensajes en la línea de tiempo. Si no se especifica, se usa la familia de fuentes en toda la aplicación.Fonts/timeline_pointSize - Tamaño de fuente (en puntos) para mostrar mensajes en la línea de tiempo. Si no se especifica, se usa el tamaño de punto de toda la aplicación.maybe_read_timer - Intervalo de tiempo umbral en milisegundos para que un mensaje mostrado se considere como leído.hyperlink_users : configure esto en falso (o 0) si no desea hipervínculo de ID de usuario de Matrix en mensajes. Por defecto es cierto.auto_markdown (experimental): desde la versión 0.0.95 Quaternion tiene soporte experimental para Markdown al ingresar mensajes. Quaternion solo trata el mensaje como markdown si el mensaje comienza con /md comando (el comando en sí se elimina del mensaje antes de enviar). Configurar auto_markdown en true habilita el análisis de Markdown en todos los mensajes que no comienzan con /plain lugar. Por defecto, esta configuración es false ya que el soporte actual de Markdown por QT es erróneo, y la implementación en Quaternion tiene sus propias peculiaridades además de eso. Si lo tiene habilitado (o use /md command) no dude en enviar informes de errores en el lugar habitual.paste_plaintext_by_default - Establezca esto en falso (o 0) si desea pegar texto formateado por defecto.Quaternion utiliza el llavero QT para almacenar tokens de acceso y encurtidos de la base de datos. Si el almacenamiento seguro compatible con QT Keychain no está disponible, Quaternion no podrá almacenar sus tokenses y encurtidos de acceso y desactivará automáticamente E2EE para evitar mensajes cifrados inalámbricos. El archivo de retroceso utilizado por Quaternion Pre-0.0.96 ya no se usa.
Quaternion almacena los avatares de estado y usuario/sala en el sistema de archivos en una ubicación convencional para su plataforma, de la siguiente manera:
$HOME/.cache/Quotient/quaternion$HOME/Library/Cache/Quotient/quaternion%LOCALAPPDATA%/Quotient/quaternion/cacheLos archivos de caché son seguros para eliminar en cualquier momento, pero Quaternion solo los busca cuando se inicia y los sobrescribe regularmente mientras se ejecutan; Por lo tanto, solo tiene sentido eliminar archivos de caché cuando Quaternion no se está ejecutando. Si Quaternion no encuentra o no puede cargar completamente los archivos de caché al inicio, descarga todo el estado de los servidores Matrix. Intenta optimizar este proceso mediante miembros de la sala de carga perezosa si el servidor lo admite; En un caso desafortunado cuando el servidor no puede hacer una carga perezosa, la sincronización inicial puede llevar mucho tiempo (hasta un minuto e incluso más, dependiendo de la cantidad de habitaciones y la cantidad de usuarios en ellas).
Eliminar archivos de caché puede ayudar con problemas como avatares faltantes, habitaciones atrapadas en un estado equivocado, etc.
Quaternion usa libquotient debajo del capó; Algunos problemas de cuaternión son en realidad problemas de libquotientes. Si no ha encontrado su caso a continuación, consulte también la sección de solución de problemas en Libquotient ReadMe.md.
Desafortunadamente, esta es una limitación en el código de Libquotient actual: no solicita claves más antiguas y, por lo tanto, no puede descifrar mensajes más antiguos. Verifique el número 608 para el progreso en esto.
Si Quaternion se ejecuta pero no puede ver ningún mensaje en el chat (aunque puede escribirlos), es posible que no tenga instalaciones de bibliotecas y/o complementos de QT. En Linux, este puede ser un caso en el que no está utilizando los paquetes oficiales para su distribución. Verifique los registros de Stdout/Stderr, son bastante claros en tales casos. En Windows, Mac, y cuando se usa Flatpak, simplemente abra un problema (consulte "Contactos" al comienzo de este archivo) porque lo más probable es que no se empaquetaron todas las piezas QT necesarias junto con el cuaternión.
Especialmente en Windows, si el cuaternion se inicia, pero en un intento de conectar devuelve un mensaje como "no pudo hacer el contexto SSL": el binario de Cuaternion no puede accesible las bibliotecas SSL correctas. Vuelva a leer el capítulo "Requisitos", la sección "Windows" al comienzo de este archivo y haga lo que aconseja (asegúrese en particular que use la versión correcta de OpenSSL: debe ser 3.x, no 1.x).
Si desea ver mensajes de registro en la consola de línea de comandos (de forma predeterminada, se envían al registro del sistema en Windows y algunos, pero no todos los sistemas Linux con Journald), establezca QT_ASSUME_STDERR_HAS_CONSOLE=1 para obligar a la salida a ser redirigida a la consola.
Al perseguir errores e investigar los bloqueos, ayuda a ejecutar Quaternion desde la línea de comando con un mayor nivel de registro. Tanto Libquotient como (desde 0.0.96 beta 4) Cuaternion utilizan categorías de registro para permitir el cambio de registros de grano fino para una parte determinada del código. Cuaternion y libquotient usan diferentes categorías; Este texto solo describe aquellos para el cuaternión, asegúrese de verificar también Lib/ReadMe.md para las categorías de registro de libquotientes. La forma más práctica de configurar el registro para depurar un problema es a través de la variable de entorno QT_LOGGING_RULES ; La documentación QT (ver el enlace de arriba) enumera algunos otros métodos. En todos los casos, debe proporcionar una o varias cláusulas que se ve de la siguiente manera:
quaternion.<category>.<level>=<flag>
dónde
<category> es uno de (ver también client/logging_categories.h ):mainaccountselectormodels (Backend de Cuaternion para listas de usuarios y habitaciones)models.events (lo mismo para eventos)timeline (código C ++ para imágenes de línea de tiempo: muy pocas líneas de registro y no muy informativo a menos que sepa qué buscar)timeline.qml (Código QML para imágenes de línea de tiempo: esto es lo que probablemente necesite para descubrir por qué la línea de tiempo se ve mal)htmlfilter (conversiones entre subconjuntos QT y Matrix de HTML, así como HTML, de otras aplicaciones)messageinput (cuadro de entrada de mensajes)thumbnails (el código para suministrar imágenes para la línea de tiempo)<level> es uno de debug , info y warning ;<flag> es true o false . Tenga en cuenta que todas las categorías de registro para el cuaternión comienzan con quaternion , mientras que las categorías de registro para libquotient siempre comienzan con quotient .
Puede usar * (asterisco) como comodín para cualquier parte entre dos puntos, y se usa un punto y coma para un separador. Las últimas declaraciones anulan las antiguas, por lo que si desea encender todos los registros de depuración excepto timeline.qml , puede establecer
QT_LOGGING_RULES= " quaternion.*.debug=true;quaternion.timeline.qml.debug=false " También es posible que desee establecer QT_MESSAGE_PATTERN para hacer registros un poco más informativos (consulte https://doc.qt.io/qt-6/qtlogging.html#qsetmessagepattern para la descripción del formato). My (@kitsune's) QT_MESSAGE_PATTERN se ve lo siguiente:
`%{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}`
(El %{if} s solo está codificando el nivel de registro en su letra inicial).

