লগইন করার পরে প্রতিটি ব্যবহারকারীর জন্য কাস্টম (সম্পাদনযোগ্য) বার্তা


11

কম্পিউটারটি তিনজন ব্যবহারকারী (+1 প্রশাসক) দ্বারা ব্যবহার করা হচ্ছে এবং তারা unityক্য লগইন ব্যবহার করে। তিনজন ব্যবহারকারী আসেন, কম্পিউটার এবং লগআউট ব্যবহার করুন। তারা লগইন করার সময় আমাকে কিছু নির্দেশনা, সংবাদ এবং বিশদ দিতে হবে।

আমি একটি ইউটিলিটি / সরঞ্জাম রাখতে চাই যেখানে আমি প্রতিটি ব্যবহারকারীর কাছে একটি কাস্টম বার্তা টাইপ করতে পারি। 10-15 সেকেন্ড বলার জন্য সর্বশেষ বার্তাটি ডেস্কটপে প্রদর্শিত হবে (প্রতিটি ব্যবহারকারীর জন্য) (আমার শেষ সম্পাদনার তারিখ সহ)। লগের মতো সমস্ত বার্তা এবং তারিখ সহ পাঠ্যের অনুলিপি (ব্যবহারকারীর কাছে) কোথাও উপলব্ধ available

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

* অ্যাডমিনের সিস্টেমে এসএসএইচ অ্যাক্সেস রয়েছে।

আমি নিশ্চিত না এটি সম্ভব কিনা (এবং হতে পারে আমি খুব বেশি সন্ধান করছি!)।


করা যেতে পারে. উবুন্টুর আপনার লক্ষ্যযুক্ত সংস্করণটি কী? পপআপগুলি ঠিক আছে? অথবা আপনি যেমন আপনার উদাহরণের মতো শোতে অন স্ক্রিন পাঠ্য পছন্দ করেন?
সের্গেই কোলোডিয়াজনি

14.04 এলটিএস চলছে এবং শীঘ্রই যে কোনও সময় আপগ্রেড করার কোনও পরিকল্পনা নেই। পপআপগুলি / বিজ্ঞপ্তি ঠিক আছে যদি তারা কিছু সেকেন্ডের জন্য থাকে (sec 10-15 সেকেন্ড)
ankit7540

আমি একটি দ্রুত স্ক্রিপ্ট প্রয়োগ করেছি, একটি উত্তর পোস্ট করেছি। এটি একটি ফাইল তৈরি করতে দেয় এবং সেই ফাইলটি প্রতিটি ব্যবহারকারীর সাথে মিলে যায়। আপনি আমাকে আরও কী কার্যকারিতা যুক্ত করতে চান তা আমাকে জানতে দিন এবং আপনার যদি অন্য কোনও ব্যাখ্যা প্রয়োজন হয়। স্ক্রিপ্টটি অভিনব নয়, তবে বেশ স্থিতিশীল।
সের্গেই কোলোডিয়াজনি

হাই @ অঙ্কিত 7540 আমার উত্তর পোস্ট করেছে, প্রথম "সংস্করণ" এ, স্ক্রিপ্টটি সম্পাদনযোগ্য করার কথা উল্লেখ করতে ভুলে
গিয়েছি

আপনার প্রচেষ্টার জন্য ধন্যবাদ সার্জি: সার্চটি আমার পছন্দ হয়েছে, আমাকে পরীক্ষা দিয়ে উত্তর দিন
ankit7540

উত্তর:


11

আপনি নিম্নলিখিত সেটআপটিতে এটি করতে পারেন, যা একটি অর্ধ-স্বচ্ছ উইন্ডো উত্পাদন করবে, স্বেচ্ছাসেবী সময় থাকার জন্য:

  1. একটি (যে কোন) ডিরেক্টরির মধ্যে তৈরি করুন, এখানে ব্যবহারকারীদের প্রতিটি কমপক্ষে করেছে পড়তে অনুমতি কে একটি বার্তা ফাইল প্রত্যেক ব্যবহারকারীর জন্য, ঠিক প্রত্যেক ব্যবহারকারীর ব্যবহারকারীর নাম পর (নাম লগ ইন) নামে, কোন এক্সটেনশন, যেমন

    jacob
    

    আপনার বার্তা হিসাবে ফাইলে পাঠ্য যুক্ত করুন। আপনি যদি কোনও নতুন বার্তা যুক্ত করেন তবে এর সাথে শুরু করুন ###, স্ক্রিপ্টটি স্বয়ংক্রিয়ভাবে শেষ বার্তাটি প্রদর্শন করবে। পাঠ্যে আপনার পছন্দের যে কোনও কিছু থাকতে পারে, আপনি এটি ফাইলের মধ্যে রেখে দেওয়ার মতো দেখতে পাবেন।

    • সর্বশেষ বার্তা, যেমন অনুলিপি করা হবে latest_message.txtরেফারেন্সের জন্য ব্যবহারকারীর হোম ডিরেক্টরিতে।

    • যেমনটি রয়েছে, উইন্ডোটি 15 সেকেন্ডের জন্য স্থির থাকবে, তবে আপনি এটিকে যে কোনও মানতে সেট করতে পারেন এমনকি এটি স্বয়ংক্রিয়ভাবে পাঠ্যের দৈর্ঘ্যের উপর নির্ভর করে।


    একটি উদাহরণ ফাইল দেখতে পারে:

    Vraag:
    Een aap op een fiets, hoe vind je zoiets?
    
    Opdracht:
    Geef antwoord op de vraag!
    
    ###
    Vraag:
    Hoe is de koffie vandaag?
    
    Opdracht:
    Zet het zelf even als het niet te drinken is!
    

    বার্তাটি তখন দেখতে হবে:

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

  2. নীচের স্ক্রিপ্টটি একটি খালি ফাইলে অনুলিপি করুন, আপনার স্ক্রিপ্টের শিরোনামের প্রধান অংশে আপনি যে ফোল্ডারে ব্যবহারকারীর (গুলি) বার্তাগুলি সঞ্চিত করছেন সেটিকে সম্পাদনা করুন। স্ক্রিপ্টটি show_personalmessage(যেমন) হিসাবে সংরক্ষণ করুন /usr/local/bin(যা এতে থাকা উচিত $PATH এবং এটি সম্পাদনযোগ্য (!) করা উচিত (কোনও এক্সটেনশন নেই)

    #!/usr/bin/env python3
    import subprocess
    import os
    import gi
    gi.require_version('Gtk', '3.0')
    from gi.repository import GObject, Gtk, Gdk, Pango
    from threading import Thread
    import time
    import getpass
    
    # --- set the path to the message files below, filename = username
    filedir = "/home/jacob/Bureaublad"
    # --- set the time to show the window below
    showtime = 15
    # ---
    
    # don't change anything below
    user = getpass.getuser()
    currmessage = os.environ["HOME"]+"/latest_message.txt"
    f = filedir+"/"+user
    text = "Welcome "+user+"\n\n"+open(f).read().split("###")[-1]
    open(currmessage, "wt").write(text)
    
    class Splash(Gtk.Window):
    
        def __init__(self):
            Gtk.Window.__init__(self, title="splashtitle")
            maingrid = Gtk.Grid()
            self.add(maingrid)
            maingrid.set_border_width(80)
            # set text for the spash window
            label = Gtk.Label(text)
            label.modify_font(Pango.FontDescription('Ubuntu 12'))
            maingrid.attach(label, 0, 0, 1, 1)
            self.stop = Thread(target=self.close_window)
            self.stop.start()
    
        def close_window(self):
            time.sleep(showtime)
            Gtk.main_quit()
    
    def splashwindow():
        window = Splash()
        window.set_decorated(False)
        window.set_resizable(False)
        window.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0,0,0,1))
        window.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("grey"))
        window.set_opacity(0.8)
        window.set_position(Gtk.WindowPosition.CENTER)
        window.show_all()
        GObject.threads_init()
        Gtk.main()
    
    splashwindow()
    
  3. এতে একটি লঞ্চার তৈরি করুন /etc/xdg/autostart

    [Desktop Entry]
    Type=Application
    Name=Splash 
    Exec=/bin/bash -c "sleep 10 && show_personalmessage"
    

    ঘুম 10 হ'ল উইন্ডোটি খোলার জন্য ডেস্কটপ "প্রস্তুত" আছে তা নিশ্চিত করা।

ব্যাখ্যা

  • লগ ইন প্রতিটি ব্যবহারকারীর জন্য/etc/xdg/autostart রান কমান্ডে প্রবর্তক ।
  • লঞ্চারটি তখন উইন্ডোটি চালায় (কমান্ড দ্বারা ডাকা হয় show_personalmessage), যা আপনার সংজ্ঞায়িত ডিরেক্টরিটিতে ব্যক্তিগতকৃত বার্তাটি সন্ধান করে। উপরন্তু। সর্বাধিক সাম্প্রতিক বার্তাটি ব্যবহারকারীর হোম ডিরেক্টরিতে অনুলিপি করা হয়েছে।
  • যদি প্রয়োজন হয় তবে বার্তাটির পথ পরিবর্তন করা যেতে পারে, এমনকি getpass-মডিউল ব্যবহার করে ব্যবহারকারীকে নির্দিষ্ট করে তোলা যেতে পারে , যাতে স্ক্রিপ্ট (উইন্ডো) কোনও ডিরেক্টরিতে একটি ব্যবহারকারী-নির্দিষ্ট নামের ফাইলটি সন্ধান করে। যদি এটি প্রয়োজন হয় দয়া করে উল্লেখ করুন।

উপরন্তু

(Gtk) উইন্ডো

  • সবকিছুর নিচে থাকতে পারে, যেন এটি ব্যাকগ্রাউন্ডের অংশ হয়ে থাকে be
  • সবকিছুর উপরে থাকতে পারে
  • ঘনিষ্ঠ করা যেতে পারে

ইত্যাদি, ইত্যাদি ...


সম্পাদনা

সময়, বার্তা লেখা আলোচনা সংরক্ষণ করতে চ্যাটে স্ক্রিপ্ট যা আপনি কয়েক "স্থায়ী" বিভাগে অন্তর্ভুক্ত করতে পারে একটি সংস্করণ নীচে:

  • premsg, যা "ওয়েলকাম ইউজার এক্স" এর নীচে এবং আপনার বার্তার মূল অংশ এবং and
  • postmsgযা আপনার বার্তার নীচের অংশ হিসাবে আসে।

উভয় বিভাগকে কোনও হিসাবে সেট করা যায় না, কেবল ""একটি মান হিসাবে সেট করে ।

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

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

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

# --- set the path to the message files below, filename = username
filedir = "/path/to/message_directory"
# --- set the time to show the window below
showtime = 15
# --- set pre-message below. set premessage = "" for no pre-message
premsg = """We assume you read all 3782 instruction pages on how to use
Ubuntu before you push any button on this computer.
""" 
# --- set post-message below. set postmessage = "" for no post-message
postmsg = """Before you go to sleep tonight, make sure to brush your
teeth for at least half an hour
"""

# --- don't change anything below
user = getpass.getuser()
currmessage = os.environ["HOME"]+"/latest_message.txt"
f = filedir+"/"+user

text = "Welcome "+user+"\n\n"+premsg+"\n"+open(f).read().split("###")[-1]+"\n"+postmsg

open(currmessage, "wt").write(text)

class Splash(Gtk.Window):

    def __init__(self):
        Gtk.Window.__init__(self, title="splashtitle")
        maingrid = Gtk.Grid()
        self.add(maingrid)
        maingrid.set_border_width(80)
        # set text for the spash window
        label = Gtk.Label(text)
        label.modify_font(Pango.FontDescription('Ubuntu 12'))
        maingrid.attach(label, 0, 0, 1, 1)
        self.stop = Thread(target=self.close_window)
        self.stop.start()

    def close_window(self):
        time.sleep(showtime)
        Gtk.main_quit()

def splashwindow():
    window = Splash()
    window.set_decorated(False)
    window.set_resizable(False)
    window.override_background_color(Gtk.StateType.NORMAL, Gdk.RGBA(0,0,0,1))
    window.modify_fg(Gtk.StateFlags.NORMAL, Gdk.color_parse("white"))
    window.set_opacity(0.8)
    window.set_position(Gtk.WindowPosition.CENTER)
    window.show_all()
    GObject.threads_init()
    Gtk.main()

splashwindow()

বিঃদ্রঃ

অবশ্যই বার্তার মূল অংশের মতো , আপনিও কোনও ফাইল থেকে বার্তা প্রি-পোস্ট করার জন্য স্ক্রিপ্টটি পরিবর্তন করতে পারেন যা এটি বজায় রাখতে আরও সুবিধাজনক করে তোলে। উত্তরে সরলতার কারণেই এটি কি পছন্দ করেছে।


চেষ্টা করা হয়েছে। এটি খুব সুন্দরভাবে কাজ করে। কোডটির দিকে তাকিয়ে আমি বুঝতে পারি কীভাবে সময়টি স্থিত হয় তার পরিবর্তন কীভাবে করা যায়। একটি প্রশ্ন: যদি ব্যবহারকারীর বাড়িতে আমার কাছে এসএসএইচ অ্যাক্সেস না থাকে (তবে কেবল আমার বাড়িতে)?
ankit7540

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

@ অঙ্কিত 7540 এটি লিপিতে সম্পাদনা করেছে (এবং ব্যাখ্যাটিতে)।
জ্যাকব ভিলিজম

@ অঙ্কিত 7540 আহ, আমি আপনাকে প্রথম লাইনে দেখছি: "স্বাগতম ব্যবহারকারী ..." এটি কি আপনার পক্ষে গুরুত্বপূর্ণ? কোডে কেবল একটি লাইন যদি এটি হয়।
জ্যাকব ভিলিজম

"স্বাগত $ ব্যবহারকারী" লাইন সম্পর্কে, আপনি কেবল আমাকে এখানে বলতে পারেন এবং আমি এটি স্ক্রিপ্টে যুক্ত করতে পারি। অতিরিক্ত হিসাবে, ব্যবহারকারীর একটি ফোল্ডার রয়েছে তা বিবেচনা করুন /home/message। কোনও স্থির ফাইলে (রেফারেন্সের জন্য) সাম্প্রতিক বার্তার পাঠ্য (ক্যাটেনেট ইত্যাদি ..) অনুলিপি করা ভাল হবে
ankit7540

6

স্ক্রিপ্ট বেলো অ্যাডমিনকে username_mm_dd_yyyy.txtঅ্যাডমিন-সংজ্ঞায়িত ডিরেক্টরিতে আকারে ব্যক্তিগতকৃত বার্তাগুলি সংরক্ষণ করতে দেয় । ব্যবহারকারীর নামগুলি স্বয়ংক্রিয়ভাবে নির্ধারিত হয় এবং ফাইলটির নাম এবং ফাইল প্রদর্শিত হওয়ার তারিখের সাথে মিলে যায়।

স্ক্রিপ্টে একটি .desktopপ্রবেশিকাও থাকতে পারে যা /etc/xdg/autostartডিরেক্টরিতে স্থাপন করা উচিত । এটি প্রতিটি ব্যবহারকারীর জন্য প্রদর্শিত স্ক্রিপ্ট তৈরি করবে। বিকল্পভাবে আপনি .desktopফাইলটি প্রতিটি পৃথক ব্যবহারকারীর ~/.config/autostartডিরেক্টরিতে রাখতে পারেন।

#!/bin/bash
_get_username()
{
  qdbus  com.canonical.Unity  \
        /com/canonical/Unity/Session \
        com.canonical.Unity.Session.UserName
}

_get_date()
{
  date +%m_%d_%Y
}

_show_error()
{
  MESSAGE="Can't read the file or file doesn't exist. Contact the admin for assistance"

  zenity --error --title="Ooops, something went wrong!" --text="$MESSAGE"
}

main()
{
  # replace this with the actual directory 
  # that you want to use for storing messages
  MESSAGES_DIRECTORY="/tmp"

  # file name is made up of username_mm_dd_yyyy
  FILE="$MESSAGES_DIRECTORY"/"$( _get_username )"_"$( _get_date )".txt
  echo "$FILE"
  if [ -r "$FILE"   ] ; then
     zenity --text-info  --title="Welcome, $( _get_username )" --filename="$FILE"
  else
     _show_error
  fi
}

main

বেলো আপনি কার্যক্রমে স্ক্রিপ্টের একটি ছোট ডেমো দেখতে পারেন। আমি আমার /tmpফোল্ডারে নির্দিষ্ট ফর্ম্যাটে ফাইলটি তৈরি করেছি

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


তোমার অপেক্ষায় থাকায় দুঃখিত এটি দুর্দান্ত কাজ করে। আমি 'বাতিল' এবং 'ঠিক আছে' বোতামটি পছন্দ করি। আমি এটি .ডেস্কটপ এন্ট্রি সহ ব্যবহার করেছি এবং এটি নিখুঁতভাবে কাজ করে!
ankit7540

@ ankit7540 আপনি এটি পছন্দ করেছেন। আপনি আমাকে যুক্ত করতে চান এমন কোনও অতিরিক্ত বৈশিষ্ট্য?
সের্গেই কোলোডিয়াজনি

ব্যবহারকারীর একটি ফোল্ডার বিবেচনা করুন /home/message,। সাম্প্রতিক বার্তা ফাইলটি অনুলিপি করা এবং রেফারেন্সের জন্য সেখানে রাখা ভাল হবে।
ankit7540

@ ankit7540 করা যায়। এটি কেবল cpকমান্ডের সাথে একটি লাইন যুক্ত করার বিষয় , প্রথম যুক্তি হ'ল অ্যাডমিনের অনুলিপি এবং দ্বিতীয় যুক্তি /home/$( _get_username )/messages/$FILE.txtআমার ঘুমানোর দরকার আছে তবে আমি সকালে এটি যুক্ত করতে পারি। এটি কেবল একটি লাইন।
সের্গেই কোলোডিয়াজনি

এবং আপনি যদি ফাইলটি কেবলমাত্রকেট্যাট করতে চানcat $FILE >> /home/$( _get_username )/messages/Log_of_all_messages. txt
সের্গেই কলডিয়াজহনি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.