RAGS - v1.10.0
    Preparing search index...
    $ ags --help

    USAGE:
    ags [OPTIONS]

    OPTIONS:
    -h, --help Print this help and exit
    -v, --version Print version and exit
    -q, --quit Kill AGS
    -c, --config Path to the config file.
    -b, --bus-name Bus name of the process
    -i, --inspector Open up the Gtk debug tool
    -t, --toggle-window Show or hide a window
    -r, --run-js Execute string as an async function
    -f, --run-file Execute file as an async function
    --init Initialize the configuration directory
    --clear-cache Remove $HOME/.cache/ags

    It is possible to run multiple instances with --bus-name. It defaults to "ags". When an instance is running, executing ags is actually a client process that will try to connect to the instance with the specified bus name.

    ags # starts an instance with bus name "ags" 
    ags -i # opens up the inspector on the ags instance with bus name "ags"

    ags --bus-name test # starts an instance with bus name "test"
    ags -b test -i # opens the inspector on instance with bus name "test"

    ags --quit
    ags -b test --quit
    Tip

    The dbus name is com.github.Aylur.ags.<bus-name>, so the default one is com.github.Aylur.ags.ags

    --config defaults to $HOME/.config/ags/config.js

    # example
    ags --config $HOME/.config/some-dir/main.js

    --toggle-window is just there for the sake of it, if you want to have more control use --run-js

    # example
    ags --toggle-window "bar"

    With --run-js it is possible to execute code when ags is already running. It is useful for: calling Service methods, updating Variable values, debugging or anything else. --run-js expects a string which will be the body of an async function executed relative to app.ts.

    If there is no ; character in the string, return keyword will be inserted automatically

    ags -r "'hello'" # prints hello
    ags -r "'hello';" # prints undefined
    ags -r "return 'hello';" # prints hello

    print will print on the client side, console.log and other console methods will log on the main process's stdout

    ags -r "print('hello')" # prints "hello undefined"
    ags -r "console.log('hello')" # prints "undefined"

    --run-file reads the content of a file and passes it to --run-js

    # these two are equivalent 
    ags --run-file /path/to/file.js
    ags --run-js "$(cat /path/to/file.js)"

    It is useful for shebangs

    #!/usr/bin/env -S ags --run-file
    return "hello from a file";
    Note

    Since --run-js is the body of a function, you can't use top level static imports

    Important

    The function gets executed relative to app.ts, which means importing a module from your config needs a full path.

    this throws

    #!/usr/bin/env -S ags --run-file
    import Module from "file:///path/to/file.js"; // throws

    You can use import as an async method

    #!/usr/bin/env -S ags --run-file
    const Module = (await import("file:///path/to/file.js")).default;

    Let's say you have a Variable in $HOME/.config/ags/vars.js that you want set from cli.

    // vars.js
    export const myVar = Variable(0);

    You can import this module and access this variable

    ags -r "(await import('file://$HOME/.config/ags/vars.js')).myVar++"
    

    Your can make myVar global, to avoid writing out the import statement

    // vars.js
    export const myVar = Variable(0);
    globalThis.myVar = myVar;
    ags -r "myVar++"