diff --git a/Base/usr/share/man/man1/Inspector.md b/Base/usr/share/man/man1/Inspector.md new file mode 100644 index 0000000000..f3166147d2 --- /dev/null +++ b/Base/usr/share/man/man1/Inspector.md @@ -0,0 +1,25 @@ +## Name + +Inspector - Serenity process inspector + +## Synopsis + +```**sh +$ Inspector [pid] +``` + +## Description + +Inspector facilitates process inspection via RPC. + +The inspected process must have previously allowed the +[`accept`(2)](../man2/accept.md) system call with +[`pledge`(2)](../man2/pledge.md) to allow inspection +via UNIX socket. + +## Examples + +```sh +$ Inspector $(pidof Shell) +``` + diff --git a/Userland/DevTools/Inspector/CMakeLists.txt b/Userland/DevTools/Inspector/CMakeLists.txt index dd980cec99..e7735b5ea3 100644 --- a/Userland/DevTools/Inspector/CMakeLists.txt +++ b/Userland/DevTools/Inspector/CMakeLists.txt @@ -7,4 +7,4 @@ set(SOURCES ) serenity_app(Inspector ICON app-inspector) -target_link_libraries(Inspector LibGUI) +target_link_libraries(Inspector LibDesktop LibGUI) diff --git a/Userland/DevTools/Inspector/main.cpp b/Userland/DevTools/Inspector/main.cpp index b3234f536a..46f7e411b4 100644 --- a/Userland/DevTools/Inspector/main.cpp +++ b/Userland/DevTools/Inspector/main.cpp @@ -28,7 +28,9 @@ #include "RemoteObjectGraphModel.h" #include "RemoteObjectPropertyModel.h" #include "RemoteProcess.h" +#include #include +#include #include #include #include @@ -101,6 +103,14 @@ int main(int argc, char** argv) auto window = GUI::Window::construct(); + if (!Desktop::Launcher::add_allowed_handler_with_only_specific_urls( + "/bin/Help", + { URL::create_with_file_protocol("/usr/share/man/man1/Inspector.md") }) + || !Desktop::Launcher::seal_allowlist()) { + warnln("Failed to set up allowed launch URLs"); + return 1; + } + auto all_processes = Core::ProcessStatisticsReader::get_all(); for (auto& it : all_processes.value()) { if (it.value.pid != pid) @@ -123,6 +133,9 @@ int main(int argc, char** argv) app_menu.add_action(GUI::CommonActions::make_quit_action([&](auto&) { app->quit(); })); auto& help_menu = menubar->add_menu("Help"); + help_menu.add_action(GUI::CommonActions::make_help_action([](auto&) { + Desktop::Launcher::open(URL::create_with_file_protocol("/usr/share/man/man1/Inspector.md"), "/bin/Help"); + })); help_menu.add_action(GUI::CommonActions::make_about_action("Inspector", app_icon, window)); auto& widget = window->set_main_widget();