উবুন্টুর জন্য অস্পষ্ট-ঘড়ি


9

অনেক দিন আগে, প্যানেল অ্যাপ্লিকেশনটিতে সময়ের জন্য আমার কাছে সকাল, দিন, সন্ধ্যা, রাত প্রভৃতি কথা বলার জন্য একটি ঘড়ি ছিল। ব্রড স্ট্রোক, খুব নির্দিষ্ট নয়, এটি একটি কেডি ডেস্কটপ হতে পারে। আমি এখন উবুন্টু সাতে আছি, সাথী প্যানেলে এই অস্পষ্ট সময়ের বিবরণ পাওয়ার কোনও উপায় আছে কি?


1
যদি এটি সহায়তা করে তবে এটিকে একটি
अस्पष्ट

এটা সাহায্য করে। :)
j0h

1
সোর্স কোডটি এখানে: কোড. google.com/archive/p/fuzzy- Clo এখন এটিকে একটি অ্যাপে তৈরি করতে আমাদের @ jacobvlijm প্রয়োজন>: - ডি
রিনজউইন্ড

প্যানেল অ্যাপস তৈরির জন্য আমি মেট-ইউনিভার্সিটি পড়তে শুরু করেছি। আমি নিশ্চিত যে আমি এটির মতো কিছু প্রোগ্রাম করতে পারি তবে এটি কীভাবে প্যানেল অ্যাপ তৈরি করতে হবে সে সম্পর্কে আমার কোনও ধারণা নেই
j0h

1
এটি কে-ডি-তে ছিল, আমি এটি সম্পর্কে নিশ্চিত, এবং অনুবাদও হয়েছিল!
আনতেেক

উত্তর:


15

মেট এবং অন্যান্য উবুন্টু ভেরিয়েন্টগুলির জন্য পাঠ্য / বলার ঘড়ি

যদিও প্রশ্নটি মূলত উবুন্টু সাথ সম্পর্কে ছিল , ভাগ্যক্রমে, 15.10 থেকে, সূচকগুলিও ব্যবহার করা যেতে পারে Mate। ফলস্বরূপ, নীচের উত্তরটি কমপক্ষেUnity এবং এর জন্য Mate(পরীক্ষিত) কাজ করে Xubuntu

সেটিংস পরিবর্তন করার জন্য একটি জিইউআই এখনও অনুসরণ করছে (এটিতে কাজ করছে), তবে আমি নীচের সূচকটি কমপক্ষে 20 ঘন্টা পরীক্ষা করেছিলাম এবং (যেমন প্রত্যাশা করা) ত্রুটি ছাড়াই কাজটি করেছে।

বিকল্প

সূচকটি নিম্নলিখিত বিকল্পগুলি সরবরাহ করে:

  • পাঠ্য সময় প্রদর্শন করুন

    এখানে চিত্র বর্ণনা লিখুন

  • পাঠ্য "দিন-অঞ্চল" দেখান ( রাত , সকাল , দিন , সন্ধ্যা )

    এখানে চিত্র বর্ণনা লিখুন

  • সকাল / বিকাল দেখান

    এখানে চিত্র বর্ণনা লিখুন

  • একবারে (বা তিনটির কোনও সংমিশ্রণ) এগুলি সমস্ত দেখান

    এখানে চিত্র বর্ণনা লিখুন

  • এক ঘন্টা প্রতি ত্রৈমাসিকের সময়টি বলুন ( espeakপ্রয়োজনীয়)

  • ;চ্ছিকভাবে, সময়টি अस्पष्ट প্রদর্শিত হয় ; পাঁচ মিনিটে গোল, যেমন
    10:43 -> quarter to eleven

স্ক্রিপ্ট, মডিউল এবং একটি আইকন

সমাধানটি একটি স্ক্রিপ্ট, একটি পৃথক মডিউল এবং একটি আইকন রয়েছে যা আপনাকে একটি এবং একই ডিরেক্টরিতে সঞ্চয় করতে হবে ।

আইকন:

এখানে চিত্র বর্ণনা লিখুন

এটিতে ডান-ক্লিক করুন এবং এটিকে সংরক্ষণ করুন (ঠিক) indicator_icon.png

মডিউল:

এটি মডিউল যা পাঠ্য সময় এবং অন্যান্য প্রদর্শিত সমস্ত তথ্য তৈরি করে। কোডটি অনুলিপি করুন, এক এবং একই ডিরেক্টরিতে উপরের আইকনটির সাথে একত্রে (আবার, ঠিক ) হিসাবে সংরক্ষণ করুন ।tcalc.py

#!/usr/bin/env python3
import time

# --- set starttime of morning, day, evening, night (whole hrs)
limits = [6, 9, 18, 21]
# ---

periods = ["night", "morning", "day", "evening", "night"]

def __fig(n):
    singles = [
        "midnight", "one", "two", "three", "four", "five", "six",
        "seven", "eight", "nine", "ten", "eleven", "twelve", "thirteen",
        "fourteen", "quarter", "sixteen", "seventeen", "eighteen", "nineteen",
        ]
    tens = ["twenty", "half"]
    if n < 20:
        return singles[n]
    else:
        if n%10 == 0:
            return tens[int((n/10)-2)]
        else:
            fst = tens[int(n/10)-2]
            lst = singles[int(str(n)[-1])]
            return fst+"-"+lst

def __fuzzy(currtime):
    minutes = round(currtime[1]/5)*5
    if minutes == 60:
        currtime[1] = 0
        currtime[0] = currtime[0] + 1
    else:
        currtime[1] = minutes
    currtime[0] = 0 if currtime[0] == 24 else currtime[0]
    return currtime

def textualtime(fuzz):
    currtime = [int(n) for n in time.strftime("%H %M %S").split()]
    currtime = __fuzzy(currtime) if fuzz == True else currtime
    speak = True if currtime[1]%15 == 0 else False
    period = periods[len([n for n in limits if currtime[0] >= n])]
    # define a.m. / p.m.
    if currtime[0] >= 12:
        daytime = "p.m."
        if currtime[0] == 12:
            if currtime[1] > 30:
                currtime[0] = currtime[0] - 12
        else:
            currtime[0] = currtime[0] - 12
    else:
        daytime = "a.m."
    # convert time to textual time
    if currtime[1] == 0:
        t = __fig(currtime[0])+" o'clock" if currtime[0] != 0 else __fig(currtime[0])
    elif currtime[1] > 30:
        t = __fig((60 - currtime[1]))+" to "+__fig(currtime[0]+1)
    else:
        t = __fig(currtime[1])+" past "+__fig(currtime[0])
    return [t, period, daytime, currtime[2], speak]

এই পান্ডুলিপি:

এটি প্রকৃত সূচক। কোডটি অনুলিপি করুন এবং সংরক্ষণ করুন moderntimes.py, একসাথে এবং একই ডিরেক্টরিতে উপরের আইকন এবং ম মডিউলের সাথে ।

#!/usr/bin/env python3
import os
import signal
import subprocess
import gi
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk, AppIndicator3, GObject
import time
from threading import Thread
import tcalc

# --- define what to show:
# showtime = textual time, daytime = a.m./p.m. period = "night"/"morning"/day"/"evening"
# speak = speak out time every quarter, fuzzy = round time on 5 minutes
showtime = True; daytime = False; period = True; speak = True; fuzzy = True

class Indicator():
    def __init__(self):
        self.app = 'about_time'
        path = os.path.dirname(os.path.abspath(__file__))
        self.indicator = AppIndicator3.Indicator.new(
            self.app, os.path.abspath(path+"/indicator_icon.png"),
            AppIndicator3.IndicatorCategory.OTHER)
        self.indicator.set_status(AppIndicator3.IndicatorStatus.ACTIVE)       
        self.indicator.set_menu(self.create_menu())

        self.update = Thread(target=self.get_time)
        self.update.setDaemon(True)
        self.update.start()

    def get_time(self):
        # the first loop is 0 seconds, the next loop is 60 seconds,
        # in phase with computer clock
        loop = 0; timestring1 = ""
        while True:
            time.sleep(loop)
            tdata = tcalc.textualtime(fuzzy)
            timestring2 = tdata[0]
            loop = (60 - tdata[3])+1
            mention = (" | ").join([tdata[item[1]] for item in [
                [showtime, 0], [period, 1], [daytime, 2]
                ]if item[0] == True])
            if all([
                tdata[4] == True,
                speak == True,
                timestring2 != timestring1,
                ]):
                subprocess.Popen(["espeak", '"'+timestring2+'"', "-s", "130"])
            # [4] edited
            GObject.idle_add(
                self.indicator.set_label,
                mention, self.app,
                priority=GObject.PRIORITY_DEFAULT
                )
            timestring1 = timestring2

    def create_menu(self):
        menu = Gtk.Menu()
        item_quit = Gtk.MenuItem('Quit')
        item_quit.connect('activate', self.stop)
        menu.append(item_quit)
        menu.show_all()
        return menu

    def stop(self, source):
        Gtk.main_quit()

Indicator()
GObject.threads_init()
signal.signal(signal.SIGINT, signal.SIG_DFL)
Gtk.main()

ব্যবহারবিধি

  1. স্ক্রিপ্টটির প্রয়োজন espeak:

    sudo apt-get install espeak
    
  2. উপরের তিনটি ফাইলই এক এবং একই ডিরেক্টরিতে অনুলিপি করুন, ঠিক যেমনটি স্ক্রিপ্ট, মডিউল এবং আইকনটিতে উল্লিখিত হয়েছে named

  3. মাথার দিকে স্ক্রিপ্ট ( moderntimes.py), সংজ্ঞায়িত কোন তথ্য প্রদর্শিত হওয়া উচিত, এবং কিভাবে। সহজভাবে সেট করুন Trueবা Falseলাইনে:

    # --- define what to show:
    # time = textual time, daytime = a.m./p.m. period = "night"/"morning"/day"/"evening"
    # speak = speak out time every quarter, fuzzy = round time on 5 minutes
    showtime = True; daytime = False; period = True; speak = False; fuzzy = True
  4. মাথার দিকে মডিউল , আপনি ঘন্টার পরিবর্তন করতে পারেন যখন পরবর্তীকালে শুরু করার জন্য সকাল , দিন , সন্ধ্যা , রাত , লাইন মধ্যে:

    # --- set starttime of morning, day, evening, night (whole hrs)
    limits = [6, 9, 18, 21]
    # ---
    

    আপাতত স্ক্রিপ্টের অন্য কোনও কিছু স্পর্শ করবেন না :)

  5. উবুন্টু সাথ ব্যবহারকারীদের তাদের সিস্টেমে সূচকগুলির ব্যবহার সক্ষম করতে হবে: সিস্টেম> পছন্দসমূহ> চেহারা এবং অনুভূত করুন> ম্যাটচিটক> ইন্টারফেস> "সূচকগুলি সক্ষম করুন" নির্বাচন করুন

    এখানে চিত্র বর্ণনা লিখুন

  6. কমান্ডটি দিয়ে সূচকটি চালান:

    python3 /path/to/moderntimes.py
    

এটি স্টার্টআপ অ্যাপ্লিকেশনগুলি থেকে চালানো

মনে রাখবেন যে আপনি যদি স্টার্টআপ অ্যাপ্লিকেশন থেকে কমান্ডটি চালনা করেন তবে অনেক ক্ষেত্রে আপনাকে কিছুটা বিরতি যুক্ত করতে হবে, বিশেষত (অন্যদের মধ্যে) সূচকগুলিতে:

/bin/bash -c "sleep 15 && python3 /path/to/moderntimes.py"

মন্তব্য

  • সন্দেহ নেই যে স্ক্রিপ্টটি পরের কয়েকদিনে অনেকবার পরিবর্তন / আপডেট হবে। বিশেষত একটি জিনিস আমি প্রতিক্রিয়া জানাতে চাই তা হল "স্টাইল" যেখানে ডিজিটাল সময়কে পাঠ্য সময়ে রূপান্তরিত করা হয়। এটি এখন যেভাবে করা হচ্ছে:

    • পুরো ঘন্টা, যেমন:

      six o'clock
      
    • ঘন্টা পরে কম 30 মিনিট পরে, যেমন

      twenty past eleven
      
    • ঘন্টা পরে 30 মিনিট যেমন:

      half past five
      
    • আরও 30 মিনিট যেমন:

      twenty to five
      
    • 15 মিনিটের উল্লেখ করা হয়েছে quarter, যেমন:

      quarter past six
      
    • ব্যতিক্রম মধ্যরাত, যা বলা হয় না zero, তবে midnight, যেমন:

      quarter past midnight
      
  • স্ক্রিপ্টটি রসে অত্যন্ত কম, প্রথম টাইম-চেক-এর পরে, লুপটি স্বয়ংক্রিয়ভাবে কম্পিউটারের ঘড়িতে সিঙ্ক্রোনাইজ হয়। সুতরাং স্ক্রিপ্টটি প্রতি মিনিটে একবার প্রদর্শিত সময়টি সম্পাদনা করে / সময় সম্পাদনা করে, বাকি সময়টি ঘুমিয়ে।


সম্পাদন করা

আজ (2016-4-9) অনুসারে, পালিশ করা সংস্করণের পিপিএ উপলব্ধ। পিপিএ থেকে ইনস্টল করতে:

sudo apt-add-repository ppa:vlijm/abouttime
sudo apt-get update
sudo apt-get install abouttime

উপরের স্ক্রিপ্ট সংস্করণের তুলনায় এই সংস্করণে দিনের সময়কালগুলি পরিবর্তিত হয়েছে, এখন এটি:

morning 6:00-12:00
afternoon 12:00-18:00
evening 18:00-24:00
night 24:00-6:00

... এবং সূচকের কাছে দিনের সময় আইকনটি পরিবর্তন করার বিকল্প রয়েছে:
সকাল / বিকাল / সন্ধ্যা / রাতে :এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন

উল্লিখিত হিসাবে, এই সংস্করণটি উভয় Mate(মূল প্রশ্ন থেকে) Unityএবং পরীক্ষা করা হয়েছিল Xubuntu

এখানে চিত্র বর্ণনা লিখুন


1
আমি বলব: অস্পষ্ট অর্থ আপনি ভুল হতে পারেন। সুতরাং 15:12 থেকে 15: 23 বা তার মধ্যে ত্রৈমাসিক হতে পারে I'd. আমি কেবল ব্যবহার করতে চাই: 5/10 / চতুর্থাংশ / অর্ধেকটা / ঘন্টা hour এটিকে কিছুই বলে ফাজি বলা হয় না।
রিঞ্জউইন্ড

তবুও আরেকটি দুর্দান্ত উত্তর। আমি আশা করি এটি আপনার পিপিএতে সংহত হয়ে গেছে .... :)
পার্টো

@ পার্টো বাহ্ ধন্যবাদ আবার :) আমি অবশ্যই
এটির

1

আপনার যদি কুবুন্টু (প্লাজমা ডেস্কটপ উবুন্টু ডিস্ট্রো) থাকে তবে আপনার কাছে "ফাজি ক্লক" নামে একটি বিল্ট-ইন উইজেট রয়েছে - এটি কমপক্ষে 14.04 সাল থেকে বা প্লাজমা 4 বহির্ভূত হওয়ার অনেক আগে থেকেই ছিল এবং এটি এখনও প্লাজমা 5 এ রয়েছে যেমনটি কুবুন্টুতে পাওয়া গেছে 16.04।

অস্পষ্ট ঘড়িটি পাঁচ মিনিটের ইনক্রিমেন্টের মতো "নির্ভুল" হিসাবে সেট করা যেতে পারে যেমন এনালগ ক্লকটি পড়ার মতো (যেমন "চার পরে দশ" বলে), তবে এটিতে তিনটি "ফজিয়ার" সেটিংসও রয়েছে যার মধ্যে একটি "বিকেল" এর মতো পাঠ্য দেয় এবং একটি যা কেবল "উইকএন্ড!" (রবিবার দুপুরে - আমি অনুমান করি এটি আগামীকাল "সোমবার" বলবে)।

আমি জানি না যে अस्पष्ट ঘড়িটি অন্য উবুন্টু স্বাদে পাওয়া যায় কিনা - আমি এটি আমার সিস্টেমে এটি xfce এ (জুবুন্টুতে পাওয়া যায়) দেখেছি, তবে ওএসটি কুবুন্টু হিসাবে ইনস্টল করা হয়েছিল, সুতরাং আমি নিশ্চিত নই যে अस्पष्ट ঘড়িটি কিনা xfce এর সাথে সাথে কেডিএ / প্লাজমাতে নেটিভ, অথবা এটি ইউনিটি বা মেটে উপলব্ধ কিনা।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.