if ($cache && defined($_cached_socket_path)) {
return $_cached_socket_path;
}
-
- my $atom = $x->atom(name => 'I3_SOCKET_PATH');
- my $cookie = $x->get_property(0, $x->get_root_window(), $atom->id, GET_PROPERTY_TYPE_ANY, 0, 256);
- my $reply = $x->get_property_reply($cookie->{sequence});
- my $socketpath = $reply->{value};
- if ($socketpath eq "/tmp/nested-$ENV{DISPLAY}") {
- $socketpath .= '-activation';
- }
+ my $socketpath = i3test::Util::get_socket_path($x);
$_cached_socket_path = $socketpath;
return $socketpath;
}
use warnings;
use v5.10;
+use X11::XCB qw(GET_PROPERTY_TYPE_ANY);
+use X11::XCB::Connection;
+
use Exporter qw(import);
our @EXPORT = qw(
slurp
+ get_socket_path
);
=encoding utf-8
return $content;
}
+=head2 get_socket_path([X11::XCB::Connection])
+
+Gets the socket path from the C<I3_SOCKET_PATH> atom stored on the X11 root
+window.
+
+=cut
+sub get_socket_path {
+ my ($x) = @_;
+ $x //= X11::XCB::Connection->new();
+ my $atom = $x->atom(name => 'I3_SOCKET_PATH');
+ my $cookie = $x->get_property(0, $x->get_root_window(), $atom->id, GET_PROPERTY_TYPE_ANY, 0, 256);
+ my $reply = $x->get_property_reply($cookie->{sequence});
+ my $socketpath = $reply->{value};
+ if ($socketpath eq "/tmp/nested-$ENV{DISPLAY}") {
+ $socketpath .= '-activation';
+ }
+ return $socketpath;
+}
+
=head1 AUTHOR
Michael Stapelberg <michael@i3wm.org>