আমি সংখ্যাগুলি নয় বরং কঙ্কি শব্দ ব্যবহার করে সময় প্রদর্শন করতে চাই।
আমি যা করতে চাই তা কমবেশি কীভাবে পেবল ওয়াচটি দেখায় ( রেড ওয়াচ )।
চিত্রটিতে লাইক থাকলেও, কেবল সময় এবং তারিখটি প্রদর্শিত না হলেও।
এটা কি সম্ভব?
আমি সংখ্যাগুলি নয় বরং কঙ্কি শব্দ ব্যবহার করে সময় প্রদর্শন করতে চাই।
আমি যা করতে চাই তা কমবেশি কীভাবে পেবল ওয়াচটি দেখায় ( রেড ওয়াচ )।
চিত্রটিতে লাইক থাকলেও, কেবল সময় এবং তারিখটি প্রদর্শিত না হলেও।
এটা কি সম্ভব?
উত্তর:
লুয়া স্ক্রিপ্টিং ব্যবহার করে এটি সম্ভবত সম্ভব। আপনি নীচের স্ক্রিপ্টটি ব্যবহার করতে পারেন (নম্বর রূপান্তরটি 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}
...
এর ফলে হবে
আপনি যদি সেকেন্ড চান, এটি নিজেকে যুক্ত করা খুব কঠিন হওয়া উচিত নয়।
হ্যাঁ, এটি সম্ভব তবে কেবল লুয়া স্ক্রিপ্টিংয়ের মাধ্যমে। আপনার একটি স্ক্রিপ্টের দরকার হবে যা সংখ্যার মধ্যে নেয় এবং শব্দগুলি আউটপুট করে। জ্যাঙ্গোর মতো অনেকগুলি ফ্রেমওয়ার্কের এই বৈশিষ্ট্য রয়েছে তবে এটির জন্য সমতুল্য লুয়া গ্রন্থাগার না থাকলে আপনি নিজেরাই থাকতে পারেন:
function conky_translate_number(number) {
if (number == 1) {
return "one";
} else {
return "not a clue";
}
}
আপনি কেবল একটি পাইথন স্ক্রিপ্ট লিখতে চাইতে পারেন যা এটির মোক্ষম ভাষা ব্যবহার করে অনুবাদটির জন্য জ্যাঙ্গোকে উপকৃত করে।
আপনি এই সোর্সফোজের পৃষ্ঠায়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/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
লাইব্রেরি একই ডিরেক্টরিতে রয়েছে।
আপনি কি প্রতিটি চিহ্নের লিখিত শব্দের সমন্বয়ে একটি প্রতীক-ফন্ট তৈরি করতে পারেননি? সময় প্রদর্শনের জন্য আপনার এই ফন্টটি (যদি সম্ভব হয়) বেছে নেওয়া উচিত।