]> git.sur5r.net Git - i3/i3/blobdiff - src/main.c
Bugfix: Don’t fill split cons etc. with client background color (fixes nested decorat...
[i3/i3] / src / main.c
index bde10aac0e0e99081ff39dbe8e79f60d5be0a1a5..91bd5d688de66a3280ae14a61444931c3fe58eae 100644 (file)
@@ -261,7 +261,11 @@ int main(int argc, char *argv[]) {
     }
 
     if (config.ipc_socket_path == NULL) {
-        config.ipc_socket_path = getenv("I3SOCK");
+        /* Fall back to a file name in /tmp/ based on the PID */
+        if ((config.ipc_socket_path = getenv("I3SOCK")) == NULL)
+            config.ipc_socket_path = get_process_filename("ipc-socket");
+        else
+            config.ipc_socket_path = sstrdup(config.ipc_socket_path);
     }
 
     uint32_t mask = XCB_CW_EVENT_MASK;
@@ -350,13 +354,6 @@ int main(int argc, char *argv[]) {
     xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A__NET_SUPPORTING_WM_CHECK, A_WINDOW, 32, 1, &root);
     xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A__NET_WM_NAME, A_UTF8_STRING, 8, strlen("i3"), "i3");
 
-    /* Set up i3 specific atoms like I3_SOCKET_PATH and I3_CONFIG_PATH */
-    xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A_I3_SOCKET_PATH, A_UTF8_STRING, 8,
-                        (config.ipc_socket_path != NULL ? strlen(config.ipc_socket_path) : 0),
-                        config.ipc_socket_path);
-    xcb_change_property(conn, XCB_PROP_MODE_REPLACE, root, A_I3_CONFIG_PATH, A_UTF8_STRING, 8,
-                        strlen(saved_configpath), saved_configpath);
-
     keysyms = xcb_key_symbols_alloc(conn);
 
     xcb_get_numlock_mask(conn);
@@ -389,17 +386,19 @@ int main(int argc, char *argv[]) {
             die("Could not initialize libev. Bad LIBEV_FLAGS?\n");
 
     /* Create the UNIX domain socket for IPC */
-    if (config.ipc_socket_path != NULL) {
-        int ipc_socket = ipc_create_socket(config.ipc_socket_path);
-        if (ipc_socket == -1) {
-            ELOG("Could not create the IPC socket, IPC disabled\n");
-        } else {
-            struct ev_io *ipc_io = scalloc(sizeof(struct ev_io));
-            ev_io_init(ipc_io, ipc_new_client, ipc_socket, EV_READ);
-            ev_io_start(loop, ipc_io);
-        }
+    int ipc_socket = ipc_create_socket(config.ipc_socket_path);
+    if (ipc_socket == -1) {
+        ELOG("Could not create the IPC socket, IPC disabled\n");
+    } else {
+        free(config.ipc_socket_path);
+        struct ev_io *ipc_io = scalloc(sizeof(struct ev_io));
+        ev_io_init(ipc_io, ipc_new_client, ipc_socket, EV_READ);
+        ev_io_start(loop, ipc_io);
     }
 
+    /* Set up i3 specific atoms like I3_SOCKET_PATH and I3_CONFIG_PATH */
+    x_set_i3_atoms();
+
     struct ev_io *xcb_watcher = scalloc(sizeof(struct ev_io));
     struct ev_io *xkb = scalloc(sizeof(struct ev_io));
     struct ev_check *xcb_check = scalloc(sizeof(struct ev_check));