From c712f456cb3b2e4d54edb28070b20fb7a30a27ad Mon Sep 17 00:00:00 2001 From: Kalev Lember Date: Tue, 1 May 2012 13:34:21 +0300 Subject: [PATCH] Desktop: Display a notification for starting the installer A git repo with anaconda-notification and anaconda-notification.desktop is currently set up at https://github.com/kalev/anaconda-notification --- fedora-live-desktop.ks | 82 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 82 insertions(+) diff --git a/fedora-live-desktop.ks b/fedora-live-desktop.ks index 54a4708..8184d47 100644 --- a/fedora-live-desktop.ks +++ b/fedora-live-desktop.ks @@ -57,6 +57,88 @@ if [ -f /usr/share/applications/liveinst.desktop ]; then favorite-apps=['firefox.desktop', 'evolution.desktop', 'empathy.desktop', 'rhythmbox.desktop', 'shotwell.desktop', 'openoffice.org-writer.desktop', 'nautilus.desktop', 'anaconda.desktop'] FOE + cat > /usr/bin/anaconda-notification << FOE +#!/usr/bin/env python + +from gi.repository import GLib +from gi.repository import Gio +from gi.repository import Notify +import sys +import os +import time + +def install_cb(n, action, data): + assert action == "install" + n.close() + os.execlp("liveinst", "liveinst") + +def closed_cb(user_data): + sys.exit() + +def get_anaconda_desktop_file(): + desktop_files = ['/usr/share/applications/anaconda.desktop', + '/usr/share/applications/liveinst.desktop'] + + for f in desktop_files: + if os.path.isfile(f): + return f + + return "" + +def show_notification(n): + # Spin 10 seconds, waiting for the notification service to start + retval = False + for i in range(1, 10): + try: + retval = n.show() + break + except: + time.sleep(1) + + return retval + +if __name__ == '__main__': + appinfo = Gio.DesktopAppInfo() + try: + desktop = appinfo.new_from_filename(get_anaconda_desktop_file()) + except: + sys.exit(1) + label = desktop.get_name() + actionlabel = desktop.get_generic_name() + + if not Notify.init(label): + sys.exit(1) + + n = Notify.Notification() + n.set_property("summary",label) + n.set_property("body", + "You are currently using an uninstalled live image.\n" + + "If you want to keep using Fedora, you can install " + + "it to your hard disk.") + n.set_property("icon-name","anaconda") + n.set_urgency(Notify.Urgency.CRITICAL) + + n.connect("closed", closed_cb) + n.add_action("install", actionlabel, install_cb, None, None) + + if not show_notification(n): + print "Failed to send notification" + sys.exit(1) + + GLib.MainLoop().run() +FOE + chmod +x /usr/bin/anaconda-notification + + mkdir -p ~liveuser/.config/autostart + cat > ~liveuser/.config/autostart/anaconda-notification.desktop << FOE +[Desktop Entry] +Name=Fedora Install Notification +Exec=anaconda-notification +Type=Application +X-GNOME-Autostart-enabled=true +FOE + + chown -R liveuser:liveuser /home/liveuser/.config/ fi # rebuild schema cache with any overrides we installed