Serenity Operating System
1/*
2 * Copyright (c) 2021, the SerenityOS developers.
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#include "TerminalSettingsWidget.h"
8#include <LibConfig/Client.h>
9#include <LibCore/ArgsParser.h>
10#include <LibCore/System.h>
11#include <LibGUI/Application.h>
12#include <LibGUI/ConnectionToWindowServer.h>
13#include <LibGUI/SettingsWindow.h>
14#include <LibMain/Main.h>
15
16ErrorOr<int> serenity_main(Main::Arguments arguments)
17{
18 TRY(Core::System::pledge("stdio rpath recvfd sendfd unix"));
19 auto app = TRY(GUI::Application::try_create(arguments));
20 Config::pledge_domain("Terminal");
21
22 StringView selected_tab;
23 Core::ArgsParser args_parser;
24 args_parser.add_option(selected_tab, "Tab, one of 'terminal' or 'view'", "open-tab", 't', "tab");
25 args_parser.parse(arguments);
26
27 TRY(Core::System::pledge("stdio rpath recvfd sendfd"));
28 TRY(Core::System::unveil("/res", "r"));
29 TRY(Core::System::unveil(nullptr, nullptr));
30
31 auto app_icon = GUI::Icon::default_icon("app-terminal"sv);
32
33 auto window = TRY(GUI::SettingsWindow::create("Terminal Settings"));
34 window->set_icon(app_icon.bitmap_for_size(16));
35 (void)TRY(window->add_tab<TerminalSettingsViewWidget>("View"sv, "view"sv));
36 (void)TRY(window->add_tab<TerminalSettingsMainWidget>("Terminal"sv, "terminal"sv));
37 window->set_active_tab(selected_tab);
38
39 window->show();
40 return app->exec();
41}