Index: gnome-settings-daemon-3.6.3/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in =================================================================== --- gnome-settings-daemon-3.6.3.orig/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in +++ gnome-settings-daemon-3.6.3/data/org.gnome.settings-daemon.plugins.power.gschema.xml.in.in @@ -148,5 +148,10 @@ <_summary>If we should show the recalled battery warning for a broken battery <_description>If we should show the recalled battery warning for a broken battery. Set this to false only if you know your battery is okay. + + true + <_summary>If an information message should be displayed when returning from idle sleep. + <_description>If an information message should be displayed when returning from idle sleep. + Index: gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c =================================================================== --- gnome-settings-daemon-3.6.3.orig/plugins/power/gsd-power-manager.c +++ gnome-settings-daemon-3.6.3/plugins/power/gsd-power-manager.c @@ -194,6 +194,7 @@ struct GsdPowerManagerPrivate UpDevice *device_composite; NotifyNotification *notification_discharging; NotifyNotification *notification_low; + NotifyNotification *notification_resumed; ca_context *canberra_context; ca_proplist *critical_alert_loop_props; guint32 critical_alert_timeout_id; @@ -204,6 +205,7 @@ struct GsdPowerManagerPrivate GtkStatusIcon *status_icon; guint xscreensaver_watchdog_timer_id; gboolean is_virtual_machine; + GsdPowerActionType last_idle_power_action; /* systemd stuff */ GDBusProxy *logind_proxy; @@ -2909,6 +2911,49 @@ kbd_backlight_dim (GsdPowerManager *mana } static void +show_resumed_notification (GsdPowerManager *manager) +{ + GError *error = NULL; + gboolean ret; + + /* don't show when running under GDM */ + if (g_getenv ("RUNNING_UNDER_GDM") != NULL) { + g_debug ("running under gdm, so no notification"); + return; + } + + ret = g_settings_get_boolean (manager->priv->settings, "notify-idle-resumed"); + if (!ret) + return; + + /* close any existing notification of this class */ + notify_close_if_showing (manager->priv->notification_resumed); + + /* create a new notification */ + create_notification (_("System resumed from sleep"), + _("The system automatically went to sleep because the system was idle."), + NULL, + &manager->priv->notification_resumed); + notify_notification_set_timeout (manager->priv->notification_resumed, + GSD_POWER_MANAGER_NOTIFY_TIMEOUT_SHORT); + notify_notification_set_urgency (manager->priv->notification_resumed, + NOTIFY_URGENCY_NORMAL); + /* TRANSLATORS: this is the notification application name */ + notify_notification_set_app_name (manager->priv->notification_resumed, _("Power")); + notify_notification_set_hint (manager->priv->notification_resumed, + "transient", g_variant_new_boolean (TRUE)); + + /* try to show */ + ret = notify_notification_show (manager->priv->notification_resumed, + &error); + if (!ret) { + g_warning ("failed to show notification: %s", error->message); + g_error_free (error); + g_object_unref (manager->priv->notification_resumed); + } +} + +static void idle_set_mode (GsdPowerManager *manager, GsdPowerIdleMode mode) { gboolean ret = FALSE; @@ -3012,6 +3057,8 @@ idle_set_mode (GsdPowerManager *manager, action_type = g_settings_get_enum (manager->priv->settings, "sleep-inactive-ac-type"); } + + manager->priv->last_idle_power_action = action_type; do_power_action_type (manager, action_type); /* turn on screen and restore user-selected brightness level */ @@ -3066,7 +3113,6 @@ idle_set_mode (GsdPowerManager *manager, } manager->priv->kbd_brightness_pre_dim = -1; } - } } @@ -3932,6 +3978,12 @@ handle_resume_actions (GsdPowerManager * notify_close_if_showing (manager->priv->notification_low); notify_close_if_showing (manager->priv->notification_discharging); + if (manager->priv->last_idle_power_action == GSD_POWER_ACTION_SUSPEND || + manager->priv->last_idle_power_action == GSD_POWER_ACTION_HIBERNATE) + show_resumed_notification (manager); + + manager->priv->last_idle_power_action = GSD_POWER_ACTION_NOTHING; + /* ensure we turn the panel back on after resume */ ret = gnome_rr_screen_set_dpms_mode (manager->priv->x11_screen, GNOME_RR_DPMS_ON,