उबंटू के लिए फजी-घड़ी


9

बहुत समय पहले, मेरे पास एक पैनल ऐप में समय के लिए सुबह, दिन, शाम, रात जैसी चीजें कहने के लिए एक घड़ी सेट थी। ब्रॉड स्ट्रोक, बहुत विशिष्ट नहीं, यह एक केडीई डेस्कटॉप हो सकता है। मैं अब उबंटू मेट में हूं, क्या यह एक स्पष्ट तरीका है कि मेट पैनल में इस समय का वर्णन हो?


1
अगर यह मदद करता है, तो इसे फजी घड़ी कहा जाता है
दिमितर्स

यह मदद करता है। :)
जे ० एचएच

1
यहाँ स्रोत कोड है: code.google.com/archive/p/fuzzy-clock अब हमें इसे ऐप में बनाने के लिए @jacobvlijm की आवश्यकता है: - D
Rinzwind

मैंने पैनल ऐप बनाने के लिए मेट-यूनिवर्सिटी पढ़ना शुरू किया। मुझे यकीन है कि मैं इस तरह से कुछ प्रोग्राम कर सकता हूं, लेकिन मुझे इस बारे में कोई संकेत नहीं है कि इसे एक पैनल ऐप कैसे बनाया जाए
j0h

1
यह केडीई में था, मुझे इस पर यकीन है, और इसका अनुवाद भी किया गया था!
अतीक

जवाबों:


15

मेट और अन्य उबंटू वेरिएंट के लिए पाठ / बोलने वाली घड़ी

हालांकि यह सवाल मूल रूप से उबंटू मेट के बारे में था , सौभाग्य से, 15.10 से, संकेतक का भी उपयोग किया जा सकता है Mate। नतीजतन, नीचे इस सवाल का जवाब कम से कम के लिए काम करता है Unityऔर Mateऔर (परीक्षण किया) पर Xubuntu

सेटिंग्स बदलने के लिए एक GUI अभी भी (इस पर काम कर रहा है) का पालन करना है, लेकिन मैंने कम से कम 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. एक और एक ही डायरेक्टरी में उपरोक्त सभी तीन फाइलों को कॉपी करें, जैसा कि स्क्रिप्ट, मॉड्यूल और एक आइकन में दर्शाया गया है

  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) के अनुसार, पॉलिश संस्करण का एक ppa उपलब्ध है। Ppa से स्थापित करने के लिए:

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 या तो क्वार्टर पास्ट 3 होगा। मैं बस इतना ही कहूंगा: 5/10 / क्वॉर्टर / हाफ पास्ट / प्रति घंटा। इसे कुछ नहीं के लिए फजी नहीं कहा जाता है।
रिनविविंड

फिर भी एक और भयानक जवाब। मुझे आशा है कि यह आपके पीपीए में एकीकृत हो जाता है .... :)
पार्टो

@Parto वाह फिर से धन्यवाद :) मैं निश्चित रूप से इस एक के लिए एक
ppa बनाऊंगा

1

यदि आपके पास कुबंटू (प्लाज्मा डेस्कटॉप उबंटू डिस्ट्रो) है, तो आपके पास एक अंतर्निहित विजेट है जिसे "फ़ज़ी क्लॉक" कहा जाता है - यह कम से कम 14.04 के बाद से है, या जब तक प्लाज़्मा 4 बाहर हो चुका है, और यह अभी भी प्लज़ 5 में है जैसा कि कुबंटु 16.04 में पाया गया।

फज़ी क्लॉक को पाँच मिनट की वृद्धि के रूप में "सटीक" के रूप में सेट किया जा सकता है, जैसे एनालॉग घड़ी (जैसे, "चार के बाद दस") पढ़ना, लेकिन इसमें तीन "फ़ज़ीर" सेटिंग्स भी हैं, जिनमें से एक "दोपहर" की तरह रीडिंग देता है। और एक जो सिर्फ "सप्ताहांत" देता है! (एक रविवार की दोपहर को - मुझे लगता है कि यह "सोमवार" कल कहेगा)।

मुझे नहीं पता कि फजी घड़ी अन्य उबंटू स्वादों में उपलब्ध है - मैंने इसे अपने सिस्टम पर एक्सफ़सी (एक्सूबंटू में पाया गया) के रूप में देखा, लेकिन ओएस को कुबंटु के रूप में स्थापित किया गया था, इसलिए मुझे यकीन नहीं है कि फजी घड़ी है देशी के रूप में अच्छी तरह से KDE / प्लाज्मा के लिए xfce, और न ही यह एकता या मेट में उपलब्ध है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.