Skip to content

Commit

Permalink
FEAT(client): Add --hidden cli option to start Mumble hidden in tray
Browse files Browse the repository at this point in the history
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 mumble-voip#3879
  • Loading branch information
Hartmnt committed Jun 23, 2024
1 parent 1228ae9 commit dc5f487
Show file tree
Hide file tree
Showing 2 changed files with 18 additions and 4 deletions.
20 changes: 17 additions & 3 deletions src/mumble/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@

#include <QLocale>
#include <QScreen>
#include <QTimer>
#include <QtCore/QProcess>
#include <QtGui/QDesktopServices>
#include <QtWidgets/QMessageBox>
Expand Down Expand Up @@ -212,6 +213,7 @@ int main(int argc, char **argv) {
bool customJackClientName = false;
bool bRpcMode = false;
bool printTranslationDirs = false;
bool startHiddenInTray = false;
QString rpcCommand;
QUrl url;
QDir qdCert(QStandardPaths::writableLocation(QStandardPaths::DocumentsLocation));
Expand Down Expand Up @@ -288,7 +290,9 @@ int main(int argc, char **argv) {
" locale that corresponds to the given locale string.\n"
" If the format is invalid, Mumble will error.\n"
" Otherwise the locale will be permanently saved to\n"
" Mumble's settings."
" Mumble's settings.\n"
" --hidden\n"
" Start Mumble hidden in the system tray."
"\n");
QString rpcHelpBanner = MainWindow::tr("Remote controlling Mumble:\n"
"\n");
Expand Down Expand Up @@ -415,6 +419,9 @@ int main(int argc, char **argv) {
qCritical("Missing argument for --locale!");
return 1;
}
} else if (args.at(i) == "--hidden") {
startHiddenInTray = true;
qInfo("Starting hidden in system tray");
} else if (args.at(i) == "--version") {
// Print version and exit (print to regular std::cout to avoid adding any useless meta-information from
// using e.g. qWarning
Expand Down Expand Up @@ -684,9 +691,16 @@ int main(int argc, char **argv) {

// Main Window
Global::get().mw = new MainWindow(nullptr);
Global::get().mw->show();
if (!startHiddenInTray) {
Global::get().mw->showRaiseWindow();
}

Global::get().trayIcon = new TrayIcon();
#ifdef Q_OS_MAC
if (startHiddenInTray) {
QTimer::singleShot(0, []() { emit Global::get().trayIcon->on_hideAction_triggered(); });
}
#endif

Global::get().talkingUI = new TalkingUI();

Expand Down Expand Up @@ -799,7 +813,7 @@ int main(int argc, char **argv) {
OpenURLEvent *oue = new OpenURLEvent(a.quLaunchURL);
qApp->postEvent(Global::get().mw, oue);
#endif
} else {
} else if (!startHiddenInTray || Global::get().s.bAutoConnect) {
Global::get().mw->on_qaServerConnect_triggered(true);
}

Expand Down
2 changes: 1 addition & 1 deletion src/mumble/widgets/TrayIcon.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@ void TrayIcon::on_showAction_triggered() {
}

void TrayIcon::on_hideAction_triggered() {
#ifndef Q_OS_MAC
if (!QSystemTrayIcon::isSystemTrayAvailable()) {
qDebug() << "Tray: Not available. Hide prevented...";
// The system reports that no system tray is available.
Expand All @@ -176,7 +177,6 @@ void TrayIcon::on_hideAction_triggered() {
return;
}

#ifndef Q_OS_MAC
qDebug() << "Tray: Hide window!";
Global::get().mw->hide();
#else
Expand Down

0 comments on commit dc5f487

Please sign in to comment.