X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=src%2Fmain.c;h=91bd5d688de66a3280ae14a61444931c3fe58eae;hb=4be3178d4d360c2996217d811e61161c84d25898;hp=bde10aac0e0e99081ff39dbe8e79f60d5be0a1a5;hpb=9344b9790c9d50f303c5001428fb47ab79a76e8e;p=i3%2Fi3 diff --git a/src/main.c b/src/main.c index bde10aac..91bd5d68 100644 --- a/src/main.c +++ b/src/main.c @@ -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));