LINUX.ORG.RU

Простой планировщик с календарем на bash и скриптами для Conky

 , , ,


4

3

Вдохновившись скриншотом из галереи http://www.linux.org.ru/gallery/screenshots/7766438 написал простенький планировщик с календарем и заметками на bash. Заметки хранятся в простом текстовом файле .plans.txt в домашнем каталоге пользователя. Выгядит так: http://habrastorage.org/storage2/7cd/292/c6a/7cd292c6a50cd1bf3fb01db15f7dca2b.png

Описание скриптов:

plan.sh - добавляет заметку в базу.

./plan.sh ДАТА ГРУППА ТЕКСТ
ДАТА — любое обозначение даты, которое поймет команда date. Например: «20120523», «2012-05-23», «05/23/2012» или даже «+1 month» — установит дату на месяц спустя от сегодняшнего дня.

ГРУППА — недлинное обозначение группы, к которой принадлежит заметка. Писать можно что угодно, я использую misc, fmly, work и т.д. Группа выводится справа от текста заметки.

ТЕКСТ — собственно текст заметки. Простоты ради, я не стал морочиться с многострочными и длинными заметками. Так что лучше записывать кратко. Зато текст заметки не обязательно заключать в кавычки — скрипт просто считает все, начиная с 3го аргумента, как текст.

rplan.sh — добавляет повторяющиеся заметки в базу.

./rplan.sh ДАТА СМЕЩЕНИЕ КОЛИЧЕСТВО ГРУППА ТЕКСТ
С его помощью добавляются заметки о событиях, происходящих по расписанию.

СМЕЩЕНИЕ указывает, сколько времени прибавлять к ДАТЕ, ставя очередную заметку.

Например:

./rplan.sh "next Tue" "+1 week" 25 misc Сегодня в качалку.
Поставит мне отметки, что я со вторника еженедельно должен ходить в качалку, пока у меня не кончится абонемент. :)

plan_cal.sh — скрипт для Conky, который показывает текущий месяц. Оранжевым он отмечает сегодняшнюю дату, а красным — не прошедшие даты в месяце, на которые есть заметки. На скриншоте он справа.

weekplan.sh — второй скрипт для Conky, который отображает заметки на текущую неделю. Скрипт работает от сегодняшнего дня до следующего понедельника. Таким образом, в понедельник будут видны все заметки на неделю, а в воскресенье — только на воскресенье и понедельник. Оранжевым подсвечивается сегодняшний день, он же всегда находится в самом верху списка.

plan_vacuum.sh — очищает базу от старых заметок. Удаляет все записи, даты которых уже прошли.

libplan.sh — библиотека функций, с помощью которых работает все остальное. Все скрипты пытаются найти эту библиотеку в том месте, где лежит их файл. Поэтому, если вы, как и я, сделаете себе симлинки на эти скрипты в /usr/local/bin, не забудьте засимлинкать туда же и libplan.sh

Ссылка на архив: http://ifolder.ru/30667714

Для примера в архиве также лежат два конфига Коньков: для правого окна и для левого.

Замечания, пожелания, фичреквесты приветствуются. Только давайте будем следовать принципу KISS.

★★

По-моему, ты частично переизобрёл devtodo.

GotF ★★★★★
()

Но ведь есть todo.txt и taskwarrior. Какие плюсы у этого?

dmfd
()

Release early, release often

И прямо вот с ходу скорофикс:

В файле plan.sh заменить строчку

plan_add_entry $*
на две:
DATE=$1; shift
plan_add_entry "$DATE" $*

А то расхваленный мной «+1 month» работать с plan не будет.

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

«Берите кто хотите, делайте что хотите.»

Добавь тогда явно в каждый файл информацию о том, на каких правах распространяешь (для GPL есть how-to).

Deleted
()
Ответ на: Release early, release often от uuwaan

Кстати да, потрать пару часов вот на это: http://gitimmersion.com/ и потом на какую-нибудь статью про шифрование с публичным ключом, базарю, отличная инвестиция.

Спасибо за скрипты, буду пробовать.

Hoodoo ★★★★★
()

Так, мужики и барышни...

Отвечаю на вопрос: «А зачем оно все это?» А потому что у меня было хорошее настроение и полчаса свободного времени. И я сделал свой маааленький велосипед, заодно поставив себе наконец Коньки.

По этой же причине, ГитХаб и комментарии о лицензии идут лесом — я больше времени сейчас потрачу на это, чем собственно на те 200 строчек кода.

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

Гитхаб потом может пригодиться, особенно если ты любишь пилить всякие конфиги. Сириусли. Есть целая секта людей, которые их там держат и зело этим довольны. Git immersion - удобное, простое и понятное интро, которое приятно проходить.

Ну да дело твоё.

Hoodoo ★★★★★
()
Ответ на: комментарий от uuwaan

Так что если когда будет опять лишних полчаса и настроение, всё-таки попробуй. :)

Hoodoo ★★★★★
()
Ответ на: комментарий от pyometra

Запилил ГитХаб, как и советовали в теме. Там же README с описанием возможностей и настроек.

Добавил несколько свистелок:

  • новый скриншот
  • заметки теперь могут быть важными или не очень
  • возможность конфигурить всякое через файлы конфигурации
uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

Запилил ГитХаб, как и советовали в теме.

Осталось определиться с лицензией, чтобы люди спокойно могли форкать и коммитить.

Deleted
()

Если вдруг кому-то еще интересно, то добавился новый скрипт mvplan.sh, который позволяет передвигать заметки на новые даты. Подробности в README.

uuwaan ★★
() автор топика
Ответ на: комментарий от pyometra

Запилено очередное обновление. На этот раз:

  • В weekplan самый первый заголовок теперь печатается без отступа, текст уедет немного вверх.
  • Новый скрипт eplan.sh, позволяющий редактировать и удалять существующие заметки через внешний консольный редактор (какой — задается в переменной EDITOR).
  • Для вящей пущести в plan.sh и rplan.sh добавлен ключ -e, позволяющий ввести текст заметки также через внешний редактор. Пригодится, если в тексте заметки, например, есть круглые скобки. В ком. строке их надо экранировать, а в редакторе — нет.

Еще пара багфиксов и немного оптимизаций.

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

у меня тут некоторые проблемки (календарь и группа в заметках)

1 съехала нижняя строка

2 почему-то 6 дней

3 кодировка

pyometra ★★★★★
()
Ответ на: комментарий от uuwaan

Еще пара багфиксов и немного оптимизаций.

ratte@ratte-debian:~$ cd plan/
ratte@ratte-debian:~/plan$ ./plan.sh "2012-05-28" "вакц" "ирт телята"
./libplan.sh: line 195: ирт: команда не найдена
plan_add_entry: nothing to add

ratte@ratte-debian:~/plan$ ./plan.sh -e 2012-05-28 vaq "ирт телята"
plan_add_entry: nothing to add
ratte@ratte-debian:~/plan$ ./plan.sh -e "2012-05-28" "vaq" "ирт телята"
plan_add_entry: nothing to add
ratte@ratte-debian:~/plan$ ./plan.sh -e '2012-05-28' 'vaq' 'ирт телята'
plan_add_entry: nothing to add
ratte@ratte-debian:~/plan$ ./plan.sh '2012-05-28' 'vaq' 'ирт телята'
./libplan.sh: line 195: ирт: команда не найдена
plan_add_entry: nothing to add

pyometra ★★★★★
()

и почему-то выравнивание не работает http://rghost.ru/38289578.view

конфиг коньков

background yes
use_xft yes
xftfont sans:size=10
xftalpha 1
update_interval 1.0
total_run_times 0
own_window yes
own_window_transparent yes
own_window_type 
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
#minimum_size 100 100
#maximum_width 200
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
default_color white
default_shade_color black
default_outline_color white
alignment bl
gap_x 50
gap_y 50
no_buffers yes
uppercase no
cpu_avg_samples 2
override_utf8_locale yes
default_color light blue

TEXT
${execp /home/ratte/plan/weekplan.sh}
pyometra ★★★★★
()
Ответ на: комментарий от pyometra

Обрезанный календарь из-за того, что Conky по умолчанию выделяет под вывод команды только 256 байт. Сам по себе календарь уже почти не пролазит в этот объем, а если еще цвета к нему присобачить.. За это отвечает параметр

text_buffer_size
Попробуйте поставить 1024, килобайта должно за глаза хватить, даже если весь календарь разрисован будет.

То же самое относится и к выводу weekplan. Там лучше и вовсе 2 или 4 килобайта поставить.

uuwaan ★★
() автор топика
Ответ на: комментарий от pyometra

Что касается параметра -е. У вас должна быть выставлена переменная окружения EDITOR. Если она пустая, то будет как раз такое поведение: сразу nothing to add.

За ситуацию с «ирт» спасибо, разбираюсь, почему так.

uuwaan ★★
() автор топика
Ответ на: комментарий от pyometra

Ситуацию с «ирт телята» исправил, проблему с кодировкой тоже, ключ -e теперь выдает сообщение, если обнаруживает, что EDITOR пустой.

Если проблема со съехавшим выравниванием не излечится от этого, то тогда прошу показать .weekplanrc (он вроде бы должен быть, потому что ширина ленты не умолчальная у вас).

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

всё на гит хабе, я так понимаю? вечером оттестирую и завтра или после 21.00 сегодня расскажу. сейчас попробую на домашнем компьютере, но не будет гарантии, что на рабочем всё будет аналогично.

pyometra ★★★★★
()
Ответ на: комментарий от pyometra

Да, все на ГитХабе уже.

Что касается гарантий, то не столь уж тонкие там материи затронуты, чтобы работать тут и не работать там.

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

Что касается гарантий, то не столь уж тонкие там материи затронуты, чтобы работать тут и не работать там.

тогда вот.

use_xft yes
xftalpha 0.8
update_interval 1
total_run_times 0
own_window yes
own_window_transparent yes
own_window_type normal
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
minimum_size 150 150
draw_shades no
draw_outline no
draw_borders no
stippled_borders 0
border_width 1
default_color grey
own_window_colour grey
alignment bl
own_window_argb_visual yes
own_window_argb_value 255
gap_x 100
gap_y 100
no_buffers yes
uppercase yes
override_utf8_locale yes
use_spacer none
text_buffer_size 1024

TEXT
#${voffset -50}
${font Mono:size=13}${execp /home/ratte/Прогр/uuwaan-uuwaplan-ca2e210/weekplan.sh}
# --- Window Layout & Options --- #
background yes
use_xft yes
own_window yes
own_window_argb_visual yes
own_window_transparent yes #yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
own_window_class Conky
own_window_type normal
double_buffer yes
alignment tl
use_spacer none #none
draw_borders yes
draw_graph_borders yes
gap_x 20
gap_y 40
total_run_times 0
no_buffers yes
cpu_avg_samples 4
net_avg_samples 1
background yes

# --- Colours, Sizes, Fonts & Margins --- #
xftfont Mono:size=13
xftalpha 1
update_interval 1.0
#minimum_size 250 100
#maximum_width 200
stippled_borders 0
border_width 1
default_color blue
#default_color 303030
#default_shade_color black
default_outline_color CCFFCC
own_window_colour CCFFCC


# --- Text --- #
draw_outline no
draw_borders no #no
uppercase no
draw_shades no
override_utf8_locale yes
text_buffer_size 2048


TEXT
${font DejaVu sans Mono:size=13}${execp /home/ratte/Прогр/uuwaan-uuwaplan-ca2e210/plan_cal.sh}
ratte@braineater:~/Прогр/uuwaan-uuwaplan-ca2e210$ cat /home/ratte/.plans.txt
20120526 ирт телята
20120527 ирт телята
20120527 ирт телята
20120527 ротавек коровы
ratte@braineater:~/Прогр/uuwaan-uuwaplan-ca2e210$

скриншот

конфиги не менял.

pyometra ★★★★★
()
Ответ на: комментарий от pyometra

Можно выхлоп plan_cal и weekplan в консольном исполнении?

Возможно, проблема в Коньках, потому что у меня с русской локалью ru_RU.UTF8 такие вещи не наблюдаются.

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan
ratte@braineater:~/Прогр/uuwaan-uuwaplan-ca2e210$ sh plan_cal.sh
${alignr 14}      Май 2012      
${alignr 14}Пн Вт Ср Чт Пт Сб Вс
${alignr 14}    1  2  3  4  5  6
${alignr 14} 7  8  9 10 11 12 13
${alignr 14}14 15 16 17 18 19 20
${alignr 14}21 22 23 24 25 ${color orange}26${color} ${color #FF4D00}${color #FF4D00}${color #FF4D00}27${color}${color}${color}
${alignr 14}28 29 30 31         
ratte@braineater:~/Прогр/uuwaan-uuwaplan-ca2e210$ sh weekplan
conky.png       LICENSE         plan_cal.sh~    README
eplan.sh        mvplan.sh       plan.sh         rplan.sh
libplan.sh      plan_cal.sh     plan_vacuum.sh  weekplan.sh
ratte@braineater:~/Прогр/uuwaan-uuwaplan-ca2e210$ sh weekplan.sh 
${offset 14}${color orange}                                        2012-05-26${color}

${offset 14}телята                                         ирт



${offset 14}                                        2012-05-27

${offset 14}телята                                         ирт
${offset 14}телята                                         ирт
${offset 14}коровы                                      ротавек
ratte@braineater:~/Прогр/uuwaan-uuwaplan-ca2e210$ 
pyometra ★★★★★
()
Ответ на: комментарий от pyometra

Хм... Как видите, вывод ровный, без квадратов. И он в таком виде попадает внутрь Коньков. У вас какая версия их?

Единственно что, неплохо было бы в .weekplanrc подкорректировать ширину поля для категорий, потому что там по умолчанию 6 символов, и ротавек не влез и расширил поле вправо.

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

У вас какая версия их?

$ conky --version
Conky 1.8.1 compiled Sat Oct 29 19:55:58 UTC 2011 for Linux 2.6.37.6-0.7-xen (x86_64)

Единственно что, неплохо было бы в .weekplanrc подкорректировать ширину поля для категорий, потому что там по умолчанию 6 символов, и ротавек не влез и расширил поле вправо.

это поправлю. в общем, судя по всему, проблема в коньках. подумаю.

pyometra ★★★★★
()
Ответ на: комментарий от pyometra

Убрал вложенные цветовые тэги и заменил закрывающий тег с ${color} на $color, поскольку второй вариант встречается чаще. Это должно починить неправильную раскраску дат у вас.

uuwaan ★★
() автор топика
Ответ на: комментарий от pyometra

Правая часть с календарем:

background yes 

alignment top_right
gap_x 0
gap_y 0
minimum_size 200 768
draw_borders no 
draw_shades no
own_window yes 
own_window_class Conky
own_window_type override 
own_window_transparent yes

update_interval 3.0

use_xft yes
xftfont DejaVu Sans Mono:size=8
default_color gray
text_buffer_size 512 
double_buffer yes
no_buffers yes

TEXT
${voffset 14}
${execpi 15 plan_cal}

Левая часть с лентой:

background yes 

alignment top_left
gap_x 0
gap_y 0
minimum_size 400 768
draw_borders no 
draw_shades no
own_window yes 
own_window_class Conky
own_window_type override 
own_window_transparent yes

update_interval 15.0

use_xft yes
xftfont DejaVu Sans Mono:size=8
default_color gray 
text_buffer_size 2048 
double_buffer yes
no_buffers yes

TEXT
${voffset 14}
${execp weekplan}

Результат на скриншоте conky.png в репозитории. Это конфиги целиком, больше никаких опций я туда не вписывал.

uuwaan ★★
() автор топика
Ответ на: комментарий от pyometra

И еще меня смущает override_utf8_locale yes.

uuwaan ★★
() автор топика
Ответ на: комментарий от uuwaan

нет. http://rghost.ru/38293549.view

справа коньки, которые постоянно работают на этом компьютере. календарь в них

${color8}${font monospace:size=16}${execp cal -m | tail -n7 | head -n1}${color2}
${execp cal -m | tail -n6 | sed "s/`date +%e` \|`date +%e`$/\$\{color6}&\$\{color8\}/"}

pyometra ★★★★★
()
Ответ на: комментарий от pyometra

В скрипте plan_cal.sh замените 53ю строку с

echo "\${alignr $PX_OFFSET}$PRNT"
на
echo "$PRNT"

У меня ощущение, что ваш Conky тэги выравнивающие не смог переварить.

uuwaan ★★
() автор топика
Ответ на: комментарий от pyometra

В заметках нет align, но есть offset, в трех местах: 58, 60, 76. Попробуйте вычистить из этих строк

\${offset $PX_OFFSET}
и посмотреть что получится.

uuwaan ★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.