спасибо. другой вопрос... практиковал я, практиковал lua и написал это:
#!/usr/bin/env lua
--написано в 2011 году, ubuntu 11.10, целевая ос - lunux или компилятор lua. язык - lua 5.1.6 email:shkiper255@yandex.ru
print("пн вт ср чт пт сб вс") -- перечисление переменных
nowHour = os.date("%H")
nowMinute = os.date("%M")
nowSecond = os.date("%S")
nowDay = os.date("%d") * 1
nowMonth = os.date("%m") * 1
firstWeekday = os.date("%w") * 1
nowMonthName = os.date("%B")
nowDayMod = nowDay * 1
toEndWeek = 7 - firstWeekday
local b = {'31', '28', '31', '30', '31', '30', '31', '31', '30', '31', '30', '31'}
local weekday = {'пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс'}
e = b[nowMonth] * 1
lastDayOfMonth = e
a = 7 -- конец перечисления
while nowDayMod > 7 do -- вычисление первого дня месяца
nowDayMod = nowDayMod - 7
end
while nowDayMod ~= 0 do
nowDayMod = nowDayMod - 1
firstWeekday = firstWeekday - 1
if firstWeekday < 1 then
firstWeekday = 7
end
end -- конец вычисления
alfa = firstWeekday + e + 1 -- переменная, для последней строки
firstWeekday = firstWeekday + 1
fDoW = weekday[firstWeekday]
week1 = {' ', ' ', ' ', ' ', ' ', ' ', ' '} -- 2 строка
time = 1 -- сегодняшний вирт. день
while firstWeekday < 8 do -- вывод 1 строки
if nowDay ~= time then
if time < 10 and time > 0 then
week1[firstWeekday] = " " .. time .. " "
else
week1[firstWeekday] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week1[firstWeekday] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
local fwd = week1[1] .. week1[2] .. week1[3] .. week1[4] .. week1[5] .. week1[6] .. week1[7]
print(fwd)
week2 = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
while firstWeekday < 15 do -- вывод 3 строки (кто сможет разобраться в этом коде?)
if nowDay ~= time then
if time < 10 and time > 0 then
week2[firstWeekday - 7] = " " .. time .. " "
else
week2[firstWeekday - 7] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week2[firstWeekday - 7] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
swd = week2[1] .. week2[2] .. week2[3] .. week2[4] .. week2[5] .. week2[6] .. week2[7]
print(swd)
week3 = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
-- сегодняшний вирт. день - time
while firstWeekday < 22 do -- вывод 4 строки
if nowDay ~= time then
if time < 10 and time > 0 then
week3[firstWeekday - 14] = " " .. time .. " "
else
week3[firstWeekday - 14] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week3[firstWeekday - 14] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
twd = week3[1] .. week3[2] .. week3[3] .. week3[4] .. week3[5] .. week3[6] .. week3[7]
print(twd)
week4 = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
-- сегодняшний вирт. день - time
while firstWeekday < 29 do -- вывод 5 строки
if nowDay ~= time then
if time < 10 and time > 0 then
week4[firstWeekday - 21] = " " .. time .. " "
else
week4[firstWeekday - 21] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week4[firstWeekday - 21] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
fwd = week4[1] .. week4[2] .. week4[3] .. week4[4] .. week4[5] .. week4[6] .. week4[7]
print(fwd)
weeklast = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
-- сегодняшний вирт. день - time
while firstWeekday < alfa do -- вывод последней строки
if nowDay ~= time then
if time < 10 and time > 0 then
weeklast[firstWeekday - 28] = " " .. time .. " "
else
weeklast[firstWeekday - 28] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
weeklast[firstWeekday - 28] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
lwd = weeklast[1] .. weeklast[2] .. weeklast[3] .. weeklast[4] .. weeklast[5] .. weeklast[6] .. weeklast[7]
print(lwd)
вывод:
dan@dan-GA-MA78GM-UD2H:~/lua$ ./calend.lua
пн вт ср чт пт сб вс
1 2 3 4
5 6 7 8 t9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
dan@dan-GA-MA78GM-UD2H:~/lua$
t - сегодняшний день
адаптировал для conky:
function conky_calend()
local nowHour = os.date("%H") -- перечисление переменных
local nowMinute = os.date("%M")
local nowSecond = os.date("%S")
local nowDay = os.date("%d") * 1
local nowMonth = os.date("%m") * 1
local firstWeekday = os.date("%w") * 1
local nowMonthName = os.date("%B")
local nowDayMod = nowDay * 1
local toEndWeek = 7 - firstWeekday
local b = {'31', '28', '31', '30', '31', '30', '31', '31', '30', '31', '30', '31'}
local weekday = {'пн', 'вт', 'ср', 'чт', 'пт', 'сб', 'вс'}
e = b[nowMonth] * 1
local lastDayOfMonth = e
local a = 7 -- конец перечисления
while nowDayMod > 7 do -- вычисление первого дня месяца
nowDayMod = nowDayMod - 7
end
while nowDayMod ~= 0 do
nowDayMod = nowDayMod - 1
firstWeekday = firstWeekday - 1
if firstWeekday < 1 then
firstWeekday = 7
end
end -- конец вычисления
local alfa = firstWeekday + e + 1 -- переменная, для последней строки
local firstWeekday = firstWeekday + 1
local fDoW = weekday[firstWeekday]
local week1 = {' ', ' ', ' ', ' ', ' ', ' ', ' '} -- 2 строка
local time = 1 -- сегодняшний вирт. день
while firstWeekday < 8 do -- вывод 2 строки
if nowDay ~= time then
if time < 10 and time > 0 then
week1[firstWeekday] = " " .. time .. " "
else
week1[firstWeekday] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week1[firstWeekday] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
local week2 = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
while firstWeekday < 15 do -- вывод 3 строки (кто сможет разобраться в этом коде?)
if nowDay ~= time then
if time < 10 and time > 0 then
week2[firstWeekday - 7] = " " .. time .. " "
else
week2[firstWeekday - 7] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week2[firstWeekday - 7] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
local week3 = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
-- сегодняшний вирт. день - time
while firstWeekday < 22 do -- вывод 4 строки
if nowDay ~= time then
if time < 10 and time > 0 then
week3[firstWeekday - 14] = " " .. time .. " "
else
week3[firstWeekday - 14] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week3[firstWeekday - 14] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
local week4 = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
-- сегодняшний вирт. день - time
while firstWeekday < 29 do -- вывод 5 строки
if nowDay ~= time then
if time < 10 and time > 0 then
week4[firstWeekday - 21] = " " .. time .. " "
else
week4[firstWeekday - 21] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
week4[firstWeekday - 21] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
local weeklast = {' ', ' ', ' ', ' ', ' ', ' ', ' '}
-- сегодняшний вирт. день - time
while firstWeekday < alfa do -- вывод последней строки
if nowDay ~= time then
if time < 10 and time > 0 then
weeklast[firstWeekday - 28] = " " .. time .. " "
else
weeklast[firstWeekday - 28] = time .. " "
end
time = time + 1
firstWeekday = firstWeekday + 1
else
weeklast[firstWeekday - 28] = "t" .. time .. " "
time = time + 1
firstWeekday = firstWeekday + 1
end
end
return string.format( "пн вт ср чт пт сб вс") -- перечисление дней недели
return string.format(week1[1] .. week1[2] .. week1[3] .. week1[4] .. week1[5] .. week1[6] .. week1[7]) -- 2 строка
return string.format(week2[1] .. week2[2] .. week2[3] .. week2[4] .. week2[5] .. week2[6] .. week2[7]) -- 3 строка
return string.format( week3[1] .. week3[2] .. week3[3] .. week3[4] .. week3[5] .. week3[6] .. week3[7]) -- 4 строка
return string.format( week4[1] .. week4[2] .. week4[3] .. week4[4] .. week4[5] .. week4[6] .. week4[7]) -- 5 строка
return string.format( weeklast[1] .. weeklast[2] .. weeklast[3] .. weeklast[4] .. weeklast[5] .. weeklast[6] .. weeklast[7]) -- последняя строка
end
ну и выдаёт lua мне вот что:
dan@dan-GA-MA78GM-UD2H:~$ ./lua/conky/calend.lua
lua: ./lua/conky/calend.lua:116: '<eof>' expected near 'return'
dan@dan-GA-MA78GM-UD2H:~$
думаю, ну ладно, заработает. пишу в conkyrc lua_load /home/dan/calend.lua и ${lua_parse conky_calend}, а он мне:
dan@dan-GA-MA78GM-UD2H:~$ conky
Conky: /home/dan/.conkyrc: 15: config file error
Conky: llua_load: /home/dan/calend.lua:115: 'end' expected (to close 'function' at line 1) near 'return'
Conky: forked to background, pid is 6940
dan@dan-GA-MA78GM-UD2H:~$
Conky: desktop window (1000023) is subwindow of root window (15d)
Conky: window type - normal
Conky: drawing to created window (0x1a00001)
Conky: drawing to double buffer
Conky: llua_do_call: function conky_calend execution failed: attempt to call a nil value
Conky: llua_do_call: function conky_calend execution failed: attempt to call a nil value
Conky: llua_do_call: function conky_calend execution failed: attempt to call a nil value
простите, если скрипт слижком большой, только начинаю