From 145a0c75386fb58cb9e8b4f2940254b94fd83526 Mon Sep 17 00:00:00 2001 From: Marcus Tillmanns Date: Tue, 31 Oct 2023 15:40:45 +0100 Subject: [PATCH] ScreenRecorder: Add additional search paths Adds a function FileUtils::usefullExtraSearchPaths() that returns OS specific paths that often are not in PATH by default, but contain useful apps we want to find. Change-Id: Ideb7c45b241c69c9f2db8f75726bb63249000a5f Reviewed-by: Alessandro Portale --- src/libs/utils/fileutils.cpp | 15 +++++++++++++++ src/libs/utils/fileutils.h | 3 +++ .../screenrecorder/screenrecordersettings.cpp | 10 ++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/libs/utils/fileutils.cpp b/src/libs/utils/fileutils.cpp index fdae7c6b8d8..3d8f074962e 100644 --- a/src/libs/utils/fileutils.cpp +++ b/src/libs/utils/fileutils.cpp @@ -6,6 +6,7 @@ #include "algorithm.h" #include "devicefileaccess.h" +#include "environment.h" #include "qtcassert.h" #include "utilstr.h" @@ -843,4 +844,18 @@ qint64 FileUtils::bytesAvailableFromDFOutput(const QByteArray &dfOutput) return -1; } +FilePaths FileUtils::usefulExtraSearchPaths() +{ + if (HostOsInfo::isMacHost()) { + return {"/opt/homebrew/bin"}; + } else if (HostOsInfo::isWindowsHost()) { + const QString programData = + qtcEnvironmentVariable("ProgramData", + qtcEnvironmentVariable("ALLUSERSPROFILE", "C:/ProgramData")); + return {FilePath::fromUserInput(programData) / "chocolatey/bin"}; + } + + return {}; +} + } // namespace Utils diff --git a/src/libs/utils/fileutils.h b/src/libs/utils/fileutils.h index a1a7ffef977..316030b0397 100644 --- a/src/libs/utils/fileutils.h +++ b/src/libs/utils/fileutils.h @@ -85,6 +85,9 @@ public: static FilePathInfo filePathInfoFromTriple(const QString &infos, int modeBase); + //! Returns known paths like /opt/homebrew on macOS that might not be in PATH + static FilePaths usefulExtraSearchPaths(); + #ifdef QT_WIDGETS_LIB static void setDialogParentGetter(const std::function &getter); diff --git a/src/plugins/screenrecorder/screenrecordersettings.cpp b/src/plugins/screenrecorder/screenrecordersettings.cpp index 2d492af2509..cc00f6da065 100644 --- a/src/plugins/screenrecorder/screenrecordersettings.cpp +++ b/src/plugins/screenrecorder/screenrecordersettings.cpp @@ -54,16 +54,18 @@ ScreenRecorderSettings::ScreenRecorderSettings() ffmpegTool.setSettingsKey("FFmpegTool"); ffmpegTool.setExpectedKind(PathChooser::ExistingCommand); ffmpegTool.setCommandVersionArguments(versionArgs); - const FilePath ffmpegDefault = - Environment::systemEnvironment().searchInPath(Constants::FFMPEG_COMMAND); + const FilePath ffmpegDefault + = Environment::systemEnvironment().searchInPath(Constants::FFMPEG_COMMAND, + FileUtils::usefulExtraSearchPaths()); ffmpegTool.setDefaultValue(ffmpegDefault.toUserOutput()); ffmpegTool.setLabelText(Tr::tr("ffmpeg tool:")); ffprobeTool.setSettingsKey("FFprobeTool"); ffprobeTool.setExpectedKind(PathChooser::ExistingCommand); ffprobeTool.setCommandVersionArguments(versionArgs); - const FilePath ffprobeDefault = - Environment::systemEnvironment().searchInPath(Constants::FFPROBE_COMMAND); + const FilePath ffprobeDefault + = Environment::systemEnvironment().searchInPath(Constants::FFPROBE_COMMAND, + FileUtils::usefulExtraSearchPaths()); ffprobeTool.setDefaultValue(ffprobeDefault.toUserOutput()); ffprobeTool.setLabelText(Tr::tr("ffprobe tool:"));