App-FirefoxMultiAccountContainersUtils

 view release on metacpan or  search on metacpan

lib/App/FirefoxMultiAccountContainersUtils.pm  view on Meta::CPAN

            schema => 'bool*',
        },
        urls => {
            'x.name.is_plural' => 1,
            'x.name.singular' => 'url',
            schema => ['array*', of=>'str*'],
            pos => 1,
            slurpy => 1,
        },
        extra_firefox_options_before => {
            summary => 'Additional options (arguments) to put before the URLs',
            schema => ['array*', of=>'str*'],
            cmdline_aliases => {'b'=>{}},
        },
        extra_firefox_options_after => {
            summary => 'Additional options (arguments) to put after the URLs',
            schema => ['array*', of=>'str*'],
            cmdline_aliases => {'a'=>{}},
        },
    },
    features => {
    },
    examples => [
        {
            summary => 'Open two URLs in a container called "mycontainer"',
            argv => [qw|mycontainer www.example.com www.example.com/url2|],
            test => 0,
            'x.doc.show_result' => 0,
        },
        {
            summary => 'If URL is not specified, will open a blank tab',
            argv => [qw|mycontainer|],
            test => 0,
            'x.doc.show_result' => 0,
        },
        {
            summary => 'Open URL in a new tab in a new window',
            argv => [qw|mycontainer www.example.com -b --new-window|],
            test => 0,
            'x.doc.show_result' => 0,
            description => <<'MARKDOWN',

This command passes the `--new-window` option to `firefox`.

MARKDOWN
        },
    ],
    links => [
        {url=>'prog:open-browser'},
    ],
};
sub open_firefox_container {
    require URI::Escape;

    my %args = @_;
    my $container = $args{container};

    my @urls;
    for my $url0 (@{ $args{urls} || ["about:blank"] }) {
        my $url = "ext+container:";
        $url .= "name=" . URI::Escape::uri_escape($container);
        $url .= "&url=" . URI::Escape::uri_escape($url0);
        push @urls, $url;
    }

    my @cmd = (
        "firefox",
        @{$args{extra_firefox_options_before} // []},
        ($args{new_window} ? ("--new-window") : ()),
        @urls,
        @{$args{extra_firefox_options_after} // []},
    );
    log_trace "Executing %s ...", \@cmd;
    exec @cmd;
    #[200]; # won't be reached
}

1;
# ABSTRACT: Utilities related to Firefox Multi-Account Containers add-on

__END__

=pod

=encoding UTF-8

=head1 NAME

App::FirefoxMultiAccountContainersUtils - Utilities related to Firefox Multi-Account Containers add-on

=head1 VERSION

This document describes version 0.019 of App::FirefoxMultiAccountContainersUtils (from Perl distribution App-FirefoxMultiAccountContainersUtils), released on 2026-03-25.

=head1 SYNOPSIS

=head1 DESCRIPTION

This distribution includes several utilities related to Firefox multi-account
containers addon:

=over

=item 1. L<firefox-container>

=item 2. L<firefox-mua-add-container>

=item 3. L<firefox-mua-dump-identities-json>

=item 4. L<firefox-mua-list-containers>

=item 5. L<firefox-mua-modify-containers>

=item 6. L<firefox-mua-sort-containers>

=item 7. L<open-firefox-container>

=back


About the add-on: L<https://addons.mozilla.org/en-US/firefox/addon/multi-account-containers/>.



( run in 0.343 second using v1.01-cache-2.11-cpan-e1769b4cff6 )