मैं शब्दों और संख्याओं का उपयोग करके कॉन्की को समय प्रदर्शित करना चाहता हूं।
मैं क्या करना चाहता हूं कमोबेश पेबल वॉच ( लाल घड़ी ) कैसे दिखती है ।
छवि में जैसे, भले ही केवल समय और दिनांक नहीं दिखाई जा सकती है।
क्या यह संभव है?
मैं शब्दों और संख्याओं का उपयोग करके कॉन्की को समय प्रदर्शित करना चाहता हूं।
मैं क्या करना चाहता हूं कमोबेश पेबल वॉच ( लाल घड़ी ) कैसे दिखती है ।
छवि में जैसे, भले ही केवल समय और दिनांक नहीं दिखाई जा सकती है।
क्या यह संभव है?
जवाबों:
लुआ स्क्रिप्टिंग का उपयोग करके यह वास्तव में संभव है। आप नीचे दी गई स्क्रिप्ट का उपयोग कर सकते हैं (नंबर रूपांतरण rosettacode.org से लिया गया है )।
स्क्रिप्ट एक उबाऊ विकल्प कर सकती है, जो 12:45 से "बारह पैंतालीस" का अनुवाद करेगी, और एक भयानक विकल्प जो इसे "एक चौथाई से एक" में अनुवाद करेगा। यह एक उरी हरेरा विकल्प भी करता है जो घंटे को बोल्ड करता है;)
इसके अलावा यह स्वचालित रूप से ताज़ा हो जाता है, जब समय बदल जाता है।
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_
उपसर्ग जोड़ता है )
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}
...
इसके परिणामस्वरूप होगा
यदि आप सेकंड चाहते हैं, तो अपने आप को जोड़ना बहुत कठिन नहीं होना चाहिए।
हां, यह संभव है, लेकिन केवल लुआ पटकथा के माध्यम से। आपको एक स्क्रिप्ट की आवश्यकता होगी जो संख्याओं में ले जाती है और शब्दों को आउटपुट करती है। Django जैसी बहुत सारी रूपरेखाओं में यह सुविधा है, लेकिन आप अपने दम पर हो सकते हैं जब तक कि इसके लिए एक समान लुआ पुस्तकालय न हो:
function conky_translate_number(number) {
if (number == 1) {
return "one";
} else {
return "not a clue";
}
}
आप बस एक पायथन लिपि लिखना चाह सकते हैं, जो अपनी टेम्प्लेटिंग भाषा का उपयोग करके अनुवाद के लिए Django का लाभ उठाती है।
आप इस स्रोत पृष्ठpynum2word
पर उपलब्ध लाइब्रेरी का उपयोग करके इसके लिए एक पाइथन स्क्रिप्ट लिख सकते हैं
मूल रूप से यह क्या करता है:
>>> import num2word
>>> num2word.to_card(10)
'ten'
>>> num2word.to_card(100)
'one hundred'
>>> num2word.to_card(1025)
'one thousand and twenty-five'
एक तुच्छ उदाहरण है कि मैंने यहां क्या किया:
>>> 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 config निर्देशिका के अंदर एक निर्देशिका बनाएं उदा ~/.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]))
आप समय के प्रारूपण को बदल सकते हैं और यदि आप चाहें तो तिथि भी शामिल कर सकते हैं। स्वरूपण विकल्पों के लिए इस पृष्ठ पर एक नज़र है ।
फिर कॉन्की कॉन्फिग फ़ाइल खोलें /etc/conky/conky.conf
और इस लाइन को कहीं रखें:
{execpi 30 ~/.conky/pyscripts/timeToWord}
यह लाइन क्या करती है, यह स्क्रिप्ट फाइल को हर 30 सेकंड में निष्पादित करती है और आउटपुट को कॉन्की विंडो पर अपडेट करती है।
बेशक आप स्वतंत्र रूप से स्क्रिप्ट फ़ाइलों को किसी भी निर्देशिका में रख सकते हैं, लेकिन सुनिश्चित करें कि pynum2word
लाइब्रेरी उसी निर्देशिका में है।
क्या आप एक प्रतीक-फ़ॉन्ट नहीं बना सकते हैं जिसमें हर अंक के लिए लिखित शब्द की छवियां हों? समय के प्रदर्शन के लिए आपको बस इस फ़ॉन्ट (यदि संभव हो) को चुनना होगा।