}
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;
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(current_configpath), current_configpath);
-
keysyms = xcb_key_symbols_alloc(conn);
xcb_get_numlock_mask(conn);
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));