Add .gitignore and make use of English
This commit is contained in:
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
.idea/**
|
||||||
|
.vscode/**
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
severity = 5
|
severity = 5
|
||||||
verbose = 8
|
verbose = 8
|
||||||
|
|
||||||
[-Variables::ProhibitPunctuationVars]
|
|
||||||
[-ControlStructures::ProhibitUnlessBlocks]
|
[-ControlStructures::ProhibitUnlessBlocks]
|
||||||
[-Variables::RequireLocalizedPunctuationVars]
|
[-Variables::RequireLocalizedPunctuationVars]
|
||||||
[-Subroutines::ProhibitSubroutinePrototypes]
|
[-Subroutines::ProhibitSubroutinePrototypes]
|
||||||
|
|||||||
@@ -17,11 +17,11 @@
|
|||||||
* Температуру процессора (одно ядро, указывается файл-источник сведений)
|
* Температуру процессора (одно ядро, указывается файл-источник сведений)
|
||||||
* Состояние клавиши CapsLock
|
* Состояние клавиши CapsLock
|
||||||
* Состояние одного интерфейса VPN (+ tcp health check, т.к. ovpn, например, умеет "залипать")
|
* Состояние одного интерфейса VPN (+ tcp health check, т.к. ovpn, например, умеет "залипать")
|
||||||
* Уровень звука согласно pulse audio для default sink (придумывать "крутилочку" для звука я не стал, ибо там не всё так просто и "в процессе" fun скорее всего пропадёт.). Предполагается, что звук управляется через что-то ещё, например, через какой-нибудь pasystray, например.
|
* Уровень звука согласно pulse audio для default sink (придумывать "крутилочку" для звука я не стал, ибо там не всё так просто и "в процессе" fun скорее всего пропадёт). Предполагается, что звук управляется через что-то ещё, например, через какой-нибудь pasystray.
|
||||||
* Состояние (up|down) любого набора существующих сетевых интерфейсов. Но каждый надо описать. IP не показываются, т.к. это сжирает место на панели, а его не так-то и много.
|
* Состояние (up|down) любого набора существующих сетевых интерфейсов. Но каждый надо описать. IP не показываются, т.к. это сжирает место на панели, а его не так-то и много.
|
||||||
* "Кнопки" для запуска произвольных приложений. Собственно, ради этого всё и затевалось :)
|
* "Кнопки" для запуска произвольных приложений. Собственно, ради этого всё и затевалось :)
|
||||||
* "Трекать" запуск приложений "с кнопки" и подсвечивать соответствующую "кнопку". Работает через ивенты от самого i3: на появление и на исчезновения окна с рядом свойств.
|
* "Трекать" запуск приложений "с кнопки" и подсвечивать соответствующую "кнопку". Работает через ивенты от самого i3: на появление и на исчезновения окна с рядом свойств.
|
||||||
* Cron! Как ни забавно это звучит, но, да. И нужен он для показывания desktop notifications, ибо системный cron не прокидывает в environment переменную с текущим dbus session. Но в этот крон можно пихнуть что угодно.
|
* Cron! Как ни забавно это звучит, но, да. И нужен он для показывания desktop notifications, ибо системный cron не прокидывает в environment переменную с текущим dbus session. Но в этот крон можно пихнуть что угодно, т.к. он запукается уже после старта dbus.
|
||||||
|
|
||||||
## Как это заставить работать
|
## Как это заставить работать
|
||||||
|
|
||||||
|
|||||||
8
TODO
8
TODO
@@ -1,11 +1,3 @@
|
|||||||
Что желательно сделать ещё.
|
Что желательно сделать ещё.
|
||||||
|
|
||||||
* При рестарте i3wm (рестарте скрипта), восстанавливать список запущенных окон.
|
* При рестарте i3wm (рестарте скрипта), восстанавливать список запущенных окон.
|
||||||
|
|
||||||
* Добавить в battery plugin отслеживание уровня заряда. Раскрашивать вывод.
|
|
||||||
Опционально звать suspend2disk, при очень низком заряде
|
|
||||||
|
|
||||||
* Добавить "крутилку" в плагин, отображающий громкость :)
|
|
||||||
|
|
||||||
* Применить Use English и использовать человекочитаемые имена встроенных
|
|
||||||
переменных.
|
|
||||||
|
|||||||
@@ -2,12 +2,14 @@
|
|||||||
|
|
||||||
use strict;
|
use strict;
|
||||||
use warnings;
|
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
|
# we need to disable hash shuffling in order to make as less prints to stdout as possible
|
||||||
BEGIN {
|
BEGIN {
|
||||||
unless (defined $ENV{PERL_PERTURB_KEYS}) {
|
unless (defined $ENV{PERL_PERTURB_KEYS}) {
|
||||||
$ENV{PERL_PERTURB_KEYS} = 0;
|
$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
|
exit 0; # we actually never get here
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -25,7 +27,7 @@ use Encode;
|
|||||||
use IO::Socket qw (AF_INET SOCK_STREAM SHUT_WR);
|
use IO::Socket qw (AF_INET SOCK_STREAM SHUT_WR);
|
||||||
use POSIX qw (setsid);
|
use POSIX qw (setsid);
|
||||||
|
|
||||||
local $| = 1;
|
local $OUTPUT_AUTOFLUSH = 1;
|
||||||
|
|
||||||
sub add_events ();
|
sub add_events ();
|
||||||
sub spawn (@);
|
sub spawn (@);
|
||||||
@@ -208,7 +210,7 @@ sub add_events () {
|
|||||||
if (defined $output_string) {
|
if (defined $output_string) {
|
||||||
print {*STDOUT} decode ('UTF-8', $output_string) . ",\n";
|
print {*STDOUT} decode ('UTF-8', $output_string) . ",\n";
|
||||||
} else {
|
} else {
|
||||||
warn $@;
|
warn $EVAL_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
$UPDATE = 0;
|
$UPDATE = 0;
|
||||||
@@ -292,7 +294,7 @@ sub add_events () {
|
|||||||
my $xset = `xset q`;
|
my $xset = `xset q`;
|
||||||
$xsetflag = 1;
|
$xsetflag = 1;
|
||||||
|
|
||||||
if ($?) {
|
if ($CHILD_ERROR) {
|
||||||
# some kind of error, so we assume that we cannot update caps lock status
|
# some kind of error, so we assume that we cannot update caps lock status
|
||||||
$caps_state = 2;
|
$caps_state = 2;
|
||||||
} else {
|
} else {
|
||||||
@@ -391,7 +393,7 @@ sub add_events () {
|
|||||||
my @up;
|
my @up;
|
||||||
my $str = `upower -i $CONF->{battery}->{upower_device}`;
|
my $str = `upower -i $CONF->{battery}->{upower_device}`;
|
||||||
|
|
||||||
if ($?) {
|
if ($CHILD_ERROR) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -712,7 +714,7 @@ sub add_events () {
|
|||||||
cb => sub { # the callback to invoke
|
cb => sub { # the callback to invoke
|
||||||
my $pactl = `LC_ALL=C pactl list sinks`;
|
my $pactl = `LC_ALL=C pactl list sinks`;
|
||||||
|
|
||||||
if ($?) {
|
if ($CHILD_ERROR) {
|
||||||
# we've some error here, so quit further processing
|
# we've some error here, so quit further processing
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -801,7 +803,7 @@ sub add_events () {
|
|||||||
my $timeskew = $TC - time ();
|
my $timeskew = $TC - time ();
|
||||||
|
|
||||||
if (($timeskew > 60) || ($timeskew < -60)) {
|
if (($timeskew > 60) || ($timeskew < -60)) {
|
||||||
kill 'HUP', $$;
|
kill 'HUP', $PROCESS_ID;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
@@ -894,7 +896,7 @@ sub readconf () {
|
|||||||
my $FH;
|
my $FH;
|
||||||
|
|
||||||
unless (open $FH, '<', $file) {
|
unless (open $FH, '<', $file) {
|
||||||
die "Unable to open $file: $!\n";
|
die "Unable to open $file: $OS_ERROR\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
my $len = (stat $file)[7];
|
my $len = (stat $file)[7];
|
||||||
@@ -905,7 +907,7 @@ sub readconf () {
|
|||||||
close $FH;
|
close $FH;
|
||||||
|
|
||||||
unless (defined $readlen) {
|
unless (defined $readlen) {
|
||||||
die "Unable to read $file: $!\n";
|
die "Unable to read $file: $OS_ERROR\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($readlen != $len) {
|
if ($readlen != $len) {
|
||||||
@@ -915,7 +917,7 @@ sub readconf () {
|
|||||||
my $config = eval { JSON::XS->new->utf8->relaxed->decode ($data) };
|
my $config = eval { JSON::XS->new->utf8->relaxed->decode ($data) };
|
||||||
|
|
||||||
unless ($config) {
|
unless ($config) {
|
||||||
die "Unable to decode $file: $@\n";
|
die "Unable to decode $file: $EVAL_ERROR\n";
|
||||||
}
|
}
|
||||||
|
|
||||||
return $config;
|
return $config;
|
||||||
|
|||||||
Reference in New Issue
Block a user