/usr/share/doc/libgtk2-unique-perl/examples/sample.pl is in libgtk2-unique-perl 0.05-2ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 | #!/usr/bin/perl
use strict;
use warnings;
use Glib qw(TRUE FALSE);
use Gtk2 '-init';
use Gtk2::Unique;
use Encode;
use Data::Dumper;
my $COMMAND_WRITE = 1;
exit main();
sub main {
die "Usage: message\n" unless @ARGV;
my ($text) = @ARGV;
# If we want to pass UTF-8 text in the command line arguments
$text = decode('UTF-8', $text);
# As soon as we create the UniqueApp instance we either have the name we
# requested ("org.mydomain.MyApplication", in the example) or we don't because
# there already is an application using the same name.
my $app = Gtk2::UniqueApp->new(
"org.example.Sample", undef,
write => $COMMAND_WRITE,
);
# If there already is an instance running, this will return TRUE; there's no
# race condition because the check is already performed at construction time.
if ($app->is_running) {
my $response = $app->send_message_by_name(write => data => $text);
return 0;
}
# Create the single application instance and wait for other requests
my $window = create_application($app, $text);
Gtk2->main();
return 0;
}
#
# Called when the application needs to be created. This happens when there's no
# other instance running.
#
sub create_application {
my ($app, $text) = @_;
# Standard window and windgets
my $window = Gtk2::Window->new();
$window->set_title("Unique - Example");
$window->set_size_request(480, 240);
my $textview = Gtk2::TextView->new();
my $scroll = Gtk2::ScrolledWindow->new();
my $buffer = $textview->get_buffer;
$buffer->insert($buffer->get_end_iter, "$text\n");
# Widget packing
$scroll->add($textview);
$window->add($scroll);
$window->show_all();
# Widget signals
$window->signal_connect(delete_event => sub {
Gtk2->main_quit();
return TRUE;
});
# Listen for new commands
$app->watch_window($window);
$app->signal_connect('message-received' => sub {
my ($app, $command, $message, $time) = @_;
my $text = Dumper($message->get);
$buffer->insert($buffer->get_end_iter, "$text\n");
# Must return a "Gtk2::UniqueResponse"
return 'ok';
});
return $window;
}
|