summaryrefslogtreecommitdiff
path: root/Userland/Utilities/chres.cpp
blob: cb4617bf3cfe5ec186b2036182adbed2b69fb67a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
/*
 * Copyright (c) 2021, Nico Weber <thakis@chromium.org>
 *
 * SPDX-License-Identifier: BSD-2-Clause
 */

#include <LibCore/ArgsParser.h>
#include <LibGUI/Application.h>
#include <LibGUI/WindowServerConnection.h>

int main(int argc, char** argv)
{
    int width = -1;
    int height = -1;
    int scale = 1;

    Core::ArgsParser args_parser;
    args_parser.set_general_help("Change the screen resolution.");
    args_parser.add_positional_argument(width, "Width", "width");
    args_parser.add_positional_argument(height, "Height", "height");
    args_parser.add_positional_argument(scale, "Scale Factor", "scale", Core::ArgsParser::Required::No);
    args_parser.parse(argc, argv);

    // A Core::EventLoop is all we need, but WindowServerConnection needs a full Application object.
    char* dummy_argv[] = { argv[0] };
    auto app = GUI::Application::construct(1, dummy_argv);
    auto result = GUI::WindowServerConnection::the().set_resolution(Gfx::IntSize { width, height }, scale);
    if (!result.success()) {
        warnln("failed to set resolution");
        return 1;
    }
}