Bunu, yarı saydam bir pencere oluşturacak ve keyfi bir süre kalacak olan aşağıdaki kurulumda yapabilirsiniz:
Bir (herhangi bir) dizininde oluşturun hangi kullanıcıların her azından gelmiştir okunan her kullanıcı bir mesaj dosyası için, izinleri tam olarak örneğin her kullanıcının adınızdan sonra (isim günlüğü) adında, hiçbir uzantısı
jacob
Mesajınıza dosyaya metin ekleyin. Yeni bir mesaj eklerseniz , ile başlayın ###
, komut dosyası otomatik olarak son mesajı görüntüler. Metin istediğiniz herhangi bir şeyi içerebilir, tam olarak dosyaya koyduğunuz gibi görünecektir.
En son mesaj, latest_message.txt
referans olarak kullanıcının ana dizinine kopyalanacaktır .
Olduğu gibi, pencere 15 saniye kalacaktır, ancak metni otomatik olarak metnin uzunluğuna bağlı bile olsa herhangi bir değere ayarlayabilirsiniz.
Örnek bir dosya şöyle görünebilir:
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!
Mesaj daha sonra şöyle görünecektir:
Aşağıdaki komut dosyasını boş bir dosyaya kopyalayın, komut dosyanızın kafa bölümünde kullanıcı iletilerini depoladığınız klasörün yolunu düzenleyin. Komut dosyasını show_personalmessage
(örn.) Olarak kaydedin /usr/local/bin
(içinde olması $PATH
ve çalıştırılabilir olması gerekir (!) (Uzantı yok)
#!/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()
İçinde bir başlatıcı oluşturun /etc/xdg/autostart
[Desktop Entry]
Type=Application
Name=Splash
Exec=/bin/bash -c "sleep 10 && show_personalmessage"
Uyku 10, masaüstünün pencereyi açmaya "hazır" olduğundan emin olmaktır.
açıklama
- Başlatıcılar , oturum açan her kullanıcı için
/etc/xdg/autostart
komutları çalıştırır .
- Başlatıcı daha sonra
show_personalmessage
tanımladığınız dizinde kişiselleştirilmiş mesajı arayan pencereyi (komut tarafından çağrılır) çalıştırır . Bunlara ek olarak. En son mesaj kullanıcının ana dizinine kopyalanır.
- Gerekirse, iletinin yolu değiştirilebilir, hatta
getpass
-module kullanılarak kullanıcıya özgü hale getirilebilir , böylece komut dosyası (pencere) bir dizinde kullanıcıya özgü adlandırılmış bir dosya arar. Bunun gerekip gerekmediğini lütfen belirtin.
bunlara ek olarak
(Gtk) penceresi
- sanki arka planın bir parçası gibi her şeyin altında kalmak için yapılabilir
- her şeyin üstünde kalmak yapılabilir
- kapatılabilir yapılabilir
vesaire vesaire...
DÜZENLE
Sohbette tartışıldığı gibi birkaç "kalıcı" bölüm içerebileceğiniz bir sürümün altında mesaj yazarken zaman kazanmak için :
premsg
, "Hoşgeldin kullanıcı x" ifadesinin ve iletinizin gövdesinin hemen altında olmalıdır ve
postmsg
, iletinizin alt bölümü olarak gelir.
Her iki bölüm de yalnızca ""
değer olarak ayarlanarak yok olarak ayarlanabilir .
Senaryo
#!/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()
Not
Tabii ki, mesaj gövdesi gibi , yoy da bir dosyadaki mesajları ön ve posta okumak için komut dosyasını değiştirebilir, bu da bakımını daha da kolaylaştırır. Yanıttaki basitlik nedenlerinden ötürü böyle yaptım.