Автор Тема: [Решено] Выхлоп скрипта в conky  (Прочитано 3490 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн quark

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
[Решено] Выхлоп скрипта в conky
« : 20 Февраль 2014, 20:40:47 »
Всем доброго времени суток!
Требуется ваша помощь, по conky. Ситуация такая:
Имеется скрипт (python, формируются данные для вывода и команды conky), выхлоп его в консоль - все нормально, то что и хотел. Далее, если взять этот вывод и поместить в конфиг коньков - тож все хорошо. А вот если в конфиге коньков прописать запуск скрипта:
TEXT
$hr
${execp python /home/dima/.conky/wcalendar.py}
$hr
тут начинаются проблемы: выводится четыре строки из восьми, на пятой затык: ${}g - и, соответственно, unknown variable (должно было быть ${goto 35}). Понять не могу, откуда берется это непонимание со стороны конки (наверно мало что о них знаю :( ), скрипт отрабатывает (если судить по его выводу в консоль), более того и конки берут этот вывод (если его поместить в конфиг) и нормально работают. Подскажите, в чем могут быть грабли? Скрипт могу выложить (мое произведение - скромничаю, так, вечерок скоротал  ;) да и не программист я уже.
Большое спасибо.
« Последнее редактирование: 22 Февраль 2014, 00:59:30 от quark »
 


yura_n

  • Гость
Re: Выхлоп скрипта в conky
« Ответ #1 : 20 Февраль 2014, 21:27:26 »
Скрипт могу выложить
Без скрипта ваш вопрос - это гадание на ромашке. ;D Выкладывайте. А заодно и конфиг conky.
 

Оффлайн quark

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Выхлоп скрипта в conky
« Ответ #2 : 20 Февраль 2014, 21:42:06 »

Скрипт - пока выводит календарь (текущий месяц), цель - раскрасить дни в соответствии с графиком работы смены (моей, в данном случае)
Spoiler: ShowHide
#!/usr/bin/python
# -*- coding: utf-8-*-
# color1 60605f - дефолтный (серенький)
# color2 c9c9c9 - белый, почти (Сб, Вс)

import time, datetime, calendar

# Номер смены:
smena = 2
# Шаг вывода дней недели (px):
r = 35
# Выводимая строка:
outline_ = "${color1}" + "Смена " + str(smena)
monthname = [" ", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]
wday = ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"]
# Сегодня:
today_ = time.localtime()
outline_ += "${alignr}" + monthname[today_[1]] + ", " + str(today_[0]) + "\n" + "\n"
i = 1
for wday_ in wday:
    if (wday_ == "Сб") or (wday_ == "Вс"):
        outline_ += "${color2}" + "${goto " + str(i * r) + "}" + wday_
#        outline_ += "${color2}" + "${alignr " + str((8 - i) * r) + "}" + wday_
    else:
        outline_ += "${color1}" + "${goto " + str(i * r) + "}" + wday_
#        outline_ += "${color1}" + "${alignr " + str((8 - i) * r) + "}" + wday_
    i += 1
outline_ += "${color1}" + "\n"
# Первое число текущего месяца:
firstDayOfMonth = datetime.date(today_[0], today_[1], 1)
# Номер дня в неделе первого числа текущего месяца (1 - 7):
firstDayOfMonthNumberOfWeek = firstDayOfMonth.isoweekday()
# Количество дней в текущем месяце:
numberOfMonthDays = calendar.monthrange(today_[0], today_[1])
i = 1
j = 1
k = 0
while j <= numberOfMonthDays[1]:
    while (i <= 7) and (j <= numberOfMonthDays[1]):
        if k == 0:
       i = firstDayOfMonthNumberOfWeek
       k = 1
    outline_ += "${goto " + str(i * r) + "}" + str(j)
#        outline_ += "${alignr " + str((8 - i) * r) + "}" + str(j)
        i += 1
     j += 1
    outline_ += "\n"
    i = 1
print(outline_)


конфиг
Spoiler: ShowHide
background yes
use_xft yes
font Droid Sans:size=12
xftalpha 1
out_to_console no
update_interval 2
total_run_times 0
own_window yes
own_window_type normal
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager
double_buffer yes
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders yes
#stippled_borders 5
#border_margin 4
#border_width 1
default_color 60605f
default_shade_color 404040
default_outline_color black
minimum_size 400 120
maximum_width 700
#alignment br
gap_x 80
gap_y 600
no_buffers no
uppercase no
cpu_avg_samples 2
net_avg_samples 2
override_utf8_locale yes
use_spacer no
short_units yes

color1 60605f
#color2 a66417
color2 c9c9c9

TEXT
$hr
${execp /usr/bin/python /home/dima/.conky/wcalendar.py}
$hr
« Последнее редактирование: 20 Февраль 2014, 21:51:50 от quark »
 

yura_n

  • Гость
Re: Выхлоп скрипта в conky
« Ответ #3 : 20 Февраль 2014, 22:33:33 »
С табами у вас проблема. Еще ошибки есть. То что нашел, исправил.
#!/usr/bin/python
# -*- coding: utf-8-*-
# color1 60605f - дефолтный (серенький)
# color2 c9c9c9 - белый, почти (Сб, Вс)

import time, datetime, calendar

# Номер смены:
smena = 2
# Шаг вывода дней недели (px):
r = 35
# Выводимая строка:
outline_ = "${color1}" + "Смена " + str(smena)
monthname = [" ", "Январь", "Февраль", "Март", "Апрель", "Май", "Июнь", "Июль", "Август", "Сентябрь", "Октябрь", "Ноябрь", "Декабрь"]
wday = ["Пн", "Вт", "Ср", "Чт", "Пт", "Сб", "Вс"]
# Сегодня:
today_ = time.localtime()
outline_ += "${alignr}" + monthname[today_[1]] + ", " + str(today_[0]) + "\n" + "\n"
i = 1
for wday_ in wday:
    if wday_ == "Сб" or wday_ == "Вс":
        outline_ += "${color2}" + "${goto " + str(i * r) + "}" + wday_
#        outline_ += "${color2}" + "${alignr " + str((8 - i) * r) + "}" + wday_
    else:
        outline_ += "${color1}" + "${goto " + str(i * r) + "}" + wday_
#        outline_ += "${color1}" + "${alignr " + str((8 - i) * r) + "}" + wday_
    i += 1
outline_ += "${color1}" + "\n"
# Первое число текущего месяца:
firstDayOfMonth = datetime.date(today_[0], today_[1], 1)
# Номер дня в неделе первого числа текущего месяца (1 - 7):
firstDayOfMonthNumberOfWeek = firstDayOfMonth.isoweekday()
# Количество дней в текущем месяце:
numberOfMonthDays = calendar.monthrange(today_[0], today_[1])
i = 1
j = 1
k = 0
while j <= numberOfMonthDays[1]:
    while i <= 7 and j <= numberOfMonthDays[1]:
        if k == 0:
            i = firstDayOfMonthNumberOfWeek
            k = 1
            outline_ += "${goto " + str(i * r) + "}" + str(j)
#            print outline_
#        outline_ += "${alignr " + str((8 - i) * r) + "}" + str(j)
        i += 1
    j += 1
    outline_ += "\n"
    i = 1
#print(outline_) # Это для Python 3.x
print outline_ # Это для Python 2.x
У меня коньки отобразили "Смена 2", месяц, дни недели и число, с которого начался месяц. А больше у вас ничего и не написано.
« Последнее редактирование: 20 Февраль 2014, 23:06:04 от yura_n »
 

Оффлайн quark

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Выхлоп скрипта в conky
« Ответ #4 : 20 Февраль 2014, 23:30:30 »
С табами у вас проблема. Еще ошибки есть. То что нашел, исправил.
Да не, это копи/пасте так отработал, вроде посмотрел, видимо не все. Для последней строки поправил, но это ничего не изменило. Для однозначности: снимок экрана во вложении.
Под спойлером тот самый выхлоп в консоль, затык после 2-ого февраля, это видно на снимке
Spoiler: ShowHide
dima@quark:~/.conky$ python wcalendar.py
${color1}Смена 2${alignr}Февраль, 2014

${color1}${goto 35}Пн${color1}${goto 70}Вт${color1}${goto 105}Ср${color1}${goto 140}Чт${color1}${goto 175}Пт${color2}${goto 210}Сб${color2}${goto 245}Вс${color1}
${goto 210}1${goto 245}2
${goto 35}3${goto 70}4${goto 105}5${goto 140}6${goto 175}7${goto 210}8${goto 245}9
${goto 35}10${goto 70}11${goto 105}12${goto 140}13${goto 175}14${goto 210}15${goto 245}16
${goto 35}17${goto 70}18${goto 105}19${goto 140}20${goto 175}21${goto 210}22${goto 245}23
${goto 35}24${goto 70}25${goto 105}26${goto 140}27${goto 175}28



[вложение удалено администратором]
 

yura_n

  • Гость
Re: Выхлоп скрипта в conky
« Ответ #5 : 21 Февраль 2014, 00:22:28 »
Вроде нашел я причину ошибки. Дело в том, что переменная outline_ - это одна большая строка. А надо несколько строк.
P.S.
Все верно. Если вы последнюю строку "print outline_" закомментируете, а вместо нее добавите что-нибудь вроде:
print "${goto 210}1${goto 245}2"
print "${goto 35}3${goto 70}4${goto 105}5${goto 140}6${goto 175}7${goto 210}8${goto 245}9"
print "${goto 35}10${goto 70}11${goto 105}12${goto 140}13${goto 175}14${goto 210}15${goto 245}16"
То легко в этом убедитесь. То есть, вам нужно переписать скрипт таким образом, чтобы все записи выводились отдельными строками.
« Последнее редактирование: 21 Февраль 2014, 00:36:37 от yura_n »
 

Оффлайн quark

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Выхлоп скрипта в conky
« Ответ #6 : 21 Февраль 2014, 11:40:23 »
То есть, вам нужно переписать скрипт таким образом, чтобы все записи выводились отдельными строками.

Попробовал. В цикле, после формирования строки, посылаю ее на вывод. Результат тот же.
Может еще какие идеи?
 

yura_n

  • Гость
Re: Выхлоп скрипта в conky
« Ответ #7 : 21 Февраль 2014, 18:24:17 »
Может еще какие идеи?
В .conkyrc добавьте:
text_buffer_size XXXX
Где XXXX - значение в байтах. Программе, до кучи, размера текстового буфера не хватает (по умолчанию 256 байт), поэтому и ведет себя так... замысловато.
« Последнее редактирование: 21 Февраль 2014, 18:26:08 от yura_n »
 

Оффлайн quark

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: Выхлоп скрипта в conky
« Ответ #8 : 22 Февраль 2014, 00:58:56 »
Да, благодарю, именно оно и есть! Что-то в этом духе и искал, в описаниях конки, но ожидал bufferSize, ниже не посмотрел
 

Оффлайн quark

  • Пользователь
  • *
  • Topic Author
  • Сообщений: 13
Re: [Решено] Выхлоп скрипта в conky
« Ответ #9 : 01 Март 2014, 13:52:36 »
Пока допилил до такого состояния (см. вложение). Подумаю как бы облагородить/размножить (несколько месяцев)  ;D

[вложение удалено администратором]
 

Теги:
 

[РЕШЕНО] Как вместЕ установить KDE и GNOME

Автор Metrix

Ответов: 11
Просмотров: 9061
Последний ответ 25 Февраль 2011, 19:43:09
от Metrix
[Решено] Debian и Сompiz

Автор Squeeze

Ответов: 4
Просмотров: 1672
Последний ответ 05 Май 2012, 19:45:48
от Squeeze
[Решено] Tint2 не отображает иконки лаунчера

Автор doctor@tardis

Ответов: 2
Просмотров: 2732
Последний ответ 04 Декабрь 2013, 17:50:43
от doctor@tardis
[Решено] LXQT вход без пароля[автовход]

Автор Pacman

Ответов: 3
Просмотров: 1946
Последний ответ 06 Май 2020, 10:06:45
от Pacman
[Решено] С новой темой не работает некоторые программы!

Автор demon_666_902

Ответов: 1
Просмотров: 5288
Последний ответ 18 Июль 2013, 16:53:30
от Malaheenee