works, gonna start separating stuff
authorozzloy <ozzloy+github_com@gmail.com>
Fri, 27 Feb 2009 08:23:37 +0000 (00:23 -0800)
committerozzloy <ozzloy+github_com@gmail.com>
Fri, 27 Feb 2009 08:23:37 +0000 (00:23 -0800)
activate_screensaver.bash [new file with mode: 0755]
dbushello.c [deleted file]
monitor_idle.pl [new file with mode: 0755]
sleep.cpp [deleted file]

diff --git a/activate_screensaver.bash b/activate_screensaver.bash
new file mode 100755 (executable)
index 0000000..f94b86f
--- /dev/null
@@ -0,0 +1,2 @@
+#!/usr/bin/env bash
+gnome-screensaver-command -a
diff --git a/dbushello.c b/dbushello.c
deleted file mode 100644 (file)
index 47030c2..0000000
+++ /dev/null
@@ -1,65 +0,0 @@
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-#include <stdlib.h>
-#include <stdio.h>
-
-       int
-main (int argc, char **argv)
-{
-       DBusGConnection *connection;
-       GError *error;
-       DBusGProxy *proxy;
-       char **name_list;
-       char **name_list_ptr;
-
-       g_type_init ();
-
-       error = NULL;
-       connection = dbus_g_bus_get (DBUS_BUS_SESSION,
-                       &error);
-       if (connection == NULL)
-       {
-               g_printerr ("Failed to open connection to bus: %s\n",
-                               error->message);
-               g_error_free (error);
-               exit (1);
-       }
-
-       /* Create a proxy object for the "bus driver" (name "org.freedesktop.DBus") */
-
-       proxy = dbus_g_proxy_new_for_name (connection,
-                       DBUS_SERVICE_DBUS,
-                       DBUS_PATH_DBUS,
-                       DBUS_INTERFACE_DBUS);
-
-       /* Call ListNames method, wait for reply */
-       error = NULL;
-       if (!dbus_g_proxy_call (proxy, "ListNames", &error, G_TYPE_INVALID,
-                               G_TYPE_STRV, &name_list, G_TYPE_INVALID))
-       {
-               /* Just do demonstrate remote exceptions versus regular GError */
-               if (error->domain == DBUS_GERROR && error->code == DBUS_GERROR_REMOTE_EXCEPTION)
-                       g_printerr ("Caught remote method exception %s: %s",
-                                       dbus_g_error_get_name (error),
-                                       error->message);
-               else
-                       g_printerr ("Error: %s\n", error->message);
-               g_error_free (error);
-               exit (1);
-       }
-
-       /* Print the results */
-
-       g_print ("Names on the message bus:\n");
-
-       for (name_list_ptr = name_list; *name_list_ptr; name_list_ptr++)
-       {
-               g_print ("  %s\n", *name_list_ptr);
-       }
-       g_strfreev (name_list);
-
-       g_object_unref (proxy);
-
-       return 0;
-}
-
diff --git a/monitor_idle.pl b/monitor_idle.pl
new file mode 100755 (executable)
index 0000000..25eba62
--- /dev/null
@@ -0,0 +1,13 @@
+#!/usr/bin/env perl
+
+my $cmd = "dbus-monitor --session \"type='signal',interface='org.gnome.ScreenSaver',member='SessionIdleChanged'\"";
+
+open (IN, "$cmd |");
+
+while (<IN>) {
+    if (m/^\s+boolean true/) {
+        `./hello-world`;
+    } elsif (m/^\s+boolean false/) {
+        print "*** Session is no longer idle ***\n";
+    }
+}
diff --git a/sleep.cpp b/sleep.cpp
deleted file mode 100644 (file)
index df097cd..0000000
--- a/sleep.cpp
+++ /dev/null
@@ -1,459 +0,0 @@
-//http://www.gnome.org/~mccann/gnome-screensaver/docs/gnome-screensaver.html#gs-method-SimulateUserActivity
-//simulate user activity might be better than the following:
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*-
-
-        Copyright (C) 2004-2006 Bastien Nocera <hadess@hadess.net>
-
-        The Gnome Library is free software; you can redistribute it and/or
-        modify it under the terms of the GNU Library General Public License as
-        published by the Free Software Foundation; either version 2 of the
-        License, or (at your option) any later version.
-
-        The Gnome Library is distributed in the hope that it will be useful,
-        but WITHOUT ANY WARRANTY; without even the implied warranty of
-        MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-        Library General Public License for more details.
-
-        You should have received a copy of the GNU Library General Public
-        License along with the Gnome Library; see the file COPYING.LIB. If not,
-        write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
-        Boston, MA 02110-1301 USA.
-
-Author: Bastien Nocera <hadess@hadess.net>
-*/
-
-
-#include "config.h"
-
-#include <glib/gi18n.h>
-
-#include <gdk/gdk.h>
-
-#ifdef GDK_WINDOWING_X11
-#include <gdk/gdkx.h>
-#include <X11/keysym.h>
-
-#ifdef HAVE_XTEST
-#include <X11/extensions/XTest.h>
-#endif /* HAVE_XTEST */
-#endif /* GDK_WINDOWING_X11 */
-
-#ifdef WITH_DBUS
-#include <dbus/dbus.h>
-#include <dbus/dbus-glib.h>
-
-#define GS_SERVICE "org.gnome.ScreenSaver"
-#define GS_PATH "/org/gnome/ScreenSaver"
-#define GS_INTERFACE "org.gnome.ScreenSaver"
-#endif /* WITH_DBUS */
-
-#include "totem-scrsaver.h"
-
-#define XSCREENSAVER_MIN_TIMEOUT 60
-
-static GObjectClass *parent_class = NULL;
-static void totem_scrsaver_finalize (GObject *object);
-
-
-struct TotemScrsaverPrivate {
-       /* Whether the screensaver is disabled */
-       gboolean disabled;
-
-#ifdef WITH_DBUS
-       DBusGConnection *connection;
-       DBusGProxy *gs_proxy;
-       guint32 cookie;
-#endif /* WITH_DBUS */
-
-       /* To save the screensaver info */
-       int timeout;
-       int interval;
-       int prefer_blanking;
-       int allow_exposures;
-
-       /* For use with XTest */
-       int keycode1, keycode2;
-       int *keycode;
-       gboolean have_xtest;
-};
-
-G_DEFINE_TYPE(TotemScrsaver, totem_scrsaver, G_TYPE_OBJECT)
-
-       static gboolean
-screensaver_is_running_dbus (TotemScrsaver *scr)
-{
-#ifdef WITH_DBUS
-       if (! scr->priv->connection)
-               return FALSE;
-
-       if (! scr->priv->gs_proxy)
-               return FALSE;
-
-       return TRUE;
-#else
-       return FALSE;
-#endif /* WITH_DBUS */
-}
-
-       static void
-screensaver_inhibit_dbus (TotemScrsaver *scr,
-               gboolean inhibit)
-{
-#ifdef WITH_DBUS
-       GError *error;
-       gboolean res;
-
-       g_return_if_fail (scr != NULL);
-       g_return_if_fail (scr->priv->connection != NULL);
-       g_return_if_fail (scr->priv->gs_proxy != NULL);
-
-       error = NULL;
-       if (inhibit) {
-               char *application;
-               char *reason;
-               guint32 cookie;
-
-               application = g_strdup ("Totem");
-               reason = g_strdup (_("Playing a movie"));
-
-               res = dbus_g_proxy_call (scr->priv->gs_proxy,
-                               "Inhibit",
-                               &error,
-                               G_TYPE_STRING, application,
-                               G_TYPE_STRING, reason,
-                               G_TYPE_INVALID,
-                               G_TYPE_UINT, &cookie,
-                               G_TYPE_INVALID);
-
-               if (res) {
-                       /* save the cookie */
-                       scr->priv->cookie = cookie;
-               } else {
-                       /* try the old API */
-                       res = dbus_g_proxy_call (scr->priv->gs_proxy,
-                                       "InhibitActivation",
-                                       &error,
-                                       G_TYPE_STRING, reason,
-                                       G_TYPE_INVALID,
-                                       G_TYPE_INVALID);
-               }
-
-               g_free (reason);
-               g_free (application);
-
-       } else {
-               res = dbus_g_proxy_call (scr->priv->gs_proxy,
-                               "UnInhibit",
-                               &error,
-                               G_TYPE_UINT, scr->priv->cookie,
-                               G_TYPE_INVALID,
-                               G_TYPE_INVALID);
-               if (res) {
-                       /* clear the cookie */
-                       scr->priv->cookie = 0;
-               } else {
-                       /* try the old API */
-                       res = dbus_g_proxy_call (scr->priv->gs_proxy,
-                                       "AllowActivation",
-                                       &error,
-                                       G_TYPE_INVALID,
-                                       G_TYPE_INVALID);
-               }
-       }
-
-       if (! res) {
-               if (error) {
-                       g_warning ("Problem inhibiting the screensaver: %s", error->message);
-                       g_error_free (error);
-               }
-       }
-#endif /* WITH_DBUS */
-}
-
-       static void
-screensaver_enable_dbus (TotemScrsaver *scr)
-{
-       screensaver_inhibit_dbus (scr, FALSE);
-}
-
-       static void
-screensaver_disable_dbus (TotemScrsaver *scr)
-{
-       screensaver_inhibit_dbus (scr, TRUE);
-}
-
-#ifdef WITH_DBUS
-       static void
-gs_proxy_destroy_cb (GObject *proxy,
-               TotemScrsaver *scr)
-{
-       g_warning ("Detected that GNOME screensaver has left the bus");
-
-       /* just invalidate for now */
-       scr->priv->gs_proxy = NULL;
-}
-#endif
-
-       static void
-screensaver_init_dbus (TotemScrsaver *scr)
-{
-#ifdef WITH_DBUS
-       GError *error = NULL;
-
-       scr->priv->connection = dbus_g_bus_get (DBUS_BUS_SESSION, &error);
-
-       if (! scr->priv->connection) {
-               if (error) {
-                       g_warning ("Failed to connect to the session bus: %s", error->message);
-                       g_error_free (error);
-               }
-               return;
-       }
-
-       scr->priv->gs_proxy = dbus_g_proxy_new_for_name_owner (scr->priv->connection,
-                       GS_SERVICE,
-                       GS_PATH,
-                       GS_INTERFACE,
-                       NULL);
-       if (scr->priv->gs_proxy != NULL) {
-               g_signal_connect_object (scr->priv->gs_proxy,
-                               "destroy",
-                               G_CALLBACK (gs_proxy_destroy_cb),
-                               scr,
-                               0);
-
-       }
-
-#endif /* WITH_DBUS */
-}
-
-       static void
-screensaver_finalize_dbus (TotemScrsaver *scr)
-{
-#ifdef WITH_DBUS
-       if (scr->priv->gs_proxy) {
-               g_object_unref (scr->priv->gs_proxy);
-       }
-#endif /* WITH_DBUS */
-}
-
-#ifdef GDK_WINDOWING_X11
-       static void
-screensaver_enable_x11 (TotemScrsaver *scr)
-{
-
-#ifdef HAVE_XTEST
-       if (scr->priv->have_xtest != FALSE)
-       {
-               g_source_remove_by_user_data (scr);
-               return;
-       }
-#endif /* HAVE_XTEST */
-
-       XLockDisplay (GDK_DISPLAY());
-       XSetScreenSaver (GDK_DISPLAY(),
-                       scr->priv->timeout,
-                       scr->priv->interval,
-                       scr->priv->prefer_blanking,
-                       scr->priv->allow_exposures);
-       XUnlockDisplay (GDK_DISPLAY());
-}
-
-#ifdef HAVE_XTEST
-       static gboolean
-fake_event (TotemScrsaver *scr)
-{
-       if (scr->priv->disabled)
-       {
-               XLockDisplay (GDK_DISPLAY());
-               XTestFakeKeyEvent (GDK_DISPLAY(), *scr->priv->keycode,
-                               True, CurrentTime);
-               XTestFakeKeyEvent (GDK_DISPLAY(), *scr->priv->keycode,
-                               False, CurrentTime);
-               XUnlockDisplay (GDK_DISPLAY());
-               /* Swap the keycode */
-               if (scr->priv->keycode == &scr->priv->keycode1)
-                       scr->priv->keycode = &scr->priv->keycode2;
-               else
-                       scr->priv->keycode = &scr->priv->keycode1;
-       }
-
-       return TRUE;
-}
-#endif /* HAVE_XTEST */
-
-       static void
-screensaver_disable_x11 (TotemScrsaver *scr)
-{
-
-#ifdef HAVE_XTEST
-       if (scr->priv->have_xtest != FALSE)
-       {
-               XLockDisplay (GDK_DISPLAY());
-               XGetScreenSaver(GDK_DISPLAY(), &scr->priv->timeout,
-                               &scr->priv->interval,
-                               &scr->priv->prefer_blanking,
-                               &scr->priv->allow_exposures);
-               XUnlockDisplay (GDK_DISPLAY());
-
-               if (scr->priv->timeout != 0) {
-                       g_timeout_add_seconds (scr->priv->timeout / 2,
-                                       (GSourceFunc) fake_event, scr);
-               } else {
-                       g_timeout_add_seconds (XSCREENSAVER_MIN_TIMEOUT / 2,
-                                       (GSourceFunc) fake_event, scr);
-               }
-
-               return;
-       }
-#endif /* HAVE_XTEST */
-
-       XLockDisplay (GDK_DISPLAY());
-       XGetScreenSaver(GDK_DISPLAY(), &scr->priv->timeout,
-                       &scr->priv->interval,
-                       &scr->priv->prefer_blanking,
-                       &scr->priv->allow_exposures);
-       XSetScreenSaver(GDK_DISPLAY(), 0, 0,
-                       DontPreferBlanking, DontAllowExposures);
-       XUnlockDisplay (GDK_DISPLAY());
-}
-
-       static void
-screensaver_init_x11 (TotemScrsaver *scr)
-{
-#ifdef HAVE_XTEST
-       int a, b, c, d;
-
-       XLockDisplay (GDK_DISPLAY());
-       scr->priv->have_xtest = (XTestQueryExtension (GDK_DISPLAY(), &a, &b, &c, &d) == True);
-       if (scr->priv->have_xtest != FALSE)
-       {
-               scr->priv->keycode1 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_L);
-               if (scr->priv->keycode1 == 0) {
-                       g_warning ("scr->priv->keycode1 not existant");
-               }
-               scr->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_R);
-               if (scr->priv->keycode2 == 0) {
-                       scr->priv->keycode2 = XKeysymToKeycode (GDK_DISPLAY(), XK_Alt_L);
-                       if (scr->priv->keycode2 == 0) {
-                               g_warning ("scr->priv->keycode2 not existant");
-                       }
-               }
-               scr->priv->keycode = &scr->priv->keycode1;
-       }
-       XUnlockDisplay (GDK_DISPLAY());
-#endif /* HAVE_XTEST */
-}
-
-       static void
-screensaver_finalize_x11 (TotemScrsaver *scr)
-{
-       g_source_remove_by_user_data (scr);
-}
-#endif
-
-       static void
-totem_scrsaver_class_init (TotemScrsaverClass *klass)
-{
-       GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
-       parent_class = g_type_class_peek_parent (klass);
-
-       object_class->finalize = totem_scrsaver_finalize;
-}
-
-       TotemScrsaver *
-totem_scrsaver_new (void)
-{
-       return TOTEM_SCRSAVER (g_object_new (TOTEM_TYPE_SCRSAVER, NULL));
-}
-
-       static void
-totem_scrsaver_init (TotemScrsaver *scr)
-{
-       scr->priv = g_new0 (TotemScrsaverPrivate, 1);
-
-       screensaver_init_dbus (scr);
-#ifdef GDK_WINDOWING_X11
-       screensaver_init_x11 (scr);
-#else
-#warning Unimplemented
-#endif
-}
-
-       void
-totem_scrsaver_disable (TotemScrsaver *scr)
-{
-       g_return_if_fail (TOTEM_SCRSAVER (scr));
-
-       if (scr->priv->disabled != FALSE)
-               return;
-
-       scr->priv->disabled = TRUE;
-
-       if (screensaver_is_running_dbus (scr) != FALSE)
-               screensaver_disable_dbus (scr);
-       else
-#ifdef GDK_WINDOWING_X11
-               screensaver_disable_x11 (scr);
-#else
-#warning Unimplemented
-       {}
-#endif
-}
-
-       void
-totem_scrsaver_enable (TotemScrsaver *scr)
-{
-       g_return_if_fail (TOTEM_SCRSAVER (scr));
-
-       if (scr->priv->disabled == FALSE)
-               return;
-
-       scr->priv->disabled = FALSE;
-
-       if (screensaver_is_running_dbus (scr) != FALSE)
-               screensaver_enable_dbus (scr);
-       else
-#ifdef GDK_WINDOWING_X11
-               screensaver_enable_x11 (scr);
-#else
-#warning Unimplemented
-       {}
-#endif
-}
-
-       void
-totem_scrsaver_set_state (TotemScrsaver *scr, gboolean enable)
-{
-       g_return_if_fail (TOTEM_SCRSAVER (scr));
-
-       if (scr->priv->disabled == !enable)
-               return;
-
-       scr->priv->disabled = !enable;
-       if (scr->priv->disabled != FALSE)
-               totem_scrsaver_disable (scr);
-       else
-               totem_scrsaver_enable (scr);
-}
-
-       static void
-totem_scrsaver_finalize (GObject *object)
-{
-       TotemScrsaver *scr = TOTEM_SCRSAVER (object);
-
-       screensaver_finalize_dbus (scr);
-#ifdef GDK_WINDOWING_X11
-       screensaver_finalize_x11 (scr);
-#else
-#warning Unimplemented
-       {}
-#endif
-
-       g_free (scr->priv);
-
-       if (G_OBJECT_CLASS (parent_class)->finalize != NULL) {
-               (* G_OBJECT_CLASS (parent_class)->finalize) (object);
-       }
-}