From: Lennart Poettering Date: Fri, 17 Sep 2010 00:32:48 +0000 (+0200) Subject: ask-password: popup notification when we ask for a password X-Git-Tag: v11~131 X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=commitdiff_plain;h=efb3237ee69bc593b11bc828791ee48ba6cc4f5c;ds=sidebyside ask-password: popup notification when we ask for a password --- diff --git a/Makefile.am b/Makefile.am index 5f11e4fb7..aa4798d83 100644 --- a/Makefile.am +++ b/Makefile.am @@ -736,6 +736,7 @@ systemd_ask_password_agent_VALAFLAGS = \ --pkg=gtk+-2.0 \ --pkg=linux \ --pkg=gio-unix-2.0 \ + --pkg=libnotify \ -g systemd_ask_password_agent_LDADD = \ diff --git a/configure.ac b/configure.ac index 334b1e263..e3c1fdde0 100644 --- a/configure.ac +++ b/configure.ac @@ -226,7 +226,7 @@ AC_SUBST(AUDIT_LIBS) have_gtk=no AC_ARG_ENABLE(gtk, AS_HELP_STRING([--disable-gtk], [disable GTK tools])) if test "x$enable_gtk" != "xno"; then - PKG_CHECK_MODULES(GTK, [ gtk+-2.0 gio-unix-2.0 ], + PKG_CHECK_MODULES(GTK, [ gtk+-2.0 gio-unix-2.0 libnotify ], [AC_DEFINE(HAVE_GTK, 1, [Define if GTK is available]) have_gtk=yes], have_gtk=no) AC_SUBST(GTK_CFLAGS) AC_SUBST(GTK_LIBS) diff --git a/src/ask-password-agent.vala b/src/ask-password-agent.vala index 5355bb469..1523e2e3b 100644 --- a/src/ask-password-agent.vala +++ b/src/ask-password-agent.vala @@ -22,6 +22,7 @@ using GLib; using DBus; using Linux; using Posix; +using Notify; [CCode (cheader_filename = "time.h")] extern int clock_gettime(int id, out timespec ts); @@ -84,7 +85,7 @@ public class MyStatusIcon : StatusIcon { public MyStatusIcon() throws GLib.Error { GLib.Object(icon_name : "dialog-password"); - set_title("System Password Agent"); + set_title("System Password"); directory = File.new_for_path("/dev/.systemd/ask-password/"); file_monitor = directory.monitor_directory(0); @@ -138,7 +139,7 @@ public class MyStatusIcon : StatusIcon { } - bool load_password() { + bool load_password() throws GLib.Error { KeyFile key_file = new KeyFile(); @@ -179,6 +180,12 @@ public class MyStatusIcon : StatusIcon { set_from_icon_name(icon); set_visible(true); + + Notification n = new Notification(title, message, icon, null); + n.attach_to_status_icon(this); + n.set_timeout(5000); + n.show(); + return true; } @@ -236,6 +243,7 @@ void show_error(string e) { int main(string[] args) { try { Gtk.init_with_args(ref args, "[OPTION...]", entries, "systemd-ask-password-agent"); + Notify.init("Password Agent"); MyStatusIcon i = new MyStatusIcon(); Gtk.main();