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 #3879
  • Loading branch information
Hartmnt committed Jan 2, 2025
1 parent 5f92420 commit 8941467
Showing 1 changed file with 16 additions and 3 deletions.
19 changes: 16 additions & 3 deletions src/mumble/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -201,6 +201,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 @@ -277,7 +278,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 @@ -404,6 +407,14 @@ int main(int argc, char **argv) {
qCritical("Missing argument for --locale!");
return 1;
}
} else if (args.at(i) == "--hidden") {
#ifndef Q_OS_MAC
startHiddenInTray = true;
qInfo("Starting hidden in system tray");
#else
// When Qt addresses hide() on macOS to use native hiding, this can be fixed.
qWarning("Can not start Mumble hidden in system tray on macOS");
#endif
} 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 @@ -674,7 +685,9 @@ 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().talkingUI = new TalkingUI();

Expand Down Expand Up @@ -789,7 +802,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

0 comments on commit 8941467

Please sign in to comment.