#! /usr/bin/python
# -*- coding=utf-8 -*-

FALLBACK_COMMAND = "metacity"
FALLBACK_ARGS = ("--replace",)

import os, sys, gettext
from gi.repository import Gtk

gettext.install("cinnamon", "/usr/share/linuxmint/locale")

def confirm(message):
    d = Gtk.MessageDialog(None, 0, Gtk.MessageType.QUESTION, Gtk.ButtonsType.YES_NO)
    d.set_keep_above(True)
    d.set_markup("<span size='large'><b>%s</b></span>" % message)
    d.show_all()
    resp = d.run()
    d.destroy()
    return (resp == Gtk.ResponseType.YES)

if __name__ == "__main__":
    cinnamon_pid = os.fork()
    if cinnamon_pid == 0:
        os.execvp("cinnamon", ("",) + tuple(sys.argv[1:]))
    else:
        exit_status = os.waitpid(cinnamon_pid, 0)[1]
        if exit_status != 0:
            if os.fork() == 0:
                os.execvp(FALLBACK_COMMAND, ("",) + FALLBACK_ARGS)
            else:
                if confirm(_("Cinnamon crashed.\nDo you want to restart it ?")):
                    os.execvp(sys.argv[0], ("", "--replace"))
