En realidad, usar imágenes me parece mucho más difícil ... Nunca programé en Lua o utilicé Conky antes, pero vi un buen desafío el lunes por la mañana, y me tomó 2 horas de principio a fin, incluida la escritura de la respuesta: P
Gerhard Burger
Está bien, era solo un pensamiento que tenía. Todavía no he probado cuál de las respuestas funciona mejor.
Uri Herrera
Respuestas:
9
Solución de script Lua
De hecho, esto es posible utilizando la secuencia de comandos de Lua. Puede usar la secuencia de comandos a continuación (la conversión de números se toma de rosettacode.org ).
El guión puede hacer una opción aburrida, que traducirá 12:45 a "doce cuarenta y cinco", y una opción increíble que lo traducirá a "cuarto para la una". También hace una opción de Uri Herrera que hace la hora en negrita;)
También se actualiza automáticamente cuando cambia la hora.
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
Ahora guárdelo en algún lugar, para el propósito de esta pregunta, suponga que lo guardamos como ~/.config/conky/scripts/pretty_time.lua
Ahora edite su .conkyrc, antes de TEXTagregar una línea
lua_load ~/.config/conky/scripts/pretty_time.lua
Esto carga el script para que podamos acceder a las funciones.
Luego, en el lugar apropiado a continuación TEXT, puede llamar a las funciones de la siguiente manera (conky agrega automáticamente el conky_prefijo)
¡Excelente! funciona bien, ahora para encontrar cómo cambiar el tamaño del texto.
Uri Herrera
3
Sí, es posible, pero solo a través de secuencias de comandos Lua. Necesitará un script que tome números y genere palabras. Muchos frameworks como Django tienen esta característica, pero puede estar solo a menos que haya una biblioteca Lua equivalente para ello:
function conky_translate_number(number) {
if (number == 1) {
return "one";
} else {
return "not a clue";
}
}
Es posible que simplemente desee escribir un script de Python que aproveche Django para la traducción utilizando su lenguaje de plantillas.
Hecho, rudimentario, pero sí. Puedo dar más detalles si lo desea, pero parece fuera del alcance de la pregunta enseñarle Python en su totalidad :)
Naftuli Kay
Es un poco complicado de lo que pensaba, estaba pensando más en la línea de posiblemente incluso usar imágenes que contenían palabras completas (una, dos, tres, etc.) y que cada una de estas imágenes cambiaría de acuerdo con el tiempo, así que si son 12 : 22 mostraría las doce y veinte.
Uri Herrera
@UriHerrera en realidad es bastante factible, mira mi respuesta
Gerhard Burger
2
puede escribir un script de Python para esto usando la pynum2wordbiblioteca disponible en esta página de 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
Ahora para hacer que esto sea procesado por conky, cree un directorio dentro de su directorio de configuración de conky, por ejemplo, ~/.conky/pyscripts/y coloque la pynum2wordbiblioteca dentro de él, ahora cree otro archivo, diga timeToWordy coloque este script en este archivo:
#!/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]))
Puede cambiar el formato de la hora e incluir la fecha también, si lo desea. Para ver las opciones de formato, eche un vistazo a esta página .
luego abra el archivo de configuración conky /etc/conky/conky.confy coloque esta línea en alguna parte:
{execpi 30 ~/.conky/pyscripts/timeToWord}
Lo que hace esta línea es ejecutar el archivo de script cada 30 segundos y actualizar la salida en la ventana conky.
Por supuesto, puede colocar libremente los archivos de script en cualquier directorio, pero asegúrese de que la pynum2wordbiblioteca esté en el mismo directorio.
Interesante, pero diga que no sé cómo agregar esto a Conky. ¿Cómo agrego o qué hago al archivo Conky para que importe la biblioteca? entonces muestra el tiempo así.
Uri Herrera
Acabo de actualizar la respuesta, por favor revise.
Gufran
0
¿No podría crear una fuente de símbolos que conste de imágenes de la palabra escrita para cada número? De lo que debería tener que elegir esta fuente (si es posible) para la visualización del tiempo.
Esa es la cosa, sorprendentemente Conky no carga todas las fuentes. Tengo fuentes que Conky simplemente no cargará, y por defecto son Arial o Times New Roman. Sin mencionar que todo el trabajo que hace una Fuente significa. Además, la imagen que utilicé es un ejemplo, me gustaría tener horas en una fuente en negrita y minutos en una fuente delgada / ligera.
Uri Herrera
Esto ni siquiera funcionaría de todos modos para números mayores que nueve.
Respuestas:
Solución de script Lua
De hecho, esto es posible utilizando la secuencia de comandos de Lua. Puede usar la secuencia de comandos a continuación (la conversión de números se toma de rosettacode.org ).
El guión puede hacer una opción aburrida, que traducirá 12:45 a "doce cuarenta y cinco", y una opción increíble que lo traducirá a "cuarto para la una". También hace una opción de Uri Herrera que hace la hora en negrita;)
También se actualiza automáticamente cuando cambia la hora.
Ahora guárdelo en algún lugar, para el propósito de esta pregunta, suponga que lo guardamos como
~/.config/conky/scripts/pretty_time.lua
Ahora edite su
.conkyrc
, antes deTEXT
agregar una líneaEsto carga el script para que podamos acceder a las funciones.
Luego, en el lugar apropiado a continuación
TEXT
, puede llamar a las funciones de la siguiente manera (conky agrega automáticamente elconky_
prefijo)Esto resultará en
Si quieres los segundos, esto no debería ser demasiado difícil de agregar.
fuente
Sí, es posible, pero solo a través de secuencias de comandos Lua. Necesitará un script que tome números y genere palabras. Muchos frameworks como Django tienen esta característica, pero puede estar solo a menos que haya una biblioteca Lua equivalente para ello:
Es posible que simplemente desee escribir un script de Python que aproveche Django para la traducción utilizando su lenguaje de plantillas.
fuente
puede escribir un script de Python para esto usando la
pynum2word
biblioteca disponible en esta página de sourceforgeBásicamente lo que hace es:
Un ejemplo trivial es lo que hice aquí:
Ahora para hacer que esto sea procesado por conky, cree un directorio dentro de su directorio de configuración de conky, por ejemplo,
~/.conky/pyscripts/
y coloque lapynum2word
biblioteca dentro de él, ahora cree otro archivo, digatimeToWord
y coloque este script en este archivo:Puede cambiar el formato de la hora e incluir la fecha también, si lo desea. Para ver las opciones de formato, eche un vistazo a esta página .
luego abra el archivo de configuración conky
/etc/conky/conky.conf
y coloque esta línea en alguna parte:Lo que hace esta línea es ejecutar el archivo de script cada 30 segundos y actualizar la salida en la ventana conky.
Por supuesto, puede colocar libremente los archivos de script en cualquier directorio, pero asegúrese de que la
pynum2word
biblioteca esté en el mismo directorio.fuente
¿No podría crear una fuente de símbolos que conste de imágenes de la palabra escrita para cada número? De lo que debería tener que elegir esta fuente (si es posible) para la visualización del tiempo.
fuente