Check if configuring local keys, otherwise exit.
authorAndriy Grytsenko <andrej@rep.kiev.ua>
Wed, 2 Nov 2016 21:10:07 +0000 (23:10 +0200)
committerAndriy Grytsenko <andrej@rep.kiev.ua>
Wed, 2 Nov 2016 21:10:07 +0000 (23:10 +0200)
po/lxhotkey.pot
src/lxhotkey.c

index 00fc892..dae489e 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2016-11-02 22:40+0200\n"
+"POT-Creation-Date: 2016-11-02 23:08+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -17,115 +17,118 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: ../src/lxhotkey.c:235
+#: ../src/lxhotkey.c:240
 #, c-format
 msgid "Usage: %s global [<action>]      - show keys bound to action(s)\n"
 msgstr ""
 
-#: ../src/lxhotkey.c:236
+#: ../src/lxhotkey.c:241
 #, c-format
 msgid "       %s global <action> <key>  - bind a key to the action\n"
 msgstr ""
 
-#: ../src/lxhotkey.c:237
+#: ../src/lxhotkey.c:242
 #, c-format
 msgid "       %s app [<exec>]           - show keys bound to exec line\n"
 msgstr ""
 
-#: ../src/lxhotkey.c:238
+#: ../src/lxhotkey.c:243
 #, c-format
 msgid "       %s app <exec> <key>       - bind a key to some exec line\n"
 msgstr ""
 
-#: ../src/lxhotkey.c:239
+#: ../src/lxhotkey.c:244
 #, c-format
 msgid "       %s app <exec> --          - unbind all keys from exec line\n"
 msgstr ""
 
-#: ../src/lxhotkey.c:240
+#: ../src/lxhotkey.c:245
 #, c-format
 msgid "       %s show <key>             - show the action bound to a key\n"
 msgstr ""
 
-#: ../src/lxhotkey.c:241
+#: ../src/lxhotkey.c:246
 #, c-format
 msgid "       %s --gui=<type>           - start with GUI\n"
 msgstr ""
 
-#: ../src/lxhotkey.c:336
+#: ../src/lxhotkey.c:341
 msgid "empty option name."
 msgstr ""
 
-#: ../src/lxhotkey.c:339
+#: ../src/lxhotkey.c:344
 msgid "empty action name."
 msgstr ""
 
-#: ../src/lxhotkey.c:371
+#: ../src/lxhotkey.c:376
 #, c-format
 msgid "no matching option '%s' found for action '%s'."
 msgstr ""
 
-#: ../src/lxhotkey.c:375
+#: ../src/lxhotkey.c:380
 #, c-format
 msgid "action '%s' isn't supported by WM %s."
 msgstr ""
 
-#: ../src/lxhotkey.c:392
+#: ../src/lxhotkey.c:397
 #, c-format
 msgid "value '%s' is not supported for option '%s'."
 msgstr ""
 
-#: ../src/lxhotkey.c:396
+#: ../src/lxhotkey.c:401
 #, c-format
 msgid "value '%s' is not supported for action '%s'."
 msgstr ""
 
-#: ../src/lxhotkey.c:409
+#: ../src/lxhotkey.c:414
 #, c-format
 msgid "action '%s' does not support options."
 msgstr ""
 
-#: ../src/lxhotkey.c:472
-#, c-format
-msgid "LXHotkey: sorry, cannot configure keys remotely.\n"
+#: ../src/lxhotkey.c:495
+msgid "Sorry, cannot configure keys remotely."
+msgstr ""
+
+#: ../src/lxhotkey.c:503
+msgid "Could not determine window manager running."
 msgstr ""
 
-#: ../src/lxhotkey.c:502
+#: ../src/lxhotkey.c:511
 #, c-format
 msgid "Window manager %s isn't supported now, sorry."
 msgstr ""
 
-#: ../src/lxhotkey.c:509 ../plugins/gtk/gtk.c:75
+#: ../src/lxhotkey.c:518 ../plugins/gtk/gtk.c:75
 msgid "Problems loading configuration: "
 msgstr ""
 
-#: ../src/lxhotkey.c:518
+#: ../src/lxhotkey.c:527
 #, c-format
 msgid "GUI type %s currently isn't supported."
 msgstr ""
 
 #. invalid request
-#: ../src/lxhotkey.c:535 ../src/lxhotkey.c:611
+#: ../src/lxhotkey.c:544 ../src/lxhotkey.c:620
 msgid "Invalid request: "
 msgstr ""
 
-#: ../src/lxhotkey.c:545 ../src/lxhotkey.c:623 ../plugins/gtk/gtk.c:90
+#: ../src/lxhotkey.c:554 ../src/lxhotkey.c:632 ../plugins/gtk/gtk.c:90
 msgid "Problems saving configuration: "
 msgstr ""
 
-#: ../src/lxhotkey.c:562
+#: ../src/lxhotkey.c:571
 msgid "ACTION(s)"
 msgstr ""
 
-#: ../src/lxhotkey.c:562 ../src/lxhotkey.c:640
+#: ../src/lxhotkey.c:571 ../src/lxhotkey.c:649
 msgid "KEY(s)"
 msgstr ""
 
-#: ../src/lxhotkey.c:640
+#: ../src/lxhotkey.c:649
 msgid "EXEC"
 msgstr ""
 
-#: ../src/lxhotkey.c:661
+#: ../src/lxhotkey.c:670
 msgid "Requested operation isn't supported."
 msgstr ""
 
index 972d878..23875ac 100644 (file)
@@ -170,13 +170,18 @@ static gchar *get_wm_info(void)
 /* test if we are called from X which is local */
 static gboolean test_X_is_local(void)
 {
-//    const char *display = g_getenv("DISPLAY");
-
-//    if (!display)
-//        return FALSE;
-//    display = strchr(display, ':');
-//    return (display && display[1] == '0');
-    return TRUE; // FIXME: TODO!
+    const char *display = g_getenv("DISPLAY");
+    int Xnum;
+    char lockfile[32];
+
+    if (display)
+        display = strchr(display, ':');
+    if (!display || display[1] < '0' || display[1] > '9')
+        /* invalid environment */
+        return FALSE;
+    Xnum = atoi(&display[1]);
+    snprintf(lockfile, sizeof(lockfile), "/tmp/.X%d-lock", Xnum);
+    return g_file_test(lockfile, G_FILE_TEST_IS_REGULAR);
 }
 
 
@@ -439,7 +444,7 @@ static void print_suboptions(GList *sub, int indent)
 int main(int argc, char *argv[])
 {
     const char *cmd;
-    gchar *wm_name;
+    gchar *wm_name = NULL;
     LXHotkeyPlugin *plugin = NULL;
     LXHotkeyGUIPlugin *gui_plugin = NULL;
     int ret = 1; /* failure */
@@ -468,11 +473,6 @@ int main(int argc, char *argv[])
         cmd += 4;
     }
 
-    if (!test_X_is_local()) {
-        fprintf(stderr, _("LXHotkey: sorry, cannot configure keys remotely.\n"));
-        return 1;
-    }
-
     /* init LibFM and FmModule */
     fm_init(NULL);
     fm_modules_add_directory(PACKAGE_PLUGINS_DIR);
@@ -482,14 +482,7 @@ int main(int argc, char *argv[])
 
     LXKEYS_ERROR = g_quark_from_static_string("lxhotkey-error");
 
-    /* detect current WM and find a module for it */
-    wm_name = get_wm_info();
-    if (!wm_name)
-        goto _exit;
     CHECK_MODULES();
-    for (plugin = plugins; plugin; plugin = plugin->next)
-        if (g_ascii_strcasecmp(plugin->name, wm_name) == 0)
-            break;
     if (do_gui) /* load GUI plugin if requested */
         for (gui_plugin = gui_plugins; gui_plugin; gui_plugin = gui_plugin->next)
             if (g_ascii_strcasecmp(gui_plugin->name, cmd) == 0)
@@ -497,6 +490,22 @@ int main(int argc, char *argv[])
     /* initialize GUI before error may be reported */
     if (gui_plugin && gui_plugin->t->init)
         gui_plugin->t->init(argc, argv);
+    if (!test_X_is_local()) {
+        g_set_error_literal(&error, LXKEYS_ERROR, LXKEYS_NOT_SUPPORTED,
+                            _("Sorry, cannot configure keys remotely."));
+        goto _exit;
+    }
+    /* detect current WM and find a module for it */
+    wm_name = get_wm_info();
+    if (!wm_name)
+    {
+        g_set_error_literal(&error, LXKEYS_ERROR, LXKEYS_NOT_SUPPORTED,
+                            _("Could not determine window manager running."));
+        goto _exit;
+    }
+    for (plugin = plugins; plugin; plugin = plugin->next)
+        if (g_ascii_strcasecmp(plugin->name, wm_name) == 0)
+            break;
     if (!plugin) {
         g_set_error(&error, LXKEYS_ERROR, LXKEYS_NOT_SUPPORTED,
                     _("Window manager %s isn't supported now, sorry."), wm_name);