conky_emacs_org.png

В свое врямя я писал об замечательном режиме Emacs — org-mode. Одна из его возможностей, это органайзер, т.е. назначение заданий.

  • С-с С-s Назначение стартовой точки задания. Наметить встречу на 14 февраля
  • C-c C-d Назначение сроков выполнения задания или Deadline Выполнить до 31 февраля

Держать все в одном файле Вас никто не заставляет, файлов может быть много, главное внесите их в список просматриваемых Org->File list for Agenda

Теперь например запусти что то вроде M-x org-todo-list увидите Ваши TODO-шки по всем файлам.

Наша задача проста, отображать недельные задачи и просроченные задачи. , также просто выкидывать рандомные идеи из того что помечено как TODO. Отображать мы это будем с помощью Conky

Извлечение

Все уже придумано за нас , осталось воспользоваться примерами из документации

Извлекаем в файл все наши TODO записи.

emacs -batch -l /home/username/.emacs -eval '(org-batch-agenda "t")'>todoemacs.txt 2> /dev/null

Извлекаем все старые задания и расписание заданий на неделю вперед.

emacs -batch -l ~/.emacs -eval '(org-batch-agenda "a" \
                                 org-agenda-span (quote month) \
                                 org-agenda-include-diary nil)'>work.txt 2>/dev/null

Можно конечно встроить все эти команды в сам conky, но поймите даже если каждые 30 секунд у Вас будет запускаться эта конфигурация, это будет заметно.

Обрезание

Таки вот мы берем все что нам там вывел Emacs и вынимаем то что нам нужно

#!/bin/bash
emacs -batch -l ~/.emacs -eval '(org-batch-agenda "a" \
                                 org-agenda-span (quote month) \
                                 org-agenda-include-diary nil)'>work.txt 2>/dev/null

#Извлекаем из Вывода просроченные задачи 
#Удаляем с них метки и записи TODO
cat work.txt |egrep ': In|: Sched\.'|sed 's/: In[0-9 -]*d\.:/:/g'|\
sed 's/: Sched\.[0-9 ]*x:/:/g'|\
sed 's/[: ]*TODO/:/g'> /home/username/agenda_old_work.txt
#Извлекаем все остальное, убираем лишнее и оставляем только расписание.
cat work.txt |egrep -v ': In|: Sched\.'|\
grep -v 'Week-agenda'|\
sed 's/[: ]*TODO/:/g' >/home/username/agenda_work.txt
rm work.txt

emacs -batch -l /home/username/.emacs -eval '(org-batch-agenda "t")'>todoemacs.txt 2> /dev/null
sed -i 's/TODO//g' /home/username/todoemacs.txt

А теперь чтобы совсем все хорошо было надо прописать в /etc/crontab следующую строчку,обновления раз в час нам вполне хватит.

0  *	* * *	username  bash /home/username/.agenda_script.sh

Точим коньки

Что почитать:

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

Скрипт для запуска

#!/bin/bash
conky -b& 2>/dev/null
conky -c ~/.conkyrc2 -b& 2>/dev/null
# Use Xft?
use_xft yes
xftfont DejaVu Sans:size=8
xftalpha 0.8
text_buffer_size 2048

# Update interval in seconds
update_interval 1

# This is the number of times Conky will update before quitting.
# Set to zero to run forever.
total_run_times 0

# Create own window instead of using desktop (required in nautilus)
own_window yes
own_window_transparent yes
own_window_type override
#own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

# Use double buffering (reduces flicker, may not work for everyone)
double_buffer yes

# Minimum size of text area
minimum_size 300 0
maximum_width 300

# Draw shades?
draw_shades no

# Draw outlines?
draw_outline no

# Draw borders around text
draw_borders no

# Stippled borders?
stippled_borders 0

# border margins
border_margin 5

# border width
border_width 1

# Default colors and also border colors
default_color white
#default_shade_color black
#default_outline_color white
own_window_colour white

# Text alignment, other possible values are commented
#alignment top_left
alignment top_right
#alignment bottom_left
#alignment bottom_right

# Gap between borders of screen and text
# same thing as passing -x at command line
gap_x 250
gap_y 100

# Subtract file system buffers from used memory?
no_buffers yes

# set to yes if you want all text to be in uppercase
uppercase no

# number of cpu samples to average
# set to 1 to disable averaging
cpu_avg_samples 2

# number of net samples to average
# set to 1 to disable averaging
net_avg_samples 2

# Force UTF8? note that UTF8 support required XFT
override_utf8_locale yes

# Add spaces to keep things from moving about?  This only affects certain objects.
use_spacer none
TEXT
${color grey}TODO ${hr 2}
${execi 20 cat todoemacs.txt |grep "^  [a-z]*\:"|sort -R|head -3}
${voffset 20}${color grey}Горит:${execi 30 cat agenda_old_work.txt|wc -l} ${hr 2}
${color red}${execi 30 cat agenda_old_work.txt |sort -R|head -3}
${voffset 20}${color grey}Сегодня: ${hr 2}
${color lightgrey} ${exec cat agenda_work.txt }

Поправте если увидите ошибку , мне пока таких Conky хватает, но на будущее конечно можно ещё что интересное посмотреть. Также заметил что в ранней версии conky(1.7 на Ubuntu 12.04), не работает UTF-8 , не знаю проблемы ли это релиза, или баг.