diff options
author | Sean Whitton <spwhitton@spwhitton.name> | 2024-04-11 21:11:12 +0800 |
---|---|---|
committer | Sean Whitton <spwhitton@spwhitton.name> | 2024-04-11 21:11:15 +0800 |
commit | acad4445b81048140a7d658ac43f8a0a457750ad (patch) | |
tree | b7a5dc5d29bec34f95f6e9f2e0519ccaa44e8432 /perl5/Local/Desktop/WMIPC.pm | |
parent | db13b64fa0ab8c691bd8a2075612bac5d9568613 (diff) | |
download | dotfiles-acad4445b81048140a7d658ac43f8a0a457750ad.tar.gz |
i3status-wrapper: replace IPC::Shareable & Local::Desktop::WMIPC
Diffstat (limited to 'perl5/Local/Desktop/WMIPC.pm')
-rw-r--r-- | perl5/Local/Desktop/WMIPC.pm | 61 |
1 files changed, 0 insertions, 61 deletions
diff --git a/perl5/Local/Desktop/WMIPC.pm b/perl5/Local/Desktop/WMIPC.pm deleted file mode 100644 index effa7797..00000000 --- a/perl5/Local/Desktop/WMIPC.pm +++ /dev/null @@ -1,61 +0,0 @@ -package Local::Desktop::WMIPC; -use 5.036; - -# Copyright (C) 2024 Sean Whitton -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or (at -# your option) any later version. -# -# This program is distributed in the hope that it will be useful, but -# WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -# General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see <https://www.gnu.org/licenses/>. - -use IO::Socket::UNIX; -use parent "IO::Socket::UNIX"; -use Exporter "import"; -use overload "<>" => sub { shift->recv }; -use JSON; -use Encode "encode"; - -our @EXPORT_OK = (); - -sub new ($class, $socket = $ENV{SWAYSOCK} || $ENV{I3SOCK}) { - bless IO::Socket::UNIX->new(Type => SOCK_STREAM, Peer => $socket) - => $class; -} - -sub send ($self, $type, $payload = "") { - $payload = encode "UTF-8", $payload; - my $head = pack "A6ll", "i3-ipc", length $payload, $type; - $self->SUPER::send($head.$payload); - return $self->recv; -} - -sub recv ($self) { - my $buf; - $self->SUPER::recv($buf, 14); - length $buf or die "WMIPC socket EOF"; - my $len = (unpack "A6ll", $buf)[1]; - $self->SUPER::recv($buf, $len); - return decode_json $buf; -} - -sub subscribe ($self, @event_types) { - my $reply = $self->send(2, encode_json \@event_types); - $reply->{success} or die "WMIPC subscription failed"; -} - -sub cmd ($self, @cmds) { $self->send(0, join "; ", @cmds) } - -sub get_tree { shift->send(4) } -sub get_workspaces { shift->send(1) } - -sub send_tick ($self, $payload = "") { $self->send(10, $payload) } - -1; |