Berikut ini diuji dengan Ubuntu 13.04 dan sistem Python, menggunakan Gtk bindings (PyGobject).
Ini adalah salah satu cara yang agak kotor dan perlu penyelidikan lebih lanjut:
Ringkasan
Tambahkan .desktop
file di /usr/share/xsessions
kami akan beri namacustom
Tambahkan .xsession
file pada pengguna yang dipermasalahkan (anak-anak Anda) kami beri nama pengguna merekakid
Buat aplikasi Python GUI untuk puzzle matematika dan jalankan dari .xsession
, kita akan menamainya sebagaipuzzle.py
Detail
sudo vi /usr/share/xsessions/custom.desktop
Tambahkan yang berikut dalam file:
[Desktop Entry]
Name=Custom
Comment=This session logs you into your managed desktop environment
Exec=/etc/X11/Xsession
X-Ubuntu-Gettext-Domain=gnome-session-3.0
Tambahkan yang berikut dalam file:
#!/bin/bash
lightdm &
exec /home/kid/puzzle.py
Tambahkan yang berikut dalam file:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import subprocess
import random
from gi.repository import Gtk
#----------------------------------------------------------------------
class PuzzleWindow(Gtk.Window):
def __init__(self):
Gtk.Window.__init__(self, title="Math Puzzle", resizable=False)
super(PuzzleWindow, self).set_position(Gtk.WindowPosition.CENTER)
super(PuzzleWindow, self).maximize()
self.a_number = random.randint(1, 5)
self.b_number = random.randint(1, 5)
self.result = self.a_number + self.b_number
self.vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL, spacing=5)
self.label = Gtk.Label("What is the sum of the numbers bellow?")
self.number_label = Gtk.Label("{num_a} + {num_b}".format(
num_a=self.a_number, num_b=self.b_number))
self.entry = Gtk.Entry()
self.button = Gtk.Button(label="Check answer!")
self.button.connect("clicked", self.on_button_clicked)
self.vbox.pack_start(self.label, True, True, 0)
self.vbox.pack_start(self.number_label, True, True, 0)
self.vbox.pack_start(self.entry, True, True, 0)
self.vbox.pack_start(self.button, True, True, 0)
self.add(self.vbox)
def on_button_clicked(self, widget):
if int(self.entry.get_text()) == self.result:
subprocess.call("unity &", shell=True)
else:
self.label.set_text("Wrong answer, try again.")
#----------------------------------------------------------------------
def main():
"""Application's entry point"""
win = PuzzleWindow()
win.connect("delete-event", Gtk.main_quit)
win.show_all()
Gtk.main()
if __name__ == "__main__":
main()
Hasil:
- Jika Anda keluar, pada layar masuk Anda akan melihat sesi baru bernama Kustom.
- Dengan memilih sesi khusus dan setelah login berhasil, Anda akan disajikan oleh jendela PyGtk kecil (menggunakan pygobject) meminta puzzle matematika. Tidak akan ada bilah atas, peluncur, dan widget desktop default lainnya:
- Jika Anda menjawab dengan benar, Unity akan memuat ...
Perlu penelitian lebih lanjut, tetapi saya harap ini membantu sebagai titik awal.