Anda dapat melakukannya di pengaturan berikut, yang akan menghasilkan jendela semi-transparan, tetap untuk waktu yang sewenang-wenang:
Buat di direktori (apa saja), di mana masing-masing pengguna setidaknya memiliki izin baca , untuk setiap pengguna file pesan, persis diberi nama setelah setiap nama pengguna pengguna (nama login), tanpa ekstensi, mis.
jacob
Tambahkan teks ke file sebagai pesan Anda. Jika Anda menambahkan pesan baru , mulailah dengan ###
, skrip kemudian akan secara otomatis menampilkan pesan terakhir. Teks dapat berisi apa pun yang Anda suka, itu akan terlihat persis seperti Anda memasukkannya ke dalam file.
The terbaru pesan, akan disalin sebagai latest_message.txt
direktori home user untuk referensi.
Karena itu, jendela akan tetap selama 15 detik, tetapi Anda dapat mengaturnya ke nilai apa pun, bahkan membuatnya secara otomatis tergantung pada panjang teks.
Contoh file dapat terlihat seperti:
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!
Pesannya kemudian akan terlihat seperti:
Salin skrip di bawah ini ke file kosong, edit di bagian kepala skrip Anda path ke folder tempat Anda menyimpan pesan-pesan pengguna. Simpan skrip seperti show_personalmessage
dalam (mis.) /usr/local/bin
(Yang seharusnya ada di dalam $PATH
dan membuatnya dapat dieksekusi (!) (Tanpa ekstensi)
#!/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()
Buat peluncur di /etc/xdg/autostart
[Desktop Entry]
Type=Application
Name=Splash
Exec=/bin/bash -c "sleep 10 && show_personalmessage"
Tidur 10 adalah untuk memastikan desktop "siap" untuk membuka jendela.
Penjelasan
- Peluncur dalam
/etc/xdg/autostart
menjalankan perintah untuk setiap pengguna saat masuk.
- Peluncur kemudian menjalankan jendela (dipanggil oleh perintah
show_personalmessage
), yang mencari pesan yang dipersonalisasi di direktori yang Anda tentukan. Selain itu. Pesan terbaru disalin ke direktori home pengguna.
- Jika diperlukan, jalur ke pesan dapat diubah, bahkan dibuat khusus pengguna dengan menggunakan
getpass
-module, sehingga skrip (jendela) akan mencari file bernama khusus pengguna dalam direktori. Harap sebutkan jika itu diperlukan.
Selain itu
Jendela (Gtk)
- dapat dibuat untuk tetap di bawah segalanya, seolah-olah itu akan menjadi bagian dari latar belakang
- dapat dibuat tetap di atas segalanya
- dapat dibuat dekat
dll, dll ...
EDIT
Untuk menghemat waktu menulis pesan, seperti yang dibahas dalam obrolan , di bawah versi skrip tempat Anda dapat menyertakan beberapa bagian "permanen":
premsg
, yang seharusnya tepat di bawah "Selamat datang pengguna x", dan isi pesan Anda, dan
postmsg
, yang muncul di bagian bawah pesan Anda.
Kedua bagian dapat disetel ke tidak ada, hanya dengan menetapkan ""
sebagai nilai.
Naskah
#!/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()
Catatan
Tentu saja, seperti halnya badan pesan , Anda dapat mengubah skrip untuk membaca pesan sebelum dan sesudah dari sebuah file, yang membuatnya lebih nyaman untuk dipelihara. Apakah itu seperti ini, karena alasan kesederhanaan dalam jawabannya.