From 2a33b7a4f302f4bf81580f5a97a83136ecd5c463 Mon Sep 17 00:00:00 2001 From: eleksir Date: Sun, 31 Oct 2021 21:04:53 +0300 Subject: [PATCH] Add .gitignore and make use of English --- .gitignore | 2 ++ .perlcriticrc | 1 - README.md | 4 ++-- TODO | 8 -------- i3status-anyevent | 22 ++++++++++++---------- 5 files changed, 16 insertions(+), 21 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..cfefc09 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.idea/** +.vscode/** diff --git a/.perlcriticrc b/.perlcriticrc index 73d19c2..aafd204 100644 --- a/.perlcriticrc +++ b/.perlcriticrc @@ -2,7 +2,6 @@ severity = 5 verbose = 8 -[-Variables::ProhibitPunctuationVars] [-ControlStructures::ProhibitUnlessBlocks] [-Variables::RequireLocalizedPunctuationVars] [-Subroutines::ProhibitSubroutinePrototypes] diff --git a/README.md b/README.md index c251b81..f1c58a2 100644 --- a/README.md +++ b/README.md @@ -17,11 +17,11 @@ * Температуру процессора (одно ядро, указывается файл-источник сведений) * Состояние клавиши CapsLock * Состояние одного интерфейса VPN (+ tcp health check, т.к. ovpn, например, умеет "залипать") -* Уровень звука согласно pulse audio для default sink (придумывать "крутилочку" для звука я не стал, ибо там не всё так просто и "в процессе" fun скорее всего пропадёт.). Предполагается, что звук управляется через что-то ещё, например, через какой-нибудь pasystray, например. +* Уровень звука согласно pulse audio для default sink (придумывать "крутилочку" для звука я не стал, ибо там не всё так просто и "в процессе" fun скорее всего пропадёт). Предполагается, что звук управляется через что-то ещё, например, через какой-нибудь pasystray. * Состояние (up|down) любого набора существующих сетевых интерфейсов. Но каждый надо описать. IP не показываются, т.к. это сжирает место на панели, а его не так-то и много. * "Кнопки" для запуска произвольных приложений. Собственно, ради этого всё и затевалось :) * "Трекать" запуск приложений "с кнопки" и подсвечивать соответствующую "кнопку". Работает через ивенты от самого i3: на появление и на исчезновения окна с рядом свойств. -* Cron! Как ни забавно это звучит, но, да. И нужен он для показывания desktop notifications, ибо системный cron не прокидывает в environment переменную с текущим dbus session. Но в этот крон можно пихнуть что угодно. +* Cron! Как ни забавно это звучит, но, да. И нужен он для показывания desktop notifications, ибо системный cron не прокидывает в environment переменную с текущим dbus session. Но в этот крон можно пихнуть что угодно, т.к. он запукается уже после старта dbus. ## Как это заставить работать diff --git a/TODO b/TODO index b4ef420..504a5d9 100644 --- a/TODO +++ b/TODO @@ -1,11 +1,3 @@ Что желательно сделать ещё. * При рестарте i3wm (рестарте скрипта), восстанавливать список запущенных окон. - -* Добавить в battery plugin отслеживание уровня заряда. Раскрашивать вывод. - Опционально звать suspend2disk, при очень низком заряде - -* Добавить "крутилку" в плагин, отображающий громкость :) - -* Применить Use English и использовать человекочитаемые имена встроенных - переменных. diff --git a/i3status-anyevent b/i3status-anyevent index 7dc0ba3..bf8ddd8 100644 --- a/i3status-anyevent +++ b/i3status-anyevent @@ -2,12 +2,14 @@ use strict; use warnings; +use English qw ( -no_match_vars ); # we need to disable hash shuffling in order to make as less prints to stdout as possible BEGIN { unless (defined $ENV{PERL_PERTURB_KEYS}) { $ENV{PERL_PERTURB_KEYS} = 0; - exec ( $^X, $0, @ARGV ); + $ENV{PERL_ANYEVENT_MODEL} = 'EV'; + exec ( $EXECUTABLE_NAME, $PROGRAM_NAME, @ARGV ); exit 0; # we actually never get here } } @@ -25,7 +27,7 @@ use Encode; use IO::Socket qw (AF_INET SOCK_STREAM SHUT_WR); use POSIX qw (setsid); -local $| = 1; +local $OUTPUT_AUTOFLUSH = 1; sub add_events (); sub spawn (@); @@ -208,7 +210,7 @@ sub add_events () { if (defined $output_string) { print {*STDOUT} decode ('UTF-8', $output_string) . ",\n"; } else { - warn $@; + warn $EVAL_ERROR; } $UPDATE = 0; @@ -292,7 +294,7 @@ sub add_events () { my $xset = `xset q`; $xsetflag = 1; - if ($?) { + if ($CHILD_ERROR) { # some kind of error, so we assume that we cannot update caps lock status $caps_state = 2; } else { @@ -391,7 +393,7 @@ sub add_events () { my @up; my $str = `upower -i $CONF->{battery}->{upower_device}`; - if ($?) { + if ($CHILD_ERROR) { return; } @@ -712,7 +714,7 @@ sub add_events () { cb => sub { # the callback to invoke my $pactl = `LC_ALL=C pactl list sinks`; - if ($?) { + if ($CHILD_ERROR) { # we've some error here, so quit further processing return; } @@ -801,7 +803,7 @@ sub add_events () { my $timeskew = $TC - time (); if (($timeskew > 60) || ($timeskew < -60)) { - kill 'HUP', $$; + kill 'HUP', $PROCESS_ID; } } ); @@ -894,7 +896,7 @@ sub readconf () { my $FH; unless (open $FH, '<', $file) { - die "Unable to open $file: $!\n"; + die "Unable to open $file: $OS_ERROR\n"; } my $len = (stat $file)[7]; @@ -905,7 +907,7 @@ sub readconf () { close $FH; unless (defined $readlen) { - die "Unable to read $file: $!\n"; + die "Unable to read $file: $OS_ERROR\n"; } if ($readlen != $len) { @@ -915,7 +917,7 @@ sub readconf () { my $config = eval { JSON::XS->new->utf8->relaxed->decode ($data) }; unless ($config) { - die "Unable to decode $file: $@\n"; + die "Unable to decode $file: $EVAL_ERROR\n"; } return $config;