diff --git a/build/jam/images/definitions/minimum b/build/jam/images/definitions/minimum index d9b3abcded..5c291325e4 100644 --- a/build/jam/images/definitions/minimum +++ b/build/jam/images/definitions/minimum @@ -277,10 +277,6 @@ SEARCH on $(networkSettingsFiles) = [ FDirName $(HAIKU_TOP) data settings network ] ; AddFilesToHaikuImage system settings network : $(networkSettingsFiles) ; -local userLaunchScripts = user ; -SEARCH on $(userLaunchScripts) = [ FDirName $(HAIKU_TOP) data launch ] ; -AddFilesToHaikuImage home config non-packaged data launch : $(userLaunchScripts) ; - # fresh install indicator file for the post install scripts SEARCH on fresh_install = [ FDirName $(HAIKU_TOP) data system settings ] ; diff --git a/build/jam/packages/Haiku b/build/jam/packages/Haiku index 17ed2f8977..043f844165 100644 --- a/build/jam/packages/Haiku +++ b/build/jam/packages/Haiku @@ -132,6 +132,10 @@ local launchScripts = system ; SEARCH on $(launchScripts) = [ FDirName $(HAIKU_TOP) data launch ] ; AddFilesToPackage data launch : $(launchScripts) ; +local userLaunchScripts = user ; +SEARCH on $(userLaunchScripts) = [ FDirName $(HAIKU_TOP) data launch ] ; +AddFilesToPackage data user_launch : $(userLaunchScripts) ; + # post install scripts local postInstallFiles = add_catalog_entry_attributes.sh default_deskbar_items.sh ; diff --git a/src/servers/launch/LaunchDaemon.cpp b/src/servers/launch/LaunchDaemon.cpp index eb67e3e46f..efaa328d9d 100644 --- a/src/servers/launch/LaunchDaemon.cpp +++ b/src/servers/launch/LaunchDaemon.cpp @@ -50,6 +50,7 @@ using BSupportKit::BPrivate::JobQueue; static const char* kLaunchDirectory = "launch"; +static const char* kUserLaunchDirectory = "user_launch"; class Session { @@ -353,10 +354,23 @@ LaunchDaemon::ReadyToRun() _InitSystem(); BStringList paths; + if (fUserMode) { + // System-wide user specific jobs + BPathFinder::FindPaths(B_FIND_PATH_DATA_DIRECTORY, kUserLaunchDirectory, + B_FIND_PATHS_SYSTEM_ONLY, paths); + _ReadPaths(paths); + } + BPathFinder::FindPaths(B_FIND_PATH_DATA_DIRECTORY, kLaunchDirectory, fUserMode ? B_FIND_PATHS_USER_ONLY : B_FIND_PATHS_SYSTEM_ONLY, paths); _ReadPaths(paths); + if (fUserMode) { + BPathFinder::FindPaths(B_FIND_PATH_SETTINGS_DIRECTORY, + kUserLaunchDirectory, B_FIND_PATHS_SYSTEM_ONLY, paths); + _ReadPaths(paths); + } + BPathFinder::FindPaths(B_FIND_PATH_SETTINGS_DIRECTORY, kLaunchDirectory, fUserMode ? B_FIND_PATHS_USER_ONLY : B_FIND_PATHS_SYSTEM_ONLY, paths); _ReadPaths(paths);