0. Ставим conky.
Настройки пихаем в ~/.conkyrc на свое усмотрение. у меня они такие
alignment top_left
gap_x 4
gap_y 20
maximum_width 690
use_xft yes
#xftfont DejaVu Sans Mono:size=8
xftfont Terminus:size=10 # нужно что б в системе стоял terminus-font
override_utf8_locale yes
default_color 999999
out_to_console no
update_interval 2
double_buffer yes
TEXT
${color #cccccc}Uptime: $uptime
${color #cccccc}Frequency: $freq Mhz
${color #cccccc}CPU [${color #999999}$cpu%, ${color #cccccc}${i2c 9191-0290 temp 3}°C]
${color #999999}${cpugraph 40,673 999999 cccccc}
${color #cccccc}File systems${offset 154}[mount point] [device] [size] [used] [avail]
${color #999999}${fs_bar 9,242 /} [/] hda1 ${fs_size /} ${fs_used /} ${fs_free /}
${color #999999}${fs_bar 9,242 /home} [/home] hda2 ${fs_size /home} ${fs_used /home} ${fs_free /home}
${color #999999}${offset 250}[extened] hda3
${offset 266}[swap] hda5
${color #999999}${fs_bar 9,242 /usr/portage} [/usr/portage] hda6 ${fs_size /usr/portage} ${fs_used /usr/portage} ${fs_free /usr/portage}
${color #999999}${fs_bar 9,242 /var} [/var] hda7 ${fs_size /var} ${fs_used /var} ${fs_free /var}
${color #999999}${fs_bar 9,242 /tmp} [/tmp] hda8 ${fs_size /tmp} ${fs_used /tmp} ${fs_free /tmp}
${color #999999}${fs_bar 9,242 /hda4} [/hda4] hda4 ${fs_size /hda4} ${fs_used /hda4} ${fs_free /hda4}
${color #999999}download${offset 145}upload
${downspeedgraph ppp0 40,200 999999 cccccc} ${upspeedgraph ppp0 40,200 999999 cccccc}
${color #cccccc}${tail ~/todo.txt 11}
${execi 7200 ~/scripts/lessons_list.py}последняя строка - это как раз и есть расписание (что означает и как пользоваться всем остальным, что представлено в листинге - читайте в "cat /usr/share/doc/conky-*/conkyrc.sample.bz2 | bzip2 -d | less" и "man conky").
запускаем conky из консоли. работает? - останавливаем по Ctrl+C.
1. Теперь создаем директорию scripts и в нем файл с правами на запуск
mkdir ~/scripts cd ~/scripts/ touch lessons_list.py && chmod +x lessons_list.py gedit lessons_list.py
теперь вставляем код программы (ахтунг! отступы в скрипте должны быть сохранены, иначе не заработает!)
#!/bin/env python
# -*- coding: utf-8 -*-
import re
from time import strftime
from commands import getoutput
current_week_number = getoutput('date +%w')
i_current_week_number = int(current_week_number)
next_week_number = str( ((i_current_week_number<6) and i_current_week_number+1) or 0 )
f = open( '/home/<имя пользователя>/.lessons_list.xml', 'r' )
lessons_list = f.read()
f.close()
def fetch_weeks():
table = [ '', '' ]
#table[0]
table[0] += re.search( r'.*\<week.*name="(.*)"\s*number="'+current_week_number+'".*', lessons_list, re.S ).group(1)+'\n───────────────────\n'
tmp = re.search( r'\n*\<week.*number="'+current_week_number+'".*\>\n\t*\<lesson number="1"\>(.*)\<\/lesson\>\n\t*\<lesson number="2"\>(.*)\<\/lesson\>\n\t*\<lesson number="3"\>(.*)\<\/lesson\>\n\t*\<lesson number="4"\>(.*)\<\/lesson\>\n\t*\<lesson number="5"\>(.*)\<\/lesson\>', lessons_list )
table[0] += '1. ' + tmp.group(1) + '\n2. ' + tmp.group(2) + '\n3. ' + tmp.group(3) + '\n4. ' + tmp.group(4) + '\n5. ' + tmp.group(5) + '\n'
#table[1]
table[1] += re.search( r'.*\<week.*name="(.*)"\s*number="'+next_week_number+'".*', lessons_list, re.S ).group(1)+'\n───────────────────\n'
tmp = re.search( r'\n*\<week.*number="'+next_week_number+'".*\>\n\t*\<lesson number="1"\>(.*)\<\/lesson\>\n\t*\<lesson number="2"\>(.*)\<\/lesson\>\n\t*\<lesson number="3"\>(.*)\<\/lesson\>\n\t*\<lesson number="4"\>(.*)\<\/lesson\>\n\t*\<lesson number="5"\>(.*)\<\/lesson\>', lessons_list )
table[1] += '1. ' + tmp.group(1) + '\n2. ' + tmp.group(2) + '\n3. ' + tmp.group(3) + '\n4. ' + tmp.group(4) + '\n5. ' + tmp.group(5) + '\n'
print table[0], '\n\n', table[1]
fetch_weeks()2. Ну и сама база с расписанием в xml-ке:
touch ~/.lessons_list.xml gedit ~/.lessons_list.xml
Ахтунг! т.к. скрипт написан через задницу, из xml-ки может не все верно вытаскиваться, если не верны будут отступы или перенос строк. (когда руки дойдут - сделаю через нормальное место).
<?xml version="1.0" encoding="UTF-8"?> <root> <week name="Понедельник" number="1"> <lesson number="1">Экология</lesson> <lesson number="2">ОП! АЙС?</lesson> <lesson number="3">БД</lesson> <lesson number="4">КТС</lesson> <lesson number="5">КТС / --</lesson> </week> <week name="Втроник" number="2"> <lesson number="1">ЭВМ</lesson> <lesson number="2">Иностранный язык</lesson> <lesson number="3">Осн.философии / ТВиМС</lesson> <lesson number="4">БД</lesson> <lesson number="5"></lesson> </week> <week name="Среда" number="3"> <lesson number="1">ОП! АЙС?</lesson> <lesson number="2">МСС</lesson> <lesson number="3">ДМ / этикет</lesson> <lesson number="4">БД</lesson> <lesson number="5"></lesson> </week> <week name="Четверг" number="4"> <lesson number="1">Физкультура</lesson> <lesson number="2">НК(МСС) / этикет</lesson> <lesson number="3">Культурология</lesson> <lesson number="4"></lesson> <lesson number="5"></lesson> </week> <week name="Пятница" number="5"> <lesson number="1">КТС</lesson> <lesson number="2">Культурология</lesson> <lesson number="3">ТВиМС</lesson> <lesson number="4">ДМ</lesson> <lesson number="5"></lesson> </week> <week name="Суббота" number="6"> <lesson number="1"></lesson> <lesson number="2"></lesson> <lesson number="3"></lesson> <lesson number="4"></lesson> <lesson number="5"></lesson> </week> <week name="Воскресенье" number="0"> <lesson number="1"></lesson> <lesson number="2"></lesson> <lesson number="3"></lesson> <lesson number="4"></lesson> <lesson number="5"></lesson> </week> </root>
3. Запускаем conky и смотрим. внизу должно появится расписание на сегодняшний и завтрашний день. Можно так же поставить conky на загрузку иксов: если через startx иксы поднимаешь - добавь в ~/.xinitrc
exec conky &
, если нет - ищи как это сделать в своем DE/WM.
P. S.: в системе уже должен стоять великий божественный Python
P. P. S.: не обращайте внимания на субботы-воскресенья в расписании (они могут понадобится для записи инфы об экзаменах, которые могут быть и в выходные).
