Table of Contents
В свое врямя я писал об замечательном режиме 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
Точим коньки
Что почитать:
- http://help.ubuntu.ru/wiki/conky
- http://www.linuxcenter.ru/lib/articles/soft/conky_as_example.phtml
- http://www.deviantart.com/art/Conky-JamesHardy88-122466724
Взяв относительно готовую конфигурацию(там ещё шрифты надо поставить,чтобы значки были), я быстро понял что разрешения по вертикали мне не хватит да и не красиво так, а вот второе окно можно сделать только запустив ещё одни коньки.
Скрипт для запуска
#!/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 , не знаю проблемы ли это релиза, или баг.
Добавить комментарий