Статистика
Сегодня: 28 Онлайн: 3
Опрос

Помог ли наш сайт решить Вашу проблему?

View Results

Загрузка ... Загрузка ...

Друзья и коллеги

Технология жизни - технология будущего

#Записки сисадмина

Denis Tulyakov

PostHeaderIcon Google календарь во FreeBSD

Стал я пользоваться Google calendar, потому-что удобно, он всегда в кармане в телефоне и даже на windows календарь умеет туда смотреть и напоминать всякое. Собственно, эта вот штука во вражеской ОС и натолкнула меня на хотение чего-нибудь такого же на FreeBSD. Поскакав по портам, нашел /usr/ports/gcalcli — забавная штука, выводящая календарь в консоль. После установки доступна масса команд, например: — gcalcli calw Nx, где Nx — количество недель (gcalcli calw 2 выведет две ближайшие недели); gcalcli calm — выводит месяц; gcalcli remind Nx (Nx — количество минут) оповестит о предстоящих в ближайшие Nx минут делах, о этом позднее.
Собственно, устанавливаем, запускаем gcalcli, при первом запуске он откроет нам браузер с входом в аккаунт google, где надо авторизоваться и разрешить ему доступ к календарю. Дальше начинаем работать.

Но нам же неинтересно все время тыкать в консоли gcalcli, на это дело на само надо напоминалку настраивать. Поэтому будем выводить календарь прямо на рабочий стол, а напоминания слать через стандартный протокол notify.
Первое — ставим /usr/ports/sysutils/conky , замечательную утилитку, умеющую выводить всякую информацию поверх рабочего стола. После ее установки, кстати, в /usr/local/share/examples/conky/ есть замечательный conky.conf, который рисует вполне пристойный систем-монитор. Собственно, перелопатив его немного, я получил вот такой конфиг для своего календаря:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
conky.config = {
    alignment = 'top_right',
    background = false,
    border_width = 0,
    cpu_avg_samples = 2,
        default_color = 'white',
    default_outline_color = 'white',
    default_shade_color = 'white',
    draw_borders = false,
    draw_graph_borders = true,
    draw_outline = false,
    draw_shades = false,
    use_xft = true,
    font = 'DejaVu Sans Mono:size=12',
    gap_x = 5,
    gap_y = 60,
    minimum_height = 5,
        minimum_width = 5,
    net_avg_samples = 2,
    double_buffer = true,
    out_to_console = false,
    out_to_stderr = false,
        extra_newline = false,
    own_window = true,
    own_window_class = 'Conky',
    own_window_type = 'desktop',
    own_window_transparent = true,
    own_window_hints = 'undecorated,below,sticky,skip_taskbar,skip_pager',
    stippled_borders = 0,
    update_interval = 1.0,
    uppercase = false,
    use_spacer = 'none',
    show_graph_scale = false,
    show_graph_range = false,
    text_buffer_size = 8096,
    override_utf8_locale = yes
}

conky.text = [[
${execi 300 gcalcli --military --nocolor --nolineart calw 2}
]]

Все описывать не буду, достаточно очевидно, но несоклько замечаний:
double_buffer = true — без этого вывод пртивно мерцает раз в секунду.
${execi 300 gcalcli —nocolor —nolineart calw 2}:
—nocolor нужна для того, чтобы не выводились коды цветов, conky этого не понимает, и даже если использовать ключ —conky, который есть у gcalcli, все равно выводит коды, вместо цветов, на экране не четкая табличка, а бардак.
—nolineart — для тех, кто использует системную кодировку UTF-8, а у меня именно она. Без этого ключа вместо линий таблицы рисуется лютый капец.
—military не обязателен, включает двадцатичетырехчасовое представление времени.
Теперь надо просто запустить conky и радоваться календарю поверх обоев рабочего стола. Можно запускать вручную, можно настроить автозапуск. У меня fluxbox, поэтому в ~/.fluxbox/startup добавил

1
/usr/local/bin/conky &

Теперь, что касается всплывающих напоминалок:
ставим

1
2
3
/usr/ports/devel/libnotify
/usr/ports/deskutils/notification-daemon
/usr/ports/deskutils/notify-osd

Собственно, из libnotify нам нужна notify-send, которую использует gcalcli remind, чтобы эти нотификации ловить нужен notification-daemon, который запускаем со стартом FluxBox

В ~/.fluxbox/startup добавляем перед conky

1
/usr/local/libexec/notification-daemon &

В документации советуют добавить в crontab

*/10 * * * * username gcalcli remind

Однако, у меня не взлетело. Вместо оповещалок в лог вываливается ошибка питона, сводящаяяся к тому, что второй аргумент скрипта должен быть строкой. Думаю, причина в связке python2x и UTF-8. Благо, в доументации есть пример шеллскрипта, который делает то же самое. Я поместил его в .xinitrc перед запуском vm, как это и советуют:

1
2
3
4
5
6
if [ -x /usr/local/bin/gcalcli ]; then
  while true; do
    /usr/local/bin/gcalcli --military remind
    sleep 300
  done &
fi

Выглядит все это вот так:

Google calendar in FreeBSD

Google календарь на рабочем столе FreeBSD

PS Собственно, у gcalcli много аргументов интересных, выводятся с помощью gcalcli —h, или смотрим /usr/local/share/doc/gcalcli/README.md, там и добавлять события можно, и редактировать, и искать, но лично мне уже это проще в веб-версии делать.

Оставить комментарий

PR-CY.ru