X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=include%2Fstartup.h;h=feece575c36f8a9d8361fdb08ef81b5b1a01ce43;hb=04d1fcbe2d3f9937544804fec1d0383ad8e27a05;hp=555a11914a054603343311aa0352edb0e04f8249;hpb=4204b8e2b00b86916aca4718753d5f684eddfafa;p=i3%2Fi3 diff --git a/include/startup.h b/include/startup.h index 555a1191..feece575 100644 --- a/include/startup.h +++ b/include/startup.h @@ -2,14 +2,17 @@ * vim:ts=4:sw=4:expandtab * * i3 - an improved dynamic tiling window manager + * © 2009 Michael Stapelberg and contributors (see also: LICENSE) * - * © 2009-2011 Michael Stapelberg and contributors - * - * See file LICENSE for license information. + * startup.c: Startup notification code. Ensures a startup notification context + * is setup when launching applications. We store the current + * workspace to open windows in that startup notification context on + * the appropriate workspace. * */ -#ifndef _STARTUP_H -#define _STARTUP_H +#pragma once + +#include #define SN_API_NOT_YET_FROZEN 1 #include @@ -18,13 +21,24 @@ * Starts the given application by passing it through a shell. We use double * fork to avoid zombie processes. As the started application’s parent exits * (immediately), the application is reparented to init (process-id 1), which - * correctly handles childs, so we don’t have to do it :-). + * correctly handles children, so we don’t have to do it :-). + * + * The shell used to start applications is the system's bourne shell (i.e., + * /bin/sh). + * + * The no_startup_id flag determines whether a startup notification context + * (and ID) should be created, which is the default and encouraged behavior. * - * The shell is determined by looking for the SHELL environment variable. If - * it does not exist, /bin/sh is used. + */ +void start_application(const char *command, bool no_startup_id); + +/** + * Deletes a startup sequence, ignoring whether its timeout has elapsed. + * Useful when e.g. a window is moved between workspaces and its children + * shouldn't spawn on the original workspace. * */ -void start_application(const char *command); +void startup_sequence_delete(struct Startup_Sequence *sequence); /** * Called by libstartup-notification when something happens @@ -32,6 +46,19 @@ void start_application(const char *command); */ void startup_monitor_event(SnMonitorEvent *event, void *userdata); +/** + * Renames workspaces that are mentioned in the startup sequences. + * + */ +void startup_sequence_rename_workspace(const char *old_name, const char *new_name); + +/** + * Gets the stored startup sequence for the _NET_STARTUP_ID of a given window. + * + */ +struct Startup_Sequence *startup_sequence_get(i3Window *cwindow, + xcb_get_property_reply_t *startup_id_reply, bool ignore_mapped_leader); + /** * Checks if the given window belongs to a startup notification by checking if * the _NET_STARTUP_ID property is set on the window (or on its leader, if it’s @@ -42,5 +69,3 @@ void startup_monitor_event(SnMonitorEvent *event, void *userdata); * */ char *startup_workspace_for_window(i3Window *cwindow, xcb_get_property_reply_t *startup_id_reply); - -#endif