Spectral

From LinuxReviews
Jump to navigationJump to search
Chat.png

Spectral is a Matrix chatroom client for BSD, GNU/Linux, macOS and Windows written in Qt. It supports sharing images and other files in chat sessions, multiple chat-rooms and multiple servers. It has a room list feature, a built-in emoji picker and a night-mode. It is somewhat buggy and annoying and not at all smooth and polished. It is acceptable as a Matrix client but it is not great. Most major distributions do not have it in their repositories and there are no prebuilt BSD, macOS or Windows packages so you will probably have to compile it yourself.

Features And Usability

Spectral-guixsd.png
Spectral in action.

Spectral has a simple and easy to use layout for navigating Matrix chat-rooms. There is a list of rooms you are in and people you have open chat sessions with on the left side and a larger window with the chat contents on the right side. There is a search-box and a button you can press to get some options on top.

Spectral-menu.jpg
Spectral's menu. You can "Start a Chat" or "Create a Room" or toggle some options and that's it.

Joining or creating a chat-room is a matter of pressing the "User" button on the search-bar's right side. This brings up a menu where you can "Start a Chat", "Create a Room" or "Explore Rooms". There's also some other not at all interesting options like "Night Mode" in that menu.

Joining a room is done by going to "Explore Rooms" where you can pick a room from a list or choose Global and enter a Matrix format room address (#chatroom:server.tld). Spectral's support channel is #spectral:matrix.org

Three vertical dots in the upper right corner toggle room information on/off, there is no menu behind those dots.

"Start a Chat" can be used to start a "private" chat with another Matrix user. Just how "private" a person to personal chat really is is questionable. Matrix servers have end-to-end encryption between them. There is also support for both end-to-end person to person encryption and chat-room encryption by means of the Olm library in both Spectral's current git version and some Matrix servers. The Spectral client has no icon or other indication of the current chat's encryption status. The latest Spectral flathub release does not have Olm support; nor do most of the other Matrix clients. The git version does have the Olm technology but it does not indicate if a chat is supported or not.

Emoji Support

Spectral has a button you can click to select smileys and emojis. Smileys are not placed where they should be in the main chat window.

Spectral-smilkeys-all-over-the-place.jpg
Spectral appears to place smileys wherever it fells like placing them.

Rich Media Support

You can share files in rooms and private chats by clicking the "binder" icon. It's also possible to insert emojis by clicking on a rather huge selection of them Android-style.

If you share a file and add some text after it the file is uploaded and added to the chat but the text is omitted. You have to add a file, press ↔ Enter to get it uploaded and add any further comment after that. That's one of many small and annoying bugs you will encounter when you use Spectral.

Spectral-image-with-comment-01.jpg
You can attach a file to a text comment but don't expect that text to actually show up anywhere.

Spectral-image-with-comment-02.jpg
Spectral will show image files if you select an image and write a comment - but the text will not be shown. It is just gone. nheko will show part of the text if you hover over an image.

Images added to a chat are shown as clickable thumbnails. Other files are shown as links to a special folder on the server you are connected to. Video files added to a chat room are simply not shown. webm and other video files attached to posts will show up in some other clients. Spectral will not show the videos or links to them, it will show nothing at all if you or someone else posts a video file in a chat.

Exploring Chat Rooms

Spectral-expore-rooms.jpg
Spectral has a "Explore Rooms" feature. You can join rooms, but nothing happens. The rooms you join will show up if you restart it.

Spectral has a "Explore Rooms" feature where you can see a list of chat rooms on the local server. You can also get a list of room on matrix.org (the biggest Matrix server in the network). Joining rooms on other servers is done by selecting Global from a drop-down menu and manually typing in the full Matrix-style room address (#roomname@server.tld).

Nothing actually happens in the client if you join a room yet you do join the rooms beneath the hood. Restarting Spectral makes the rooms you join using that feature show up. Having to restart it when you want to join a room is not exactly ideal. Spectral developer "Black Hat" is

"aware of that bug"

Spectral developer "Black Hat"
January 25th, 2020

It is not fixed because

"I don't actually know what caused this đŸ€” I need to check it again"

Spectral developer "Black Hat"
January 25th, 2020

Creating And Managing Rooms

Spectral supports creating chat rooms and that's it when it comes to room management features. The riot.im web client supports a whole range of features including the ability to setup a room name and room aliases so other people who you do not explicitly invite can find and join your room.. Spectral has no such features.

You will have to use some other client like the Riot web client to configure rooms. Spectral has a severe and disturbing lack of features in this area.

Near-Realtime, Not Realtime Chat

Matrix is supposedly a real-time chat system. This is not always the case, it can take up to half a minute before user on server A sees a message from server B.

Some of the rooms have "IRC gateways" where IRC users can chat with Matrix users and vice versa. This is painfully slow; There's sometimes a minute or more between typing something into a room in Spectral and that comment's appearance on IRC.

These delays are not Spectral-specific, they are an inherent problem with the Matrix chat system.

HiDPI Users Need To Manually Specify Scaling

Spectral-git-2019-12-03-tiny.jpg
Spectral will by default very small window with tiny text and miniature icons. It doesn't look that tiny if you zoom in on this image on a low-resolution (720p, 1080p) monitor but if you consider that it's a full-screen screenshot and you compare it to the more readable text you'll find that it's quote tiny in comparison. It is too tiny to be usable on a 4K panel.

HiDPI users will immediately notice that the window Spectral opens when it launches is tiny. It clearly can't into scaling which means that you will have a hard time using it unless you have an ancient laptop with a 15.5" 1366x768 pixel monitor. Users of more modern 4K screens can get around this by launching it with a special Qt prefix QT_SCALE_FACTOR=. Something like 1.6x or 2x helps. Creating a local file which adds this when it's launched is advisable:

File: $HOME/bin/spectral
#!/bin/bash
QT_SCALE_FACTOR="1.6"  /usr/local/bin/spectral "${@}"

Replace /usr/local/bin/ with whatever which spectral says about it's location if you installed it from a distribution's package or flathub.

Verdict And Conclusion

Spectral is overall an acceptable and mostly easy to use Matrix client. It is not great, only acceptable due to the many annoying bugs like randomly misaligned emojis, rooms not showing up when you join them and other issues. The lack of features like proper room management is a huge drawback.

It can't into scaling but it's workable if you run it with a QT_SCALE_FACTOR= setting.

Spectral's lack of any indication of a "private" chat's privacy-status is problematic. It is not a great choice if you want to have a truly private conversation with someone.

Installation is also an issue; common GNU/Linux distributions do not have it which makes installation a bit problematic and you may want to forgo this Matrix-client if you are not a computer-savvy wizard. Most of our readers are wizards who can compile it with ease but your sorry old Amah couldn't do that if her life depended on it.

Spectral's by far biggest problem is that it is buggy. Rooms you join don't show up until you restart it, only files you add to messages show up while the text is ignored and so on. It really isn't something you can recommend as an alternative to Discord or Telegram or competing software like that.

Spectral is alright if you can live with or work around the bugs and the lack of features. It is not a good choice if you want a fully featured bug-free Matrix client.

Installation

None of the major GNU/Linux distributions have Spectral in their repositories. There is a flathub package available from May 22, 2019. It is also possible, but not entirely strait-forward, to install it from the git source tree at gitlab.com/b0/spectral.

Spectral requires it's own special little libqtolm library to compile. It is, like Spectral itself, not available in any major distribution's repositories.

Fedora 31 users can install both from source something like:

dnf -y install libolm-devel qtkeychain-qt5-devel cmark-devel

mkdir $HOME/src ; cd $HOME/src 
git clone https://gitlab.com/b0/libqtolm
cd libqtolm/
mkdir build;cd build ; cmake ..
make -j$(nproc)
su -c 'make install'

cd $HOME/src 
git clone https://gitlab.com/b0/spectral.git/
cd spectral
git submodule init
git submodule update
mkdir build;cd build ; cmake ..
make -j$(nproc)
su -c 'make install'

Fedora has had a git snapshot available in the repositories for 31+ since January 27th, 2020.

There are general build instructions for macOS, Linux, FreeBSD and Windows at spectral.im/docs/tutorial/compile.html.

Tips And Tricks

Spectral makes the the vertical scrollbar in rooms is hiden by default and it will hide automatically if it is not being actively used. That makes it hard to know it is there in the first place. It is possible to make that scrollbar always visible by adding active: true to the ScrollBar section in the file RoomPanel.qml in imports/Spectral/Panel/. The patch 0001-Make-room-scrollbar-always-visible.patch will make this change.

Links

Spectral has a home-page at spectral.encom.eu.org. It has links to a documentation section at spectral.encom.eu.org/docs/ which, as of December 3rd 2019, returns 404 on /doc/ and all sub-pages in that folder. The source code repository is at gitlab.com/b0/spectral.

Add your comment
LinuxReviews welcomes all comments. If you do not want to be anonymous, register or log in. It is free.