Lua-Skriptlösung
Dies ist in der Tat mit Lua-Skripten möglich. Sie können das folgende Skript verwenden (die Nummernkonvertierung stammt von rosettacode.org ).
Das Skript kann eine langweilige Option ausführen, die 12:45 in "zwölf fünfundvierzig" übersetzt, und eine fantastische Option, die es in "ein Viertel vor eins" übersetzt. Es gibt auch eine Uri Herrera-Option, die die Stunde fett macht;)
Außerdem wird es automatisch aktualisiert, wenn sich die Zeit ändert.
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
Speichern Sie es jetzt irgendwo, für den Zweck dieser Frage nehmen wir an, wir speichern es als ~/.config/conky/scripts/pretty_time.lua
Bearbeiten Sie nun Ihre .conkyrc
, bevor TEXT
Sie eine Zeile hinzufügen
lua_load ~/.config/conky/scripts/pretty_time.lua
Dadurch wird das Skript geladen, damit wir auf die Funktionen zugreifen können.
Dann können Sie an der entsprechenden Stelle unten TEXT
die Funktionen folgendermaßen aufrufen (conky fügt automatisch das conky_
Präfix hinzu).
TEXT
...
${color grey}Boring time:$color ${lua boringTime}
${color grey}Awesome time:$color ${lua awesomeTime}
${color grey}Special Uri Herrera:$color ${font Aria:bold} ${lua getHourWord}$font ${lua getMinuteWord}
...
Dies führt zu
Wenn Sie die Sekunden möchten, sollte es nicht zu schwierig sein, sich selbst hinzuzufügen.