jinliu / kdotool

xdotool-like for KDE Wayland
Apache License 2.0
90 stars 6 forks source link

Commands generate KWin scripts but always return OS error 2 #11

Open kimi-builds opened 1 month ago

kimi-builds commented 1 month ago

./kdotool --debug get_desktop

[2024-05-18T19:47:35Z DEBUG kdotool] ===== Generate KWin script ===== [2024-05-18T19:47:35Z DEBUG kdotool] Script: print("kdotool-wEHTOJ START");

function output_debug(message) {
    print("kdotool-wEHTOJ DEBUG", message);
    callDBus(":1.399", "/", "", "debug", message.toString());
}

function output_error(message) {
    print("kdotool-wEHTOJ ERROR", message);
    callDBus(":1.399", "/", "", "error", message.toString());
}

function output_result(message) {
    if (message == null) {
        print("kdotool-wEHTOJ RESULT null");
        return;
    }
    print("kdotool-wEHTOJ RESULT", message);
    callDBus(":1.399", "/", "", "result", message.toString());
}

workspace_windowList                  = () => workspace.windowList();
workspace_activeWindow                = () => workspace.activeWindow;
workspace_setActiveWindow             = (window) => { workspace.activeWindow = window; };
workspace_raiseWindow                 = (window) => { workspace.raiseWindow(window); };
workspace_currentDesktop              = () => workspace.currentDesktop.x11DesktopNumber;
workspace_setCurrentDesktop           = (id) => {
    let d = workspace.desktops.find((d) => d.x11DesktopNumber == id);
    if (d) {
        workspace.currentDesktop = d;
    } else {
        output_error(`Invalid desktop number ${id}`);
    }
};
workspace_numDesktops                 = () => workspace.desktops.length;
workspace_setNumDesktops              = (n) => { output_error("`set_num_desktops` unsupported in KDE 6"); };
window_x11DesktopIds                  = (window) => window.desktops.map((d) => d.x11DesktopNumber);
window_setX11DesktopId                = (window, id) => {
    let d = workspace.desktops.find((d) => d.x11DesktopNumber == id);
    if (d) {
        window.desktops = [d];
    } else {
        output_error(`Invalid desktop number ${id}`);
    }
};
window_screen                         = (window) => { output_error("`search --screen` unsupported in KDE 6"); };

function run() {
    var window_stack = [];

    output_debug("STEP get_desktop")
    output_result(workspace_currentDesktop());

}

run();

print("kdotool-wEHTOJ FINISH");

[2024-05-18T19:47:35Z DEBUG kdotool] ===== Load script into KWin ===== [2024-05-18T19:47:35Z DEBUG kdotool] Script ID: 0 [2024-05-18T19:47:35Z DEBUG kdotool] ===== Run script ===== [2024-05-18T19:47:35Z DEBUG kdotool] dbus message: Message { Type: MethodCall, Path: "/", Member: "debug", Sender: ":1.10", Destination: ":1.399", Serial: 3811, Args: ["STEP get_desktop"] } [2024-05-18T19:47:35Z DEBUG kdotool] dbus message: Message { Type: MethodCall, Path: "/", Member: "result", Sender: ":1.10", Destination: ":1.399", Serial: 3812, Args: ["1"] } Error: No such file or directory (os error 2)

jinliu commented 1 month ago

kdotool calls journalctl from systemd to fetch debug logs. So if you are not using systemd, it will fail. I'll add a test to handle this scenario.

Thanks for reporting this.