## ShellWindowTracker

ShellWindowTracker — Associate windows with applications

## Synopsis

                        ShellStartupSequence;
    struct              ShellWindowTrackerClass;
    ClutterActor *      shell_startup_sequence_create_icon  (ShellStartupSequence *sequence,
                                                             guint size);
    ShellApp *          shell_startup_sequence_get_app      (ShellStartupSequence *sequence);
    gboolean            shell_startup_sequence_get_completed
                                                            (ShellStartupSequence *sequence);
    const char *        shell_startup_sequence_get_id       (ShellStartupSequence *sequence);
    const char *        shell_startup_sequence_get_name     (ShellStartupSequence *sequence);
    ShellApp *          shell_window_tracker_get_app_from_pid
                                                            (ShellWindowTracker *tracker,
                                                             int pid);
    ShellWindowTracker * shell_window_tracker_get_default   (void);
    GSList *            shell_window_tracker_get_startup_sequences
                                                            (ShellWindowTracker *tracker);
    ShellApp *          shell_window_tracker_get_window_app (ShellWindowTracker *tracker,
                                                             MetaWindow *metawin);
    gboolean            shell_window_tracker_is_window_interesting
                                                            (MetaWindow *window);

## Object Hierarchy

      GBoxed
       +----ShellStartupSequence

## Description

Maintains a mapping from windows to applications (.desktop file ids). It currently implements this with some heuristics on the WM_CLASS X11 property (and some static override regexps); in the future, we want to have it also track through startup-notification.

## Details

### ShellStartupSequence

    typedef struct _ShellStartupSequence ShellStartupSequence;

### struct ShellWindowTrackerClass

    struct ShellWindowTrackerClass {
      GObjectClass parent_class;
    };

### shell_startup_sequence_create_icon ()

    ClutterActor *      shell_startup_sequence_create_icon  (ShellStartupSequence *sequence,
                                                             guint size);

`size` : | Size in pixels of icon
Returns : | A new ClutterTexture containing an icon for the sequence. [transfer none]

### shell_startup_sequence_get_app ()

    ShellApp *          shell_startup_sequence_get_app      (ShellStartupSequence *sequence);

`sequence` : | A ShellStartupSequence
Returns : | The application being launched, or `NULL` if unknown. [transfer none]

### shell_startup_sequence_get_completed ()

    gboolean            shell_startup_sequence_get_completed
                                                            (ShellStartupSequence *sequence);

### shell_startup_sequence_get_id ()

    const char *        shell_startup_sequence_get_id       (ShellStartupSequence *sequence);

### shell_startup_sequence_get_name ()

    const char *        shell_startup_sequence_get_name     (ShellStartupSequence *sequence);

### shell_window_tracker_get_app_from_pid ()

    ShellApp *          shell_window_tracker_get_app_from_pid
                                                            (ShellWindowTracker *tracker,
                                                             int pid);

Look up the application corresponding to a process.

`tracker` : | A ShellAppSystem
`pid` : | A Unix process identifier
Returns : | A ShellApp, or `NULL` if none. [transfer none]

### shell_window_tracker_get_default ()

    ShellWindowTracker * shell_window_tracker_get_default   (void);

Returns : | The global ShellWindowTracker instance. [transfer none]

### shell_window_tracker_get_startup_sequences ()

    GSList *            shell_window_tracker_get_startup_sequences
                                                            (ShellWindowTracker *tracker);

Returns : | Currently active startup sequences. [transfer none][element-type ShellStartupSequence]

### shell_window_tracker_get_window_app ()

    ShellApp *          shell_window_tracker_get_window_app (ShellWindowTracker *tracker,
                                                             MetaWindow *metawin);

`tracker` : | An app monitor instance
`metawin` : | A MetaWindow
Returns : | Application associated with window. [transfer full]

### shell_window_tracker_is_window_interesting ()

    gboolean            shell_window_tracker_is_window_interesting
                                                            (MetaWindow *window);

The ShellWindowTracker associates certain kinds of windows with applications; however, others we don't want to appear in places where we want to give a list of windows for an application, such as the alt-tab dialog.

An example of a window we don't want to show is the root desktop window. We skip all override-redirect types, and also exclude other window types like tooltip explicitly, though generally most of these should be override-redirect.

Returns : | `TRUE` iff a window is "interesting"