на самом деле, использование изображений выглядит для меня намного сложнее ... Я никогда не программировал на Lua и не использовал Conky раньше, но я видел хороший вызов в понедельник утром, и мне потребовалось 2 часа от начала до конца, включая написание ответа: P
Герхард Бургер
Это нормально, это была просто мысль, которая у меня была. Я до сих пор не попробовал, какой из ответов работает лучше всего.
Ури Эррера
Ответы:
9
Lua скриптовое решение
Это действительно возможно с использованием сценариев Lua. Вы можете использовать скрипт ниже (преобразование номера взято с rosettacode.org ).
Скрипт может сделать скучную опцию, которая переведет 12:45 на «двенадцать сорок пять», и потрясающую опцию, которая переведет его на «без четверти один». Это также делает выбор Uri Herrera, который делает час жирным;)
Также он автоматически обновляется, когда время меняется.
words = {"one ", "two ", "three ", "four ", "five ", "six ", "seven ", "eight ", "nine "}
levels = {"thousand ", "million ", "billion ", "trillion ", "quadrillion ", "quintillion ", "sextillion ", "septillion ", "octillion ", [0] = ""}
iwords = {"ten ", "twenty ", "thirty ", "forty ", "fifty ", "sixty ", "seventy ", "eighty ", "ninety "}
twords = {"eleven ", "twelve ", "thirteen ", "fourteen ", "fifteen ", "sixteen ", "seventeen ", "eighteen ", "nineteen "}
function digits(n)
local i, ret = -1
return function()
i, ret = i + 1, n % 10
if n > 0 then
n = math.floor(n / 10)
return i, ret
end
end
end
level = false
function getname(pos, dig)
level = level or pos % 3 == 0
if(dig == 0) then return "" end
local name = (pos % 3 == 1 and iwords[dig] or words[dig]) .. (pos % 3 == 2 and "hundred " or "")
if(level) then name, level = name .. levels[math.floor(pos / 3)], false end
return name
end
function numberToWord(number)
if(number == 0) then return "zero" end
vword = ""
for i, v in digits(number) do
vword = getname(i, v) .. vword
end
for i, v in ipairs(words) do
vword = vword:gsub("ty " .. v, "ty-" .. v)
vword = vword:gsub("ten " .. v, twords[i])
end
return vword
end
function conky_boringTime()
hour = os.date("%H") + 0
minute = os.date("%M") + 0
return numberToWord(hour) .. numberToWord(minute)
end
function conky_awesomeTime()
hour = os.date("%H") + 0
minute = os.date("%M") + 0
hour = hour % 12
if(hour == 0) then
hour, nextHourWord = 12, "one "
else
nextHourWord = numberToWord(hour+1)
end
hourWord = numberToWord(hour)
if(minute == 0 ) then
return hourWord .. "o'clock"
elseif(minute == 30) then
return "half past " .. hourWord
elseif(minute == 15) then
return "a quarter past " .. hourWord
elseif(minute == 45) then
return "a quarter to " .. nextHourWord
else
if(minute < 30) then
return numberToWord(minute) .. "past " .. hourWord
else
return numberToWord(60-minute) .. "to " .. nextHourWord
end
end
end
function conky_getHourWord()
return numberToWord(os.date("%H") + 0)
end
function conky_getMinuteWord()
return numberToWord(os.date("%M") + 0)
end
Теперь сохраните его где-нибудь, для целей этого вопроса предположим, что мы сохраняем его как ~/.config/conky/scripts/pretty_time.lua
Теперь отредактируйте свой .conkyrc, прежде чем TEXTдобавить строку
lua_load ~/.config/conky/scripts/pretty_time.lua
это загружает скрипт, чтобы мы могли получить доступ к функциям.
Затем в соответствующем месте ниже TEXTвы можете вызывать функции следующим образом (conky автоматически добавляет conky_префикс)
Большой! хорошо работает, теперь, чтобы найти, как изменить размер текста.
Ури Эррера
3
Да, это возможно, но только через скрипты Lua. Вам понадобится скрипт, который принимает цифры и выводит слова. Многие фреймворки, такие как Django, имеют эту функцию, но вы можете быть самостоятельно, если для нее не существует эквивалентной библиотеки Lua:
function conky_translate_number(number) {
if (number == 1) {
return "one";
} else {
return "not a clue";
}
}
Вы можете просто захотеть написать скрипт на Python, который использует Django для перевода с использованием языка шаблонов.
Готово, элементарно, но да. Я могу уточнить, если хотите, но это выходит за рамки вопроса, чтобы научить вас Python полностью :)
Нафтули Кей
Это немного сложнее, чем я думал, я думал больше, возможно, даже используя изображения, содержащие полные слова (одно, два, три и т. Д.), И что каждое из этих изображений будет меняться в зависимости от времени, поэтому, если это 12 : 22 это будет отображать двенадцать двадцать два.
Ури Эррера
@UriHerrera на самом деле это вполне выполнимо, посмотрите мой ответ
Герхард Бургер
2
Вы можете написать сценарий Python для этого, используя pynum2wordбиблиотеку, доступную на этой странице sourceforge
>>> import datetime
>>> import num2word
>>> now = datetime.datetime.now()
>>> t = datetime.time(now.hour, now.minute, now.second).strftime('%H:%M:%S').split(':')
>>> print "%s hours %s minutes and %s seconds" %(num2word.to_card(t[0]), num2word.to_card(t[1]), num2word.to_card(t[2]))
>>> two hours thirty one minutes and fifteen seconds
Теперь, чтобы сделать это с помощью conky, создайте каталог внутри вашего каталога конфигурации conky, например, ~/.conky/pyscripts/и поместите в него pynum2wordбиблиотеку, теперь создайте другой файл скажем timeToWordи поместите этот скрипт в этот файл:
#!/bin/python
import datetime
import num2word
now = datetime.datetime.now()
t = datetime.time(now.hour, now.minute, now.second).strftime('%H:%M:%S').split(':')
print "%s hours %s minutes and %s seconds" %(num2word.to_card(t[0]), num2word.to_card(t[1]), num2word.to_card(t[2]))
Вы можете изменить форматирование времени и включить дату, если хотите. Для вариантов форматирования взгляните на эту страницу .
затем откройте конфигурационный файл conky /etc/conky/conky.confи поместите эту строку куда-нибудь:
{execpi 30 ~/.conky/pyscripts/timeToWord}
Эта строка выполняет файл скрипта каждые 30 секунд и обновляет вывод в окне conky.
Конечно, вы можете свободно размещать файлы скриптов в любом каталоге, но убедитесь, что pynum2wordбиблиотека находится в том же каталоге.
Интересно, но скажи, что я не знаю, как добавить это к Конки. Как добавить или что сделать в файл Conky, чтобы он импортировал библиотеку? таким образом, это показывает время как это.
Ури Эррера
Я только что обновил ответ, пожалуйста, просмотрите.
Гуфран
0
Не могли бы вы создать символ-шрифт, состоящий из изображений написанного слова для каждой цифры? Чем вам просто нужно выбрать этот шрифт (если это возможно) для отображения времени.
В том-то и дело, что удивительно, что Конки загружает не все шрифты. У меня есть шрифты, которые Conky просто не загружает, и они по умолчанию используют Arial или Times New Roman. Не говоря уже о том, что вся работа по созданию шрифта означает. Также изображение, которое я использовал, является примером, я хотел бы иметь Часы жирным шрифтом и Минуты Тонким / Легким шрифтом.
Ответы:
Lua скриптовое решение
Это действительно возможно с использованием сценариев Lua. Вы можете использовать скрипт ниже (преобразование номера взято с rosettacode.org ).
Скрипт может сделать скучную опцию, которая переведет 12:45 на «двенадцать сорок пять», и потрясающую опцию, которая переведет его на «без четверти один». Это также делает выбор Uri Herrera, который делает час жирным;)
Также он автоматически обновляется, когда время меняется.
Теперь сохраните его где-нибудь, для целей этого вопроса предположим, что мы сохраняем его как
~/.config/conky/scripts/pretty_time.lua
Теперь отредактируйте свой
.conkyrc
, прежде чемTEXT
добавить строкуэто загружает скрипт, чтобы мы могли получить доступ к функциям.
Затем в соответствующем месте ниже
TEXT
вы можете вызывать функции следующим образом (conky автоматически добавляетconky_
префикс)Это приведет к
Если вы хотите секунды, это не должно быть слишком сложно добавить себя.
источник
Да, это возможно, но только через скрипты Lua. Вам понадобится скрипт, который принимает цифры и выводит слова. Многие фреймворки, такие как Django, имеют эту функцию, но вы можете быть самостоятельно, если для нее не существует эквивалентной библиотеки Lua:
Вы можете просто захотеть написать скрипт на Python, который использует Django для перевода с использованием языка шаблонов.
источник
Вы можете написать сценарий Python для этого, используя
pynum2word
библиотеку, доступную на этой странице sourceforgeВ основном то, что это делает:
тривиальный пример - то, что я сделал здесь:
Теперь, чтобы сделать это с помощью conky, создайте каталог внутри вашего каталога конфигурации conky, например,
~/.conky/pyscripts/
и поместите в негоpynum2word
библиотеку, теперь создайте другой файл скажемtimeToWord
и поместите этот скрипт в этот файл:Вы можете изменить форматирование времени и включить дату, если хотите. Для вариантов форматирования взгляните на эту страницу .
затем откройте конфигурационный файл conky
/etc/conky/conky.conf
и поместите эту строку куда-нибудь:Эта строка выполняет файл скрипта каждые 30 секунд и обновляет вывод в окне conky.
Конечно, вы можете свободно размещать файлы скриптов в любом каталоге, но убедитесь, что
pynum2word
библиотека находится в том же каталоге.источник
Не могли бы вы создать символ-шрифт, состоящий из изображений написанного слова для каждой цифры? Чем вам просто нужно выбрать этот шрифт (если это возможно) для отображения времени.
источник