Compare commits

..

2 Commits

Author SHA1 Message Date
3dc2c24ec5
apps: Add run
Some checks failed
Build and test / build (push) Failing after 1m43s
This utility lets you run a process detached from the shell, using the magic of the launch server.
2024-03-20 19:58:45 +01:00
06b8a41d2f
launch: Add support for PATH searching 2024-03-20 19:57:43 +01:00
4 changed files with 38 additions and 1 deletions

View File

@ -51,3 +51,4 @@ luna_app(clock.cpp clock)
target_link_libraries(clock PUBLIC ui) target_link_libraries(clock PUBLIC ui)
luna_app(startui.cpp startui) luna_app(startui.cpp startui)
luna_app(launch.cpp launch) luna_app(launch.cpp launch)
luna_app(run.cpp run)

View File

@ -31,7 +31,7 @@ Result<void> handle_launch_detached_message(os::IPC::ClientConnection& client)
StringView args[] = { path.view() }; StringView args[] = { path.view() };
os::Process::spawn(args[0], { args, 1 }, false); os::Process::spawn(args[0], { args, 1 }, request.search_in_path);
return {}; return {};
} }

35
apps/run.cpp Normal file
View File

@ -0,0 +1,35 @@
/**
* @file run.cpp
* @author apio (cloudapio.eu)
* @brief Tiny command-line utility to start a detached program in the current GUI session.
*
* @copyright Copyright (c) 2024, the Luna authors.
*
*/
#include <os/ArgumentParser.h>
#include <os/File.h>
#include <os/LocalClient.h>
#include <os/ipc/Launcher.h>
Result<int> luna_main(int argc, char** argv)
{
StringView program;
os::ArgumentParser parser;
parser.add_description("Start a detached program in the current GUI session."_sv);
parser.add_system_program_info("run"_sv);
parser.add_positional_argument(program, "program", true);
parser.parse(argc, argv);
OwnedPtr<os::IPC::Client> launcher_client = TRY(os::IPC::Client::connect("/tmp/launch.sock", false));
os::println("Requesting to start program '%s'...", program.chars());
os::Launcher::LaunchDetachedRequest request;
SET_IPC_STRING(request.command, program.chars());
request.search_in_path = true;
launcher_client->send_async(request);
return 0;
}

View File

@ -25,6 +25,7 @@ namespace os
static constexpr u8 ID = LAUNCH_DETACHED_ID; static constexpr u8 ID = LAUNCH_DETACHED_ID;
IPC_STRING(command); IPC_STRING(command);
bool search_in_path { false };
}; };
} }
} }