次の設定でそれを行うことができます。これにより、半透明のウィンドウが生成され、任意の時間だけ残ります。
、(任意の)ディレクトリに作成しているのユーザーのそれぞれ少なくともしている読み、各ユーザーのメッセージ・ファイルに対して、アクセス権を、正確例えば、各ユーザーのユーザー名の後に(名前でログ)という名前の、拡張子なし、
jacob
メッセージとしてファイルにテキストを追加します。新しいメッセージを追加する場合、から始めて###
、スクリプトは最後のメッセージを自動的に表示します。テキストには好きなものを含めることができ、ファイルに入れたとおりに見えます。
サンプルファイルは次のようになります。
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!
メッセージは次のようになります。
以下のスクリプトを空のファイルにコピーし、スクリプトのheadセクションで、ユーザーメッセージを保存するフォルダーへのパスを編集します。スクリプトを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)ウィンドウ
- 背景の一部であるかのように、すべての下に留まるようにすることができます
- すべての上に滞在することができます
- 閉鎖可能にすることができます
などなど...
編集
chatで説明されているように、いくつかの「永続的な」セクションを含めることができるスクリプトのバージョンの下で、メッセージを書く時間を節約するには:
premsg
、「Welcome user x」のすぐ下、メッセージ本文、
postmsg
、メッセージの下部にあります。
""
値として設定するだけで、両方のセクションをnoneに設定できます。
スクリプト
#!/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はスクリプトを変更してファイルから前後のメッセージを読み取ることができるため、メンテナンスがさらに便利になります。答えが単純であるという理由で、このようになりました。