Sie können dies in der folgenden Konfiguration tun, die ein halbtransparentes Fenster erzeugt, das für eine beliebige Zeit bleibt:
Erstellen Sie in einem (beliebigen) Verzeichnis, in dem jeder der Benutzer zumindest hat lesen Berechtigungen für jeden Benutzer eine Nachrichtendatei, genau benannt nach jedem Benutzer Benutzernamen (Login - Namen), ohne Erweiterung, zB
jacob
Fügen Sie der Datei Text als Nachricht hinzu. Wenn Sie zunächst eine neue Nachricht hinzufügen ###
, zeigt das Skript automatisch die letzte Nachricht an. Der Text kann alles enthalten, was Sie möchten. Er sieht genauso aus, wie Sie ihn in die Datei eingefügt haben.
Die neueste Nachricht wird als latest_message.txt
Referenz in das Home-Verzeichnis des Benutzers kopiert .
So wie es ist, bleibt das Fenster 15 Sekunden lang, aber Sie können es auf einen beliebigen Wert einstellen, selbst wenn es automatisch von der Länge des Textes abhängt.
Eine Beispieldatei könnte folgendermaßen aussehen:
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!
Die Nachricht würde dann so aussehen:
Kopieren Sie das folgende Skript in eine leere Datei und bearbeiten Sie im Kopfbereich Ihres Skripts den Pfad zu dem Ordner, in dem Sie die Nachrichten des Benutzers speichern. Speichern Sie das Skript wie show_personalmessage
in (zB) /usr/local/bin
(das in sein sollte $PATH
und machen Sie es ausführbar (!) (Keine Erweiterung)
#!/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()
Erstellen Sie einen Launcher in /etc/xdg/autostart
[Desktop Entry]
Type=Application
Name=Splash
Exec=/bin/bash -c "sleep 10 && show_personalmessage"
Der Schlaf 10 soll sicherstellen, dass der Desktop "bereit" ist, das Fenster zu öffnen.
Erläuterung
- Starter in
/etc/xdg/autostart
Ausführungsbefehlen für jeden Benutzer bei der Anmeldung.
- Der Launcher führt dann das Fenster (vom Befehl aufgerufen
show_personalmessage
) aus, das in dem von Ihnen definierten Verzeichnis nach der personalisierten Nachricht sucht. Zusätzlich. Die letzte Nachricht wird in das Home-Verzeichnis des Benutzers kopiert.
- Bei Bedarf kann der Pfad zur Nachricht geändert oder mithilfe des
getpass
Moduls sogar benutzerspezifisch festgelegt werden , sodass das Skript (Fenster) in einem Verzeichnis nach einer benutzerspezifischen benannten Datei sucht. Bitte erwähnen Sie, ob dies erforderlich wäre.
zusätzlich
Das (Gtk) Fenster
- kann dazu gebracht werden, unter allem zu bleiben, als ob es Teil des Hintergrunds wäre
- kann Aufenthalt gemacht werden , auf der alles
- kann verschließbar gemacht werden
etc, etc ...
BEARBEITEN
Um Zeit zu sparen, schreiben Sie Nachrichten, wie im Chat beschrieben , unter einer Version des Skripts, in der Sie einige "permanente" Abschnitte einfügen können:
premsg
, die sich direkt unter "Willkommen Benutzer x" und dem Text Ihrer Nachricht befinden sollte, und
postmsg
, das als unterer Abschnitt Ihrer Nachricht kommt.
Beide Abschnitte können einfach durch Festlegen ""
eines Werts auf "Keine" gesetzt werden.
Das Skript
#!/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()
Hinweis
Natürlich, genau wie der Nachrichtenkörper kann gegenüber dem Vorjahr des Skript ändern , um die Pre- und Post - Nachrichten aus einer Datei zu lesen, die es noch bequemer zu halten macht. Hat es aus Gründen der Einfachheit in der Antwort so gefallen?