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.: не обращайте внимания на субботы-воскресенья в расписании (они могут понадобится для записи инфы об экзаменах, которые могут быть и в выходные).