Pull to refresh

виджет кармы для awesome wm

Reading time 1 min
Views 1.4K
Сильно не пинайте, решил просто поделиться.
Пишем xml парсер, который вытягивет данные о карме и хабрасиле:
#!/usr/bin/perl

use XML::Simple;
use Net::HTTP;

my $s = Net::HTTP->new(Host => "habrahabr.ru") || die $@;
#поменяйте на свой username
$s->write_request(GET => "/api/profile/%username%/", 'User-Agent' => "Mozilla/5.0 (+http://www.reid.ru/freebsd/?page_id=15)");
my($code, $mess, %h) = $s->read_response_headers;

while (1) {
    my $buf;
    my $n = $s->read_entity_body($buf, 1024);
    die "read failed: $!" unless defined $n;
    last unless $n;
    $data = $buf;
}

my $s = XMLin($data);
$karm = $s->{karma};
$rating = $s->{rating};
print "$karm\/$rating";


В rc.lua пишем:
-- определяем виджет
karma_text = widget({ type = "textbox", align = "right" })
function get_karm()
 -- указываем путь к скрипту
 local karm =  awful.util.pread("~/.config/awesome/zoom/bin/karma")
 karma_text.text = "" .. setFg("#e8ef1b", karm) .. ""
end
...
-- указываем где он должен располагаться
mywibox[s].widgets = {
...
 karma_text
...
}
-- вызываем его при запуске awesome
get_karm()
-- и вызываем каждые 15 минут
awful.hooks.timer.register(900, function() get_karm() end)


Результат (для полноты показываю весь трей):
image

Внимательно ознакомьтесь с правилами API хабра.
Tags:
Hubs:
+4
Comments 2
Comments Comments 2

Articles