คุณสามารถทำได้ในการตั้งค่าต่อไปนี้ซึ่งจะสร้างหน้าต่างกึ่งโปร่งใสอยู่ในเวลาที่กำหนด:
สร้างในไดเรกทอรี (ใด ๆ ) ซึ่งผู้ใช้แต่ละคนมีสิทธิ์อ่านอย่างน้อยหนึ่งไฟล์สำหรับผู้ใช้แต่ละรายชื่อตรงตามชื่อผู้ใช้ของผู้ใช้แต่ละคน (ชื่อล็อกอิน) ไม่มีส่วนขยายเช่น
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!
ข้อความจะมีลักษณะดังนี้:
คัดลอกสคริปต์ด้านล่างลงในไฟล์ว่างแก้ไขในส่วนหัวของสคริปต์ของคุณเส้นทางไปยังโฟลเดอร์ที่คุณเก็บข้อความของผู้ใช้ บันทึกสคริปต์เช่นเดียวกับ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()
สร้างตัวเรียกใช้งานใน /etc/xdg/autostart
[Desktop Entry]
Type=Application
Name=Splash
Exec=/bin/bash -c "sleep 10 && show_personalmessage"
สลีป 10 คือเพื่อให้แน่ใจว่าเดสก์ท็อป "พร้อม" เพื่อเปิดหน้าต่าง
คำอธิบาย
/etc/xdg/autostart
เรียกใช้งานในคำสั่งเรียกใช้สำหรับผู้ใช้แต่ละคนเมื่อเข้าสู่ระบบ
- ตัวเรียกใช้งานจะเรียกใช้หน้าต่าง (เรียกใช้โดยคำสั่ง
show_personalmessage
) ซึ่งค้นหาข้อความที่ทำให้เป็นส่วนตัวในไดเรกทอรีที่คุณกำหนดไว้ นอกจากนี้ ข้อความล่าสุดจะถูกคัดลอกไปยังไดเรกทอรีบ้านของผู้ใช้
- หากจำเป็นต้องใช้พา ธ ไปยังข้อความสามารถเปลี่ยนแปลงได้แม้จะทำให้ผู้ใช้เฉพาะเจาะจงโดยใช้
getpass
-module เพื่อให้สคริปต์ (หน้าต่าง) จะค้นหาไฟล์ที่ระบุชื่อผู้ใช้เฉพาะในไดเรกทอรี กรุณาระบุว่าจะต้อง
นอกจากนี้
หน้าต่าง (Gtk)
- สามารถทำให้อยู่ด้านล่างทุกอย่างราวกับว่ามันจะเป็นส่วนหนึ่งของพื้นหลัง
- สามารถทำให้อยู่ด้านบนของทุกอย่าง
- สามารถทำปิดได้
ฯลฯ ฯลฯ ...
แก้ไข
หากต้องการประหยัดเวลาในการเขียนข้อความตามที่กล่าวไว้ในการแชทด้านล่างเวอร์ชันของสคริปต์ที่คุณสามารถรวมส่วน "ถาวร" สองสามส่วน:
premsg
ซึ่งควรอยู่ด้านล่าง "ยินดีต้อนรับผู้ใช้ x" และเนื้อหาของข้อความของคุณและ
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()
บันทึก
แน่นอนเช่นเดียวกับเนื้อหาข้อความyoy สามารถปรับเปลี่ยนสคริปต์เพื่ออ่านข้อความก่อนและโพสต์จากไฟล์ซึ่งทำให้สะดวกในการบำรุงรักษามากยิ่งขึ้น มันเป็นอย่างนี้ด้วยเหตุผลของความเรียบง่ายในคำตอบ