Sonix User Manual

Sonix is a native, keyboard-first Mastodon client for Windows.

System Requirements

Windows 10 or 11

Core Features

Main Window Layout

The main window has two lists:

Tab and Shift+Tab move between them. Timeline switching, reordering, and closing work from either list; post actions work from the Posts list.

Timelines

Opening Timelines

Timelines are opened from the Timelines menu, from a post (user timelines, threads, hashtags), or with their shortcut. Every open timeline appears in the Timelines list and stays open until you close it with Ctrl+W (or Backspace in Quick Action Keys mode).

Timeline How to open
Home Timelines -> Home Timeline
Notifications Timelines -> Notifications
Mentions Ctrl+Shift+M
Sent Timelines -> Sent
Local Ctrl+L
Local for another instance Ctrl+Shift+I, then type a domain
Federated Timelines -> Federated Timeline
Direct Messages Ctrl+D
Bookmarks Timelines -> Bookmarks
Favorites Timelines -> Favorites
List Timelines -> Open List...
User Ctrl+T on a post, or Ctrl+U to type a handle
Hashtag Ctrl+H on a post, then View Timeline
Thread Alt+Enter on a post
Search Ctrl+/

Home and Notifications are opened automatically at startup, but they are not special: you can close them like any other timeline and reopen them from the Timelines menu.

The Sent Timeline

Timelines -> Sent opens your own account’s timeline in a buffer, so you can see everything you have posted, including replies and boosts, with your pinned posts at the top. Posts you publish or delete are reflected there live.

Reordering and Switching

Reorder timelines with Shift+Left Arrow and Shift+Right Arrow from either list. Switch between them with Left Arrow/Right Arrow or Ctrl+1 through Ctrl+9.

Refreshing

Streaming timelines update themselves. F5 refreshes the current timeline at any time, and . (Load More) fetches older entries. If a streaming timeline loses its connection, Sonix re-fetches it about once a minute until streaming comes back.

Window Visibility and Tray

Composing Posts

Ctrl+N opens the compose dialog; Ctrl+R, Ctrl+Shift+R, Ctrl+Q, and Ctrl+E open it for a reply, an author-only reply, a quote, and an edit respectively. Every control has an access key, and the dialog title shows the character count for your instance’s limit. You can type past the limit, but you will hear a warning sound when you do.

The dialog offers:

If Use enter to send posts is enabled, Enter posts from the content field; otherwise use the Post button.

Options

Open options with Ctrl+,.

General Tab

Timeline Tab

Sounds Tab

Sonix plays a different sound for each kind of event, and every one of them can be swapped for a file of your own.

Sounds are tied to actions, not just to things arriving. Where an action has two directions, both share one sound: favoriting a post and having one of yours favorited are both the favorite sound. Undoing an action reuses its sound, since the point is to confirm something happened and the screen reader already says which way it went.

Event When it plays
Mention Someone mentions you in a public, unlisted, or followers-only post
Direct message Someone mentions you in a direct post
New post in home timeline Somebody you follow posts. The busiest event by far, so its sound is the shortest and quietest of the set; uncheck it to silence just this one
Followed someone, or gained a follower You follow or unfollow an account or hashtag, or somebody follows you
Follow request Somebody asks to follow you, or you accept or reject a request
Favorited a post, or yours was favorited Either direction
Boosted a post, or yours was boosted Either direction
Bookmarked or unbookmarked a post Your own bookmarking
Pinned or unpinned a post Your own pinning
Poll ended A poll you voted in has finished
Voted in a poll You cast a vote
Edited a post, or one you follow was edited Either direction
Sent a post or reply Your post or reply was published or scheduled
Deleted a post You deleted one of your posts
Action failed Any of the above failed

Blocking, muting, and hiding boosts have no sound, since borrowing the follow sound for them would be misleading and the screen reader announces them anyway.

Sounds for things that arrive (mentions, direct messages, new home posts, and notifications that somebody favorited, boosted, followed, or edited) follow the notification mode on the General tab: they play in Sound only and Sound and notifications, and are silent in Classic Windows Notifications or Disabled.

Sounds for things you do always play, subject only to this tab, because they confirm an action you just took rather than announcing something that arrived.

Buttons under the list:

Sound Packs

A pack is a folder of sounds named after the events they play for, such as mention.mp3 and follow.mp3. Packs live under packs in either the sounds folder Sonix installed or your personal one, and your personal folder wins when both have a pack of the same name.

To build your own, press Open sounds folder, copy one of the existing pack folders, rename it, and replace the files inside. It appears in the Sound pack list the next time you open the options. A pack may use .mp3, .wav, .ogg, .flac, or .m4a, and one that does not provide a given sound borrows it from the default pack rather than leaving that event silent.

Picking a file with Change... overrides the pack for that one event and survives switching packs, until you press Reset to hand the event back to the pack.

Updating Sonix replaces the packs it ships with but never touches your personal folder, so your own packs and edits survive an upgrade.

Templates Tab

Customize how posts appear in each timeline using Jinja2-style templates.

Templates are rendered per-entry each time a timeline is displayed. If a template contains a syntax error, the entry falls back to author: content.

Available Variables

Variable Value
{{ author }} Display name (respects emoji filtering setting)
{{ username }} @acct handle
{{ content }} Post text, HTML-stripped (respects content warning display setting)
{{ content_warning }} Spoiler text, or empty if none
{{ relative_time }} Relative timestamp, e.g. 2 hours ago
{{ absolute_time }} Absolute local timestamp, e.g. Feb 17, 2026 at 2:30 PM
{{ visibility }} Public, Unlisted, Followers only, or Direct
{{ reply_count }} e.g. 3 replies
{{ boost_count }} e.g. 1 boost
{{ favorite_count }} e.g. 5 favorites
{{ client }} Posting app name, or empty if unknown
{{ media }} Media attachment summary, or empty if none
{{ poll }} Poll summary, or empty if none
{{ booster }} Display name of the person who boosted (boost template only; empty for regular posts)
{{ booster_username }} @acct handle of the booster (boost template only)
{{ quote_author }} Display name of the quoted post’s author (quote/boost templates)
{{ quote_username }} @acct handle of the quoted post’s author (quote/boost templates)
{{ quote_content }} Text content of the quoted post (quote/boost templates)
{{ quote_media }} Media summary of the quoted post (quote/boost templates)
{{ quote_poll }} Poll summary of the quoted post (quote/boost templates)
{{ app }} The application name (window title template only)
{{ timeline }} The active timeline name (window title template only)
{{ account }} Your @acct handle (window title template only)

Conditionals

You can use {% if %} blocks to show text only when a variable is non-empty:

{% if client %}, via {{ client }}{% endif %}

Filters Tab

Hide post types per timeline, on the client side only. Select a timeline from the dropdown, then check the types you want to hide: - Original posts (not replies or boosts) - Replies to others - Replies to me - Threads (self-replies) - Boosts - Quote posts - Posts with media - Posts without media - Your posts - Your replies

These are separate from your instance’s own filters, which are managed in Options -> Manage Filters....

Keyboard Shortcuts

Every shortcut in the table below can be changed in Options -> Customize Keyboard Shortcuts.... Normal mode and Quick Action Keys mode have their own independent bindings, and actions listed as None have no default binding but can be given one.

Customizing Shortcuts

The dialog has a Quick Keys Mode tab and a Normal Mode tab. On each:

Fixed Keys

These are built into the lists and cannot be customized:

Global

Default Bindings

Action Normal mode Quick Action Keys mode
New Post… Ctrl+N C
Reply… Ctrl+R R
Reply to Author… Ctrl+Shift+R Ctrl+R
Quote Post… Ctrl+Q Q
Toggle Follow Alt+F Alt+F
View Author Profile Ctrl+P P
View Mentions Ctrl+M M
View Hashtags Ctrl+H H
Open Links Enter Enter
Play Media Ctrl+I I
Open in Browser Ctrl+Shift+O O
Copy Post Ctrl+Shift+C Ctrl+Shift+C
Copy Post Link Ctrl+C Ctrl+C
View Post Details Shift+Enter Shift+Enter
View Thread Alt+Enter Alt+Enter
View Quoted Thread None None
Edit Post… Ctrl+E E
Delete Post Delete Delete
Pin / Unpin Post None None
Vote on Poll… Ctrl+V V
Favorite Ctrl+Shift+F F
Bookmark Ctrl+Shift+K K
Boost Ctrl+Shift+B B
View Boosts None None
View Favorites None None
Open User Timeline Ctrl+T T
Open User… Ctrl+U U
Search… Ctrl+/ /
Find in Timeline… Ctrl+F Ctrl+F
Find Next F3 F3
Find Previous Shift+F3 Shift+F3
Home Timeline None None
Notifications Timeline None None
Sent Timeline None None
Local Timeline Ctrl+L Ctrl+L
Open Instance Timeline… Ctrl+Shift+I Shift+I
Federated Timeline None None
Direct Messages Ctrl+D Ctrl+D
Mentions Timeline Ctrl+Shift+M Ctrl+Shift+M
Bookmarks None None
Favorites None None
Open List… None None
Load More . .
Close Timeline Ctrl+W Backspace
Refresh F5 F5
Previous Timeline Left Left
Next Timeline Right Right
Move Timeline Left Shift+Left Shift+Left
Move Timeline Right Shift+Right Shift+Right
Previous Account Ctrl+[ Ctrl+[
Next Account Ctrl+] Ctrl+]
Toggle Content Warning Ctrl+X X
Toggle Quick Keys Mode Ctrl+Shift+Q Ctrl+Shift+Q
Manage Accounts… Ctrl+Alt+A Ctrl+Alt+A
Manage Filters… None None
Manage Lists… None None
Edit Profile… Ctrl+Shift+E Ctrl+Shift+E
Options… Ctrl+, Ctrl+,
Customize Keyboard Shortcuts… None None
Check for Updates… None None
View Help F1 F1

Actions with no default binding are still reachable from the menu bar or the post context menu. View Boosts and View Favorites only appear in the Post menu when the selected post actually has boosts or favorites, and Edit Post, Delete Post, and Pin / Unpin Post only appear for your own posts.

Quick Action Keys Mode

Toggle with Ctrl+Shift+Q. While it is on, the single-letter bindings in the table above act on the selected post instead of being typed, and Backspace closes the current timeline.

Accounts

Ctrl+Alt+A opens the accounts dialog, where you can Add, Remove, or Switch To an account. Adding an account walks you through authorizing Sonix on your instance in the browser. Ctrl+[ and Ctrl+] cycle accounts directly; each account keeps its own set of open timelines, and the newly active account’s handle is announced when you switch.

Profile Editing

Ctrl+Shift+E opens your profile for editing:

Lists

Options -> Manage Lists... shows your Mastodon lists, with buttons to Add, Edit, view and change Members, and Delete. Open a list as a timeline with Timelines -> Open List.... Individual users can also be added to a list from the Actions… menu in the profile and followers/following dialogs. List timelines stream in real time.

Server-Side Filters

Options -> Manage Filters... manages the filters stored on your instance, which apply everywhere you use Mastodon, not just in Sonix. Each filter has a title, the contexts it applies to, an action, an optional expiry, and a list of keywords, each of which can be marked whole-word.

Finding Text in a Timeline

Ctrl+F prompts for text and moves to the next matching entry, respecting your timeline sort direction. F3 and Shift+F3 repeat the search forwards and backwards. With Load more on find next enabled in the Timeline options, Sonix keeps fetching older posts while searching instead of stopping at the end of what is already loaded.

Media Player

Press Ctrl+I (or I in Quick Action Keys mode) on a post with media attachments to open the media player. If the post has multiple attachments, a dialog lets you choose which one to play.

Media Player Keys

Key Action
Space Play / Pause
Left Arrow Seek backward 10 seconds
Right Arrow Seek forward 10 seconds
Up Arrow Volume up
Down Arrow Volume down
E Announce elapsed time
R Announce remaining time
T Announce total duration
D Download media file
Escape Close media player

Search

Links in Posts

Enter on a post opens its links. If the post has more than one link, or Always prompt to open links is enabled, a dialog lists them with Open and Copy buttons. Tracking parameters are stripped from URLs unless you turn that off in the General options.

Configuration File

Sound settings live under the sounds key: enabled is the master switch, volume is 0 to 100, pack names the active pack, and events maps an event name to its enabled flag and file. An empty file means the event takes its sound from the pack; a bare name is looked up in your sounds folder and then in Sonix’s, and an absolute path is used as given.

Changelog

Unreleased

Version 0.5.0

Version 0.4.0

Version 0.3.1

Version 0.3.0

Version 0.2.0

Version 0.1.1

Version 0.1.0