Quaternion은 매트릭스 프로토콜을위한 크로스 플랫폼 데스크톱 IM 클라이언트입니다. 애플리케이션 사용 및 설정에 대한 일반적인 정보는 여기에서 찾을 수 있습니다. 건물 지침은 Building.md를 참조하십시오.
Quaternion과 관련하여 대부분의 대화는 부모 프로젝트의 방에서 발생합니다. Quotient : #Quotient : Matrix.org. 프로젝트 문제 추적기에서 문제를 제출할 수 있습니다. 보안 문제처럼 보이는 것을 발견하면 특별 지침을 따르십시오.
Quaternion을 설치하는 권장 방법은 다음과 같습니다 (환경에 따라 아래의 메모를 읽으십시오).
소스 코드는 Github에서 호스팅됩니다.
Quaternion 0.0.97에는 QT 버전 6.4 이상이 필요합니다.
Quaternion은 Arch Linux, Nixos 및 FreeBSD뿐만 아니라 다양한 버전의 Debian, Ubuntu 및 OpenSuse를 포함하여 많은 배포판을 위해 포장되었습니다. 꽤 포괄적 인 목록은 Repology에서 찾을 수 있습니다. 언급 된 QT 요구 사항을 만족하는 대중 분포는 Debian 12 (Bookworm), Ubuntu 24.04 (Noble), Fedora 39, OpenSuse Leap 15.6입니다. 그보다 더 새로운 것은 괜찮을 것입니다.
Quaternion 패키지 위에는 일반적으로 추가로 설치할 필요가 없습니다. 의존성 누락으로 인해 무언가가 작동하지 않는 경우 패키지의 버그입니다.이 저장소가 아닌 배포의 Quaternion Packager에보고하십시오.
또한 Flathub에서 이용할 수있는 Quaternion 용 Flatpak도 있습니다. 설치, 사용 :
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 빌드에는 OpenSSL 3.x가/Visual Studio (MINGW가 아님)로 제작되었습니다.
홈브리 (넌!)를 사용하는 경우 brew install quaternion Quaternion을 의존성과 함께 설치합니다. 그렇지 않으면 Github 릴리스에 게시 된 패키지에는 이미 번들로 필요한 모든 것이 함께 제공됩니다.
OSS 프로젝트에 무료 호스팅을 제공하는 Cloudsmith의 관대하고지지적인 사람들 덕분에 최신 (반드시 가장 큰 것은 아님) 코드를 확인하려는 사람들은 Quaternion Repo에서 Continuous Integration (CI)에서 생성 된 패키지를 찾을 수 있습니다.
이 패키지에 대한 몇 가지 중요한 메모는 다음과 같습니다.
/join #quotient:matrix.org 일반적으로 프로젝트에 기꺼이 도와 드리겠습니다. 문제의 경우출처에서 쿼터니온을 만들려면 Building.md를 참조하십시오.
빌드 디렉토리 또는 설치된 위치에서 가장 선호되는 방식으로 실행 파일을 시작하십시오. UI에서 사용 가능한 것 이상의 구성을 조정하는 데 관심이 있으시면 아래의 "구성"섹션을 읽으십시오.
Quaternion은 번역 노력에 lokalise.co를 사용합니다. 참여하기 쉽습니다 : lokalise.co에서 프로젝트에 가입하고, 언어를 추가하도록 요청하십시오 (#quotient : matrix.org 또는 Lokalise Project Chat) 및 번역을 시작하십시오! 많은 언어들이 여전히 기고자들에게 갈망하고 있습니다.
지금까지 사용할 수있는 유일한 사소한 명령 줄 옵션은 --locale 입니다. 로케일 쿼터니언 사용 (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 알림을 완전히 억제하지 않습니다 (방과 메시지는 여전히 hightlight이지만 트레이 아이콘은 음소거됩니다).non-intrusive 트레이 아이콘 쇼 알림 팝업을 허용합니다.intrusive (기본값)은 해당 Quaternion Window의 활성화를 추가합니다 (즉, 작업 표시 줄에서 응용 프로그램이 깜박이거나 증가하거나 환경 별 방식으로주의를 기울여야 함). timeline_layout 타임 라인 레이아웃을 선택할 수 있습니다. 이것이 "xchat"로 설정되면 Quaternion은 xchat/hexchat 스타일로 각 메시지의 왼쪽에 저자를 보여줍니다. 다른 값은 "기본"레이아웃을 선택하고 저자 레이블이 메시지 블록 위에 있습니다.
use_shuttle_dial Quaternion은 타임 라인의 수직 스크롤 컨트롤을 위해 클래식 스크롤 바 대신 셔틀 다이얼을 사용합니다. 스크롤을 시작하려면 셔틀 다이얼을 중간 위치에서 중립 위치에서 멀리 이동합니다. 더 멀리 움직일수록 그 방향으로 더 빨리 스크롤합니다. 다이얼을 출시하면이를 중립 위치로 다시 재설정하고 스크롤을 중지합니다. 매트릭스 타임 라인의 경우와 같이 가장자리와 관련된 위치를 모르고 이동 해야하는 경우 더 편리합니다. 그러나 통제는 다소 독창적이며 모든 사람들이 좋아하는 것은 아닙니다. 셔틀 다이얼은 기본적으로 활성화됩니다. 클래식 스크롤 바를 사용하려면 이것을 false (또는 0)로 설정하십시오.
autoload_images 화면에 메시지가 표시되면 전체 크기 이미지를 즉시로드 해야하는지 여부. 기본값은 전체 크기 이미지를 자동으로로드하는 것입니다. 이를 False (또는 0)로 설정하여 타임 라인에 썸네일 만로드하십시오 (컨텍스트 메뉴에서 "또는"Open "을 클릭 한 후 전체 이미지가 다운로드 됨). 경고는 #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 (Navy Blue)입니다.highlight_color 하이라이트 룸/메시지를 선호하는 색상 이름으로 설정하십시오. HTML 색상 이름 및 SVG #codes 지원됩니다. 기본적으로 그것은 orange 입니다.highlight_mode 강조 표시를 위해 텍스트 색상을 사용하려는 경우 text 로 설정하십시오. 기본값은 강조 표시를 위해 배경을 사용하는 것입니다.use_human_friendly_dates UI의 표준 주간 트라이어드 대신); 기본값은 사실입니다.show_noop_events 상태를 바꾸지 않는 상태 이벤트를 표시하려면 (대부분의 옆에 "(반복)를 표시하지 않는 상태 이벤트를 표시하십시오.quote_style 인용 템플릿. \1 인용 된 문자열을 의미합니다. 기본적으로 > \1n 입니다.quote_regex 인용문의 시작과 끝에서만 UI/quote_style 추가하려면 ^([\s\S]*) 로 설정하십시오. 기본적으로 (.+)(?:n|$) 입니다.Fonts/render_type Quaternion 타임 라인에서 글꼴을 렌더링하는 방법을 선택하십시오. 가능한 값은 "Nativerendering"(기본값) 및 "Qtrendering"입니다.Fonts/family - 전체 응용 프로그램의 글꼴 제품군을 재정의합니다. 지정되지 않으면 환경의 기본 글꼴이 사용됩니다.Fonts/pointSize - 전체 응용 프로그램의 글꼴 크기 (포인트)를 재정의합니다. 지정되지 않은 경우 환경의 기본 크기가 사용됩니다.Fonts/timeline_family 글꼴 패밀리 (예 : Monospace ) 타임 라인에 메시지를 표시합니다. 지정되지 않으면 응용 프로그램 전체의 글꼴 패밀리가 사용됩니다.Fonts/timeline_pointSize -font size (포인트) 타임 라인에 메시지를 표시합니다. 지정되지 않으면 응용 프로그램 전체 포인트 크기가 사용됩니다.maybe_read_timer 표시된 메시지가 읽기로 간주 될 수 있도록 밀리 초의 임계 시간 간격.hyperlink_users 메시지에서 HyperLink Matrix 사용자 ID를 원하지 않는 경우 hyperlink_users- false (또는 0)로 설정하십시오. 기본적으로 그것은 사실입니다.auto_markdown (실험) - 버전 0.0.95 Quaternion은 메시지를 입력 할 때 Markdown을 실험적으로 지원합니다. Quaternion은 메시지를 /md 명령으로 시작하는 경우 메시지를 Markdown으로 만 취급합니다 (명령 자체가 보내기 전에 메시지에서 제거됩니다). auto_markdown true 로 설정하면 대신 /plain 으로 시작 하지 않는 모든 메시지에서 Markdown 구문 분석이 가능합니다. 기본적으로,이 설정은 QT의 Markdown의 현재 지원이 버그가되기 때문에 false 이며, Quaternion의 구현은 그 위에 자체적으로 기발합니다. 활성화 된 경우 (또는 사용 /md 명령) 일반적인 장소에서 버그 보고서를 제출하십시오.paste_plaintext_by_default 기본적으로 포맷 된 텍스트를 붙여 넣으려면 false (또는 0)로 설정하십시오.Quaternion은 QT Keychain을 사용하여 액세스 토큰 및 데이터베이스 피클을 저장합니다. QT Keychain에서 지원하는 보안 스토리지를 사용할 수없는 경우 Quaternion은 액세스 토큰 및 피클을 저장할 수 없으며 반복 할 수없는 암호화 메시지를 피하기 위해 E2EE를 자동으로 비활성화합니다. Quaternion Pre-0.0.96에서 사용하는 폴백 파일은 더 이상 사용되지 않습니다.
Quaternion은 파일 시스템의 객실 및 사용자/룸 아바타를 플랫폼의 기존 위치에 다음과 같이 캐시합니다.
$HOME/.cache/Quotient/quaternion$HOME/Library/Cache/Quotient/quaternion%LOCALAPPDATA%/Quotient/quaternion/cache캐시 파일은 언제든지 삭제하는 데 안전하지만 Quaternion은 시작할 때만 찾아서 실행 중에 정기적으로 덮어 씁니다. 따라서 Quaternion이 실행되지 않을 때는 캐시 파일을 삭제하는 것이 좋습니다. Quaternion이 시작시 캐시 파일을 찾지 못하거나 완전히로드 할 수없는 경우 매트릭스 서버에서 전체 상태를 다운로드합니다. 서버가이를 지원하는 경우 Lazy-Loading Room 회원 이이 프로세스를 최적화하려고합니다. 서버가 게으른로드를 할 수없는 운이 좋은 경우, 초기 동기화는 많은 시간이 걸릴 수 있습니다 (객실 수와 사용자 수에 따라 최대 1 분 이상).
캐시 파일 삭제는 아바타 누락, 잘못된 상태에 갇힌 방과 같은 문제에 도움이 될 수 있습니다.
Quaternion은 후드 아래에서 libquotient를 사용합니다. 일부 4 차 문제는 실제로 Libquotient의 문제입니다. 아래에 사례를 찾지 못한 경우 libquotient readme.md의 문제 해결 섹션도 확인하십시오.
불행히도 이것은 현재 Libquotient 코드의 한계입니다. 이전 키를 요청하지 않으므로 이전 메시지를 해독 할 수 없습니다. 이 문제에 대한 문제 608을 점검하십시오.
Quaternion이 실행되지만 채팅에서 메시지를 볼 수없는 경우 (입력 할 수는 있지만) QT 빠른 라이브러리 및/또는 플러그인이 설치되지 않을 수 있습니다. Linux에서는 배포판에 공식 패키지를 사용하지 않는 경우 일 수 있습니다. stdout/stderr 로그를 확인하십시오. 그러한 경우에는 분명합니다. Windows, Mac 및 FlatPak을 사용할 때 필요한 모든 QT 부품이 Quaternion과 함께 포장 된 것은 아니기 때문에 문제를 엽니 다 (이 파일의 시작 부분에서 "연락처"참조).
특히 Windows에서 Quaternion이 시작되지만 연결하려는 시도에서 "SSL 컨텍스트를 만들지 못했습니다"와 같은 메시지를 반환합니다. 이 파일의 시작 부분에서 "Windows"섹션을 섹션하고 조언하는대로 "요구 사항"을 다시 읽고 (특히 올바른 버전의 OpenSSL을 사용해야합니다. 1.X가 아닌 3.X 여야합니다).
명령 줄 콘솔에서 로그 메시지를 보려면 (기본적으로, Windows의 시스템 로그로 전송되고 일부 Linux 시스템은 Journald가있는 모든 Linux 시스템이 아닙니다) QT_ASSUME_STDERR_HAS_CONSOLE=1 설정하여 출력을 콘솔로 리디렉션하도록 강요하십시오.
버그를 쫓고 충돌을 조사 할 때는 로깅 레벨이 증가한 명령 줄에서 쿼터니온을 실행하는 데 도움이됩니다. Libquotient 및 (0.0.96 베타 4 이후) Quaternion은 로깅 범주를 사용하여 코드의 주어진 부분에 대한 로그의 세밀한 전환을 허용합니다. Quaternion과 Libquotient는 다른 범주를 사용합니다. 이 텍스트는 Quaternion의 텍스트 만 설명합니다. Libquotient Logging 범주에 대한 Lib/Readme.md도 확인하십시오. 문제를 디버깅하기 위해 로깅을 구성하는 가장 실용적인 방법은 QT_LOGGING_RULES 환경 변수를 통한 것입니다. QT 문서 (위의 링크 참조)에는 몇 가지 다른 방법이 나와 있습니다. 모든 경우에 다음과 같이 보이는 하나 또는 여러 개의 조항을 제공해야합니다.
quaternion.<category>.<level>=<flag>
어디
<category> 중 하나입니다 ( client/logging_categories.h 참조) :mainaccountselectormodels (사용자 및 룸 목록을위한 Quaternion 백엔드)models.events (이벤트와 동일)timeline (타임 라인 비주얼을위한 C ++ 코드 - 로그 라인이 거의 없으며 무엇을 찾아야하는지 알지 않는 한 매우 유익하지 않음)timeline.qml (타임 라인 비주얼 용 QML 코드 - 타임 라인이 왜 잘못 보이는지 알아내는 데 필요한 것입니다)htmlfilter (HTML의 QT와 행렬 서브 세트 간의 전환과 다른 응용 프로그램에서 HTML 가져 오기)messageinput (메시지 입력 상자)thumbnails (타임 라인에 이미지를 제공하는 코드)<level> 은 debug , info 및 warning 중 하나입니다.<flag> 는 true 또는 false 입니다. Quaternion의 모든 로깅 카테고리는 quaternion 으로 시작하는 반면 Libquotient의 로깅 카테고리는 항상 quotient 로 시작합니다.
* (별표)는 두 개의 점 사이의 모든 부분에 대한 와일드 카드로 사용할 수 있으며 세미콜론은 분리기에 사용됩니다. 후자의 진술은 이전의 진술을 무시하므로 timeline.qml 제외한 모든 디버그 로그를 켜려면 QML을 설정할 수 있습니다.
QT_LOGGING_RULES= " quaternion.*.debug=true;quaternion.timeline.qml.debug=false " QT_MESSAGE_PATTERN 설정하여 로그를 약간 더 유익하게 만들 수 있습니다 (형식 설명에 대해서는 https://doc.qt.io/qt-6/qtlogging.html#qsetmessagepattern 참조). my (@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는 로깅 레벨을 초기 문자로 인코딩하는 것입니다).

