From 2ba2e84ef06f1d98b99c86b8e77f7daa80d389b6 Mon Sep 17 00:00:00 2001 From: Florian Pritz Date: Thu, 11 Apr 2019 11:08:19 +0200 Subject: Add browser_launcher.pl Signed-off-by: Florian Pritz --- browser_launcher.pl | 53 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 browser_launcher.pl diff --git a/browser_launcher.pl b/browser_launcher.pl new file mode 100755 index 0000000..3bc2dfe --- /dev/null +++ b/browser_launcher.pl @@ -0,0 +1,53 @@ +#!/usr/bin/env perl + +=head1 DESCRIPTION + +Open an URL in different browsers depending on the URL. Play spotify URLs with +the spotify client. + +=cut + +use strict; +use warnings; +use autodie qw(:all); + +use Text::Template 'fill_in_string'; + +my $sites = { + 'youtube' => { + 'patterns' => [ + qr|^https://www.youtube.com|, + qr|^https://youtube.com|, + qr|^https://youtu.be|, + ], + 'command' => ['firefox', '{$url}'], + }, + 'spotify' => { + 'patterns' => [ + qr|^https://open\.spotify\.com/(?\w+)/(?\w+)?| + ], + 'command' => [ + 'dbus-send', '--print-reply', + '--dest=org.mpris.MediaPlayer2.spotify', + '/org/mpris/MediaPlayer2', + 'org.mpris.MediaPlayer2.Player.OpenUri', + 'string:spotify:{$group}:{$track}', + ], + }, +}; + +my $url_argument = $ARGV[0]; + +for my $key (keys $sites->%*) { + my $site = $sites->{$key}; + for my $pattern ($site->{patterns}->@*) { + if ($url_argument =~ m/$pattern/) { + my @cmd = $site->{command}->@*; + # template @cmd + @cmd = map {fill_in_string($_, HASH => {%+, url => $url_argument}) } @cmd; + exec(@cmd); + } + } +} + +exec $ENV{'REAL_BROWSER'} // 'firefox', $url_argument; -- cgit v1.2.3-24-g4f1b