Commit Graph

10899 Commits

Author SHA1 Message Date
Hartmnt
cdab9ec14b TRANSLATION: Update translation files 2025-01-08 13:20:35 +00:00
Hartmnt
6ed49dee0f FEAT(client): Add --hidden cli option to start Mumble hidden in tray
This commit introduces the "--hidden" cli option which prevents
Mumble and the ConnectDialog to show up on startup.
This is especially useful for users who want to automate the
startup process without human interaction.

Fixes #3879
2025-01-08 13:20:23 +00:00
Hartmnt
8221fcb063 FEAT(client): Implement tray icon highlighting
Previously, only "window highlighting" was supported
by Mumble. However, when Mumble was minimized to tray,
there was no way to observe that highlighting.

As requested in #4584, this commit introduces highlighting
to the tray icon. When a highlight message is received, the
tray icon will flash the "information icon" every two seconds
until the MainWindow of Mumble receives focus again.

To enable this for a specific message type, the user needs to
check the "highlight" box in the "Messages" configuration dialog.

Fixes #4584
2025-01-08 13:20:23 +00:00
Hartmnt
2c6ea6ed99 FEAT(client): Fully rewrite tray icon implementation
The old tray icon implementation was very old and contained
a lot of workaround for things that probably are no longer an issue.
Furthermore, the event loop was modified in a way such that it could
end up in an infinite loop draining CPU time and rendering Mumble
unusable.

Based on the new Qt5 implementation, this commit introduces
a complete rewrite of the tray icon. The following things should be noted:

* We assume the information in the Qt documentation [1] is valid. This
means that all versions of Windows, all Linux window managers/compositors
that implement the d-bus StatusNotifierItem specification, and all versions
of macos support the functionality of QSystemTrayIcon and its notification
system. That means we can drop the platform-specific code branches and handle
messages directly with QSystemTrayIcon::sendMessage. This should for example
also be true for recent versions of Gnome, which do not have an actual system
tray, but implement the d-bus StatusNotifierItem specification. Therefore, we
can actually merge and simplify the notification code for Windows and Unix*.

* With regards to the bullet point above, we only limit the "hide to tray"
functionality behind QSystemTrayIcon::isSystemTrayAvailable (because otherwise
you would not get the Mumble window back without binding a shortcut first).
Other code branches that were previously limited when isSystemTrayAvailable
returned false were removed. According to Qt, the QSystemTrayIcon code does not
actually care if a system tray is available and will even retroactively add itself
if a tray becomes available after the application was started.

* On (X)Wayland, the minimize button in the window frame does not trigger a
minimize change event. This means that users with such a system may only be
able to "hide to tray" by 1) pressing the close button in the window frame and
enabling "minimize instead of close" 2) clicking the tray icon or the tray icon
hide action or 3) binding a shortcut to hide the window. This is either a bug
or a deliberate decision by Qt or Wayland and we have no way to do anything
about that. (QTBUG-74310)

* The "messageClicked" event is buggy in Qt on some platforms. That means that
clicking the system notification spawned by Mumble via QSystemTrayIcon::sendMessage
will (on some systems) never trigger anything especially not showing and activating
the window. This is a long-standing bug in Qt (QTBUG-87329), but we have absolutely
no way to work around this. The event is correctly hooked up in Mumble and if
this is ever fixed in Qt, this will start working again automatically.

* The tray icon has been redesigned according to state-of-the-art tray icon
design guidelines [2]. Which basically just means: 1) d9a2d470ab has
been reverted to provide the user with a consistent menu 2) The main action of
the tray icon (toggle show/hide) is the first entry in the context menu
and the default action when the icon is clicked and 3) the TalkingUI toggle
action was added. Actions for double and middle mouse clicks were removed as
they might have contributed to infinite loops.

* There is no way in Windows to show and activate a window that is
not part of the current active process. If you have Mumble running in
the background and receive a message, we can not raise the Window without
you clicking the Mumble taskbar item or tray icon yourself. This
is deliberate by Microsoft and can and should not be circumvented. (#5701)

* This also fixes the case where the Mumble MainWindow would disappear when
pressing "OK" in the settings dialog. This happened because users would have
"minimize to tray" and "minimize on close" enabled.

[1]
https://doc.qt.io/qt-5/qsystemtrayicon.html#details
https://doc.qt.io/qt-6/qsystemtrayicon.html#details

[2] https://learn.microsoft.com/en-us/windows/win32/uxguide/winenv-notification

Fixes #1486
Fixes #3028
Fixes #3722
Fixes #3977
Fixes #3999
Fixes #5012
2025-01-08 13:20:23 +00:00
Hartmnt
51bf684642 REFAC(client): Remove old tray icon code
The existing code for the tray icon was ancient,
buggy and possibly entirely broken in more than one place.

This commit removes all tray related code, such that it can
be completely written from scratch.
2025-01-08 13:20:23 +00:00
Hartmnt
da5ab548e1 REFAC(client): Replace 0 with nullptr in Global.cpp 2025-01-08 13:20:23 +00:00
Hartmnt
8f6cbfa6a7
Merge PR #6655: Translations update from Hosted Weblate 2025-01-08 14:17:58 +01:00
Hosted Weblate
23dd994943
TRANSLATION: Update French translation
Currently translated at 100.0% (2315 of 2315 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Tanavit MINETEST <tanavit@posto.ovh>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/fr/
Translation: Mumble/Mumble Client
2025-01-08 12:07:47 +00:00
Hosted Weblate
b8207f1e7d
TRANSLATION: Update Hindi translation
Currently translated at 0.4% (11 of 2315 strings)

Co-authored-by: Anupam Malhotra <anpm.malhotra@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/hi/
Translation: Mumble/Mumble Client
2025-01-08 12:07:47 +00:00
Hosted Weblate
ecc6ea7b08
TRANSLATION: Update Ukrainian translation
Currently translated at 100.0% (2315 of 2315 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Максим Горпиніч <mgorpinic2005@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/uk/
Translation: Mumble/Mumble Client
2025-01-08 12:07:46 +00:00
Hosted Weblate
08b6e64157
TRANSLATION: Update Russian translation
Currently translated at 88.9% (2059 of 2315 strings)

TRANSLATION: Update Russian translation

Currently translated at 87.5% (2027 of 2315 strings)

Co-authored-by: Arkebuzz <aykoret@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Watashi o yūwaku suru <aksueikava@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ru/
Translation: Mumble/Mumble Client
2025-01-08 12:07:45 +00:00
Hosted Weblate
548142c70e
TRANSLATION: Update German translation
Currently translated at 99.8% (2311 of 2315 strings)

Co-authored-by: Ettore Atalan <atalanttore@googlemail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/de/
Translation: Mumble/Mumble Client
2025-01-08 12:07:45 +00:00
Robert Adam
b44cb8e535
Merge PR #6686: REFAC: Use template to support arbitrary integer types 2025-01-08 13:07:36 +01:00
Robert Adam
9138b73cc2 REFAC: Use template to support arbitrary integer types
Instead of providing explicit overloads for some integer types, we now
use a template to cover all integer types. Using a manually selected
subset has repeatedly led to issues where integer definitions vary
between platforms (and library versions?).
2025-01-08 12:01:17 +01:00
Hartmnt
c0eaa32f4d
Merge PR #6684: REFAC: Remove unused CryptState.h 2025-01-06 22:33:09 +01:00
Hartmnt
5de3c14bb8 REFAC: Remove unused CryptState.h
Somewhere in e90eb8c4cd and be97594046
this file was left by accident when refactoring.
2025-01-06 19:12:20 +00:00
Robert Adam
70b1a4e529
Merge PR #6623: DOCS(protocol): Integrate network protocol documentation 2025-01-05 19:07:50 +01:00
Hartmnt
e64f334c93
Merge PR #6512: FIX(server, client): Fix ACL write and traverse permissions 2025-01-02 11:57:20 +00:00
Hartmnt
2fc30044b7
Merge PR #6672: DOCS: Mention differences in documentation across branches 2024-12-25 10:53:19 +01:00
Hartmnt
3326494733 DOCS: Mention differences in documentation across branches
We should specify that the build documentation will change over time
and the correct branch needs to be selected for any given version.

Fixes #6658
2024-12-22 17:57:32 +00:00
Robert Adam
edd4588c8a
CI(release-dispatch): Fix workflow file
This (hopefully) fixes the syntax of the release dispatch workflow file.
2024-12-10 15:41:56 +01:00
Hartmnt
627f838738
Merge PR #6646: DOCS: Update Debian Build-Dependencies 2024-12-10 14:46:27 +01:00
Hartmnt
7d920e7398
Merge PR #6624: Translations update from Hosted Weblate 2024-12-06 00:58:26 +01:00
Hosted Weblate
ddbef07a0c
TRANSLATION: Update Chinese (Simplified Han script) translation
Currently translated at 100.0% (2315 of 2315 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: deluxghost <deluxghost@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/zh_Hans/
Translation: Mumble/Mumble Client
2024-12-05 23:21:15 +00:00
Hosted Weblate
30dbece899
TRANSLATION: Update Finnish translation
Currently translated at 99.9% (2313 of 2315 strings)

TRANSLATION: Update Finnish translation

Currently translated at 99.6% (2308 of 2315 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ricky Tigg <ricky.tigg@gmail.com>
Co-authored-by: janne ojanperä <janne.ojanpera@iki.fi>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/fi/
Translation: Mumble/Mumble Client
2024-12-05 23:21:14 +00:00
Hosted Weblate
aeb736e1f1
TRANSLATION: Update Italian translation
Currently translated at 99.0% (2294 of 2315 strings)

Co-authored-by: Dark Space <darkspace.lvcnr@gmail.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/it/
Translation: Mumble/Mumble Client
2024-12-05 23:21:13 +00:00
Hosted Weblate
86bfbee3d6
TRANSLATION: Update English (United Kingdom) translation
Currently translated at 36.5% (845 of 2315 strings)

TRANSLATION: Update English (United Kingdom) translation

Currently translated at 36.2% (839 of 2315 strings)

Co-authored-by: Andi Chandler <andi@gowling.com>
Co-authored-by: Hosted Weblate <hosted@weblate.org>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/en_GB/
Translation: Mumble/Mumble Client
2024-12-05 23:21:12 +00:00
Hosted Weblate
d26b00db08
TRANSLATION: Update Russian translation
Currently translated at 87.5% (2026 of 2315 strings)

Co-authored-by: Hosted Weblate <hosted@weblate.org>
Co-authored-by: Ratmir Karabut <rkarabut@gmail.com>
Translate-URL: https://hosted.weblate.org/projects/mumble/mumble-client/ru/
Translation: Mumble/Mumble Client
2024-12-05 23:21:11 +00:00
Hartmnt
75c66fc70c
Merge PR #6635: FIX(client): Fix Windows Unicode paths when using raw file streams 2024-12-06 00:21:02 +01:00
Hartmnt
fe5fe6840e CHANGE(client): Migrate boost::filesystem to std
Since we are now using C++17, we can make use of the
std::filesystem::path API for use with our std::fstreams.

This commit replaces boost::filesystem::path introduced by
a08a26efcc
with std::filesystem::path
2024-12-05 22:27:03 +00:00
Hartmnt
a08a26efcc FIX(client): Fix Windows Unicode paths when using raw file streams
Presumably a recent Windows update broke the way we were using
filepaths. Specifically, the internal representation of non-ASCII
characters is weird in Windows and not UTF-8.
Why the code we had ever worked before is unclear, but it is now
broken either way.

This commit introduces the boost::filesystem::path abstraction
to handle the creation of raw output files gracefully on all
platforms.

Fixes #6628
2024-12-05 22:23:08 +00:00
Diederik de Haas
9c7877f1ef
DOCS(build_linux): Add missing B-Ds to Debian instructions
Mumble can be compiled with several system libraries, so add their
development library to the list of Build-Depends.
In order to actually compile with them, you need to specify the
configuration options as described in cmake_options.md.

Those are for the newly added B-Ds:
1) -Dbundled-gsl=OFF
2) -Dbundled-speex=OFF
3) -Dbundled-json=OFF

Closes: #6644
2024-12-03 18:06:07 +01:00
Diederik de Haas
55d5be2ea8
DOCS(build_linux): Actually update Debian B-D: pkg-config -> pkgconf
Since Debian Bookworm the pkg-config package is a transitional package
to pkgconf, so update the build dependency install instructions to point
to its target.

In PR 6643 I accidentally updated the instructions for Ubuntu instead of
for Debian, so now actually update the instructions for Debian as well.
FTR: In Ubuntu Noble (2024.04) it's also a transitional package.

Link: https://github.com/mumble-voip/mumble/pull/6643
2024-12-03 18:05:06 +01:00
Diederik de Haas
2a38114480
DOCS(build_linux): Sort Debian Build Dependencies
This makes it (much) easier to check whether one has all the Build
Dependencies installed or not.
2024-12-03 17:59:03 +01:00
Hartmnt
56d44cc7b6
Merge PR #6643: DOCS(build_linux): Update Debian B-D: pkg-config -> pkgconf 2024-12-02 11:16:31 +01:00
Hartmnt
df0b15ca37
Merge PR #6637: DOCS(server): Add Documentation key to mumble-server unit 2024-12-02 11:11:22 +01:00
Diederik de Haas
217d48eeff
DOCS(server): Add Documentation key to mumble-server unit
Make it easy to view the man page by documenting it in its service unit
file. Then it can be viewed via `systemctl help mumble-server.service`.
2024-11-30 08:21:53 +01:00
Hartmnt
9ee2f4be8d
Merge PR #6640: FIX(cmake): Don't set WORKING_DIRECTORY for ExternalProject_Add() 2024-11-29 12:18:16 +01:00
Davide Beatrici
2a0683d0be FIX(cmake): Ensure the client installer target is built after its dependencies
Looks like targets are now built concurrently, which results in the installer failing to find the G15 and x64 overlay helpers.

This commit marks the G15 and overlay targets as dependencies of the client, when they're enabled.

As a bonus, plugins are now tied to their own dedicated target rather than the client's.
This is required because the client's subdirectory is now included later on.
2024-11-29 04:36:20 +01:00
Davide Beatrici
2a8198f4d6 FIX(cmake): Don't set WORKING_DIRECTORY for ExternalProject_Add()
This is a workaround for a bug that appeared in a recent version of CMake.

WORKING_DIRECTORY prepends the specified path to a list instead of using it directly, resulting in:

cd /D D:\a\1\b\overlay\overlay_xcompile-prefix;D:\a\1\b\overlay\overlay_xcompile-prefix\src\overlay_xcompile-build

For reference, this causes the build to fail on Windows with the following error:

"The filename, directory name, or volume label syntax is incorrect."

This commit simply removes the parameter from the ExternalProject_Add() call, since the default working directory is perfectly fine.
2024-11-28 15:52:08 +01:00
Diederik de Haas
1d69806610
DOCS(build_linux): Update Debian B-D: pkg-config -> pkgconf
Since Debian Bookworm the pkg-config package is a transitional package
to pkgconf, so update the build dependency install instructions to point
to its target.
2024-11-28 10:48:48 +01:00
Davide Beatrici
9c4856185c
Merge PR #6584: FIX(client): Specify version when loading/saving MainWindow state 2024-11-09 02:48:00 +01:00
Davide Beatrici
c7d902b666
Merge PR #6618: FIX(client, server): Fix build with Qt 6.8 2024-11-06 22:06:14 +01:00
Konstantin Goncharik
759339de9c
FIX(server): Fix build with Qt 6.8 2024-11-06 14:29:54 +07:00
Konstantin Goncharik
7787e5bdcc
FIX(client): Fix build with Qt 6.8 2024-11-06 01:40:59 +07:00
Jan Klass
be8874f123 DOCS(protocol): Add file references to README.rst 2024-11-03 18:21:44 +01:00
Jan Klass
eae0eac75e DOCS(protocol): Combine README.rst
In a folder, GitHub shows a README by default, below the file list.

Combining the index.rst and introduction.rst, with text fixups, will serve as an appropriate landing page/doc.
2024-11-03 17:58:34 +01:00
Jan Klass
b39bbf2dec DOCS(protocol): Drop Sphinx configuration
Dropping the resources for Sphinx documentation generation drops support for generating this documentation into various formats (see make file; html, epub, and other less useful ones).

This network protocol documentation is the odd one out compared to our other documentation. The only one with this system.
Diverse tech has a maintenance cost, and the previous distance to our code made more likely to be missed for updates and discovery.
Handling only the network protocol documentation in this way feels disconnected/diverging.
Although readers may use the docs to implement clients and servers against only the docs, the question is whether the technology and maintenance additions are worth it.

Having simple structured text documentation files should serve us well enough.
It does for other developer documentation / documentation for developers.
2024-11-03 17:54:24 +01:00
Jan Klass
208dbc1d56 DOCS(protocol): Drop Network-Protocol.md pointing to old docs 2024-11-03 17:33:17 +01:00
Jan Klass
d05262a9ce DOCS(protocol): Integrate network protocol documentation
Integrates our network protocol docs [1][2]. This will allow us to drop the separate repository. Git history is preserved through adding/merging with/through git subtree.

via

```
git subtree add --prefix docs/dev/network-protocol https://github.com/mumble-voip/mumble-protocol.git master
```

[1]: https://github.com/mumble-voip/mumble-protocol
[2]: https://mumble-protocol.readthedocs.io/

---

Add 'docs/dev/network-protocol/' from commit 'b0d142143c5c37797d787fd7f71eb172dd1219ad'

git-subtree-dir: docs/dev/network-protocol
git-subtree-mainline: 65462b4c3b
git-subtree-split: b0d142143c
2024-11-03 17:32:48 +01:00