By Linux convention for GUI software, Ctrl+Q is quit.
By general chat app convention, Ctrl+K is filter.
Some keybindings have been changed to make space for these:
Reply is now Ctrl+R
Remove is now Ctrl+Shift+R
"Previous message" is now Ctrl+I
I did not want to alter the defaults more than this.
But ideally, you would want "Previous message" and "Next message"
adjacent, so it makes sense to swap Ctrl+U and Ctrl+J as well.
Moment has different default directories and is controlled by
different environment variables. On first startup, Moment
detects Mirage directories and offers to copy them.
It doesn't make sense to migrate logins without migrating encryption
keys, so this is now included in migration. Themes are migrated as well.
Only offer migration is only if both config and data directory are able to be
migrated.
I just spent half an hour debugging why some setting didn't work for me.
It was because I was putting it in Chat instead of Keys.Chat. This is
very confusing when you're making your own partial config override file.
I've added comments to the classes with identical names to hopefully
make this less confusing.
* Key to jump to latest/oldest unread #186
Latest/oldest unread/highlight.
Default bindings match the bindings for previous/next unread/highlight.
Allows the user to read messages in the order of receiving them.
Or the opposite order, to stay on top of things.
* Clean up code
Use let instead of var, and proper indentation
* Fix case for some variables in RoomList.qml
Some variables were using snake_case instead of camelCase like usually
done in QML code (note that the model items come from python)
Co-authored-by: miruka <miruka@disroot.org>
* Add Keys.Rooms.Direct configuration
Keybinding to jump to specific room id in specific account id, or the
first occurence of specific room id in any account.
* Default binding was a bad idea
This example binding was preventing the user from binding Ctrl+G,Ctrl+M
to something else.
* Use const instead of var
* Use showItemAtIndex for direct room switching
This is a simpler implementation that better fits in the existing
codebase and doesn't really have drawbacks.
* Use existing findIndex
From roomList.model. Instead of reinventing it
* Made example not a real room
Earlier I made it point to the Mirage room
* Add instructions for copying room ID
After noticing that these IDs do not match Matrix room addresses, I felt
it was necessary to explain this here, even if it's already explained in
other parts of the configuration file.
* Use .split(" ") for splitting descriptions
This is a more readable implementation.
* Fix shortcuts breaking on config reload
Wrapping HShortcut in Loader makes it destructible.
See d53978f62bab35cdc7e115c50f0571f736814582
* Cleanup showRoomByDescription method, now showById
- "Room description" is a vague, it sounds like this is about
the room topic too. Instead of having a function that takes a
string with a certain format, take explicit arguments for the user and
room ID, this way we don't need comments to explain what's going on
either
- Reduce indentations and {} noise to make it simpler to read
* More details for direct room binds config comment
Co-authored-by: miruka <miruka@disroot.org>
* Add keys for back and forward through history
Move through history of visited rooms without altering it.
Ctrl+H and Ctrl+Y by default.
Deviating from history while in the middle of it
causes a part of history to be discarded.
* Change default history binding to Ctrl+H and Ctrl+Shift+H
* Rename functions and settings
`earlier_page` and `later_page` is consistent naming with `last_page`
* Add option to wrap history
If you press `later_page` while at index 0 (newest), you loop to the end
of recorded history (oldest). If you press `earlier_page` while at at
the end of history (oldest), you loop back to the top (newest).
This can be disabled.
* Add showNthFromHistory
Grouped duplicated code into a new funcion.
* Minor formatting changes
* Move wrap_history setting from to General section
The Keys section is purely for keybindings; this setting should also be
able to control history navigation not done by keyboard such as extra
mouse button bindings.
* Change default bind for later_page and clear_all
Ctrl+H and Ctrl+L are a more intuitive pair than Ctrl+H and Ctrl+Shift+H.
Meanwhile, clear_all does not need the accessible binding Ctrl+L.
Co-authored-by: miruka <miruka@disroot.org>
* Add keybinding for quit
* Reorder default settings
The related keybindings are now located closer together.
quit is not commented by default, but instead has an empty list.
* No need for braces for a single instruction
Alt+M: toggle "mute all notifications except highlights"
Alt+Shift+M: toggle "mute all notifications"
The Keys.Rooms.(previous/next)_highlight keybinds, previously bound to
Alt+(Shift+)M (stood for "mention") now defaults to Alt+(Shift+)H.
The NotificationLevel enum and notificationLevel property had to be
moved from Window to UI due to QML having a global "Window" object that
causes conflicts when trying to access the enum as
"Window.NotificationLevel" from UI.qml.
Pin/unpin is more representative of what the function actually does
for rooms in the left pane. Also change the corresponding icons and
renames the config file section: RoomList.Bookmarks → RoomList.Pinned
Add RoomList.local_unread_markers option to settings.py,
which is False by default.
Before, this way always enabled and conflicts with push rules by marking
anything as unread without any logic.
- Notifications.alert_time → Notifications.flash_time,
more evocative of what these "alerts" actually do
- Change default for the above from 0 to 5, since now push rules already
control precisely what to enable or disable these alerts for
- Notifications.urgent_alert_time → Notifications.highlight_flash_time,
"highlight" is the term used in the matrix doc
Fix refresh and sign out keybinds that were broken, and rename
these in settings.py:
- Keys.Sessions.refresh → Keys.Security.refresh
- Keys.Sessions.sign_out_checked_or_all → Keys.Security.sign_out
Toggle display of the focused message's seen counter tooltip,
which shows which user have this message as their last seen
and when did they send that information.
When this mode is active, you can move the focus
to other messages and the tooltip will update itself.
If a message doesn't have a counter, it won't have a tooltip.
python_debugger (shift+F1) will now always start pdb, and
python_remote_debugger will always start remote_pdb.
Since the new autoreload.py script doesn't break stdin like entr with
live-reload.sh did, we can now use pdb if the app is connected to a
terminal.