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.

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

Запушил версии без align и оффсет. Действительно, пусть скрипты только пишут и красят, а их выравнивание — прерогатива пользователя и конфигов коньков.

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

а какая у Вас версия conky и нет ли мыслей- почему мои коньки подавились на параметрах выравнивания? (причём и на сусе 12.1, и на дебиане 6).

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

Сам ты фейспалм! Это копирайт на лицензию, там указан автор ЛИЦЕНЗИИ, а не проекта.

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

У меня 1.9.0 на Arch x86_64, compiled May 3, 2012. Дельных мыслей нет, к сожалению, поскольку мое знакомство с Коньками началось всего на несколько часов раньше момента, когда я запилил первую версию этих скриптов. :D

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

Ну да, похоже очень. Ну и что? Свой лесапед ближе к телу. Зато я отлично фанюсь, фигача код на баше.

uuwaan ★★
() автор топика

Очередное обновление. На этот раз скрипты plan.sh, rplan.sh, mvplan.sh слиты в один: plan.sh, который теперь на первом месте принимает команду.

uuwaan ★★
() автор топика

большое спасибо за скрипты.

Если нужна будет консультация по ветеринарии- милости прошу. Контакты в профиле.

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

Спасибо, буду иметь в виду.

В очередной раз обновил балалайку: weekplan переименован в listplan и теперь может принимать начальную и конечную даты вывода, плюс число заметок.

/* И кстати, есть ли способ отредактировать первый пост, дабы отразить в нем, что появился GitHub, убрать устаревшее описание и т.д. */

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

еще хотел спросить- можно ли добавить «не очень важные напоминания» наряду с обычными и важными.

и вопрос о следующих 10 напоминаниях, вместо недельных, в силе.

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

и вопрос о следующих 10 напоминаниях, вместо недельных, в силе.

listplan now «+1 year» 10 — выведет 10 ближайших заметок, начиная от сегодняшего дня и до упора (при условии, что на год вперед ничего не запланировано, конечно). Можно и «+100 year» для верности. listplan теперь можно катать по датам с большой степенью свободы.

еще хотел спросить- можно ли добавить «не очень важные напоминания» наряду с обычными и важными.

Поподробнее? Они должны подсвечиваться? Если да, то как?

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

listplan now «+1 year» 10

спасибо, попробую. вообще нужно как-то с синтаксисом разобраться, чтобы глупых вопросов не задавать.

Поподробнее? Они должны подсвечиваться? Если да, то как?

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

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

вообще нужно как-то с синтаксисом разобраться, чтобы глупых вопросов не задавать.

Я в README стараюсь давать вменяемое описание с примерами и обновляю его регулярно. Что касается «+1 month» и т.д., то мопед не мой — вся мощь описана в info date, раздел «Date input formats».

подсвечиваться другим цветом в заметках

Окей. А трех градаций точно хватит? :D

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

Окей. А трех градаций точно хватит? :D

мне точно не хватит (в идеале хотелось бы кучу цветов в заметках- по цвету на группу (вакцинация- жёлтый, отбор крови- красный, ректалка- коричневый, лечение мастита- чёрный и т.д.) :), но постараюсь дальше сам допилить. просто сейчас дико не хватает времени, чтобы вдумчиво почитать код.

а вот в календаре трёх точно хватит.

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

запилить цветовую дифференциацию групп?

очень полезно.

какие группы отображать на календаре, а какие нет.

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

хотя сейчас подумал, что на календаре можно отмечать только реально важные события.

скорее всего Ваш вариант будет удобен.

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

По сути, в коде уже есть разделение по цветам, просто оно бинарное: важно (в группе есть символ "!") или неважно (нет символа "!").

Расширяем набор признаков, организуя список:

признак -> цвет

!      -> оранжевый
работа -> белый
отпуск -> зеленый
личное -> желтый 

Для разруливания перекрывающихся признаков (например «отпуск!») поступаем просто — берем тот, который выше остальных (идем сверху вниз, останавливаемся на первом подходящем). Все равно мы будем выводить только один цвет.

Для календаря указывается список признаков, которые он будет выводить:

!        -> показываем только важные события
! работа -> показываем только важные события и события, связанные с работой. Важные события имеют приоритет при покраске.

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

я наверное Вас уже утомил, но еще вопрос (не разбирался еще с кодом из-за тотальной нехватки времени)- как организовать в заметках показ сегодняшнего дня с напоминаниями, а также вчера, позавчера и вперёд три дня. и чтобы если заметок на день нет, то показывать просто дату.

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

показ сегодняшнего дня с напоминаниями, а также вчера, позавчера и вперёд три дня

listplan "2 days ago" "+3 day"

если заметок на день нет, то показывать просто дату.

Хм, это уже сложнее, поскольку listplan не знает о датах — он берет их исключительно из записей в базе, и если записей на дату нет, то ее как бы не существует.

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

listplan «2 days ago» «+3 day»

Что-то я не совсем понял где этот параметр указывать.

С датами без заметок можно не заморачиваться, пойдет и так.

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

забываю на гитхабе глянуть обновки :)

просто у меня получается так- с домашнего компьютера качаю архив с гитхаба и на флэшке несу его на ноут на работу, ибо там нет интернета вовсе.

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

вот теперь почти идеально :) осталось только прошедшие дни окрасить в бледный цвет и будет просто торт. Подскажите где поправить код для этого, пожалуйста. (несколько дней не будет скорее всего возможности носить на флэшке скрипты из дома.)

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

Ох... Это довольно сложно при текущей схеме вывода календаря. Если будет свободное время, то постараюсь схему поменять, чтобы можно было нормально сделать то, что вы хотите.

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

я имел ввиду не в календаре, а в заметках- даты и сами заметки покрасить в какой-либо цвет бледный.

но если сложно, то необязательно- и так всё очень удобно.

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