X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=i3bar%2Finclude%2Foutputs.h;h=08adefd9742f8ced77e035325caed4fc565c3db4;hb=dc05d905c1ab0978ca98b3e15ff96d18df55c182;hp=c6402a5b620b987569769862e2d5b02890bb9cba;hpb=f0a0236b7b4ac57bc9155edf438e90ea44715778;p=i3%2Fi3 diff --git a/i3bar/include/outputs.h b/i3bar/include/outputs.h index c6402a5b..08adefd9 100644 --- a/i3bar/include/outputs.h +++ b/i3bar/include/outputs.h @@ -1,34 +1,36 @@ /* - * i3bar - an xcb-based status- and ws-bar for i3 + * vim:ts=4:sw=4:expandtab * - * © 2010-2011 Axel Wagner and contributors + * i3bar - an xcb-based status- and ws-bar for i3 + * © 2010 Axel Wagner and contributors (see also: LICENSE) * - * See file LICNSE for license information + * outputs.c: Maintaining the outputs list * */ -#ifndef OUTPUTS_H_ -#define OUTPUTS_H_ +#pragma once #include +#include #include "common.h" +#include "draw_util.h" typedef struct i3_output i3_output; SLIST_HEAD(outputs_head, i3_output); -struct outputs_head *outputs; +struct outputs_head* outputs; /* - * Start parsing the received json-string + * Start parsing the received JSON string * */ void parse_outputs_json(char* json); /* - * Initiate the output-list + * Initiate the outputs list * */ -void init_outputs(); +void init_outputs(void); /* * Returns the output with the given name @@ -36,20 +38,33 @@ void init_outputs(); */ i3_output* get_output_by_name(char* name); +/* + * Returns true if the output has the currently focused workspace + * + */ +bool output_has_focus(i3_output* output); + struct i3_output { - char* name; /* Name of the output */ - bool active; /* If the output is active */ - int ws; /* The number of the currently visible ws */ - rect rect; /* The rect (relative to the root-win) */ + char* name; /* Name of the output */ + bool active; /* If the output is active */ + bool primary; /* If it is the primary output */ + bool visible; /* If the bar is visible on this output */ + int ws; /* The number of the currently visible ws */ + rect rect; /* The rect (relative to the root window) */ - xcb_window_t bar; /* The id of the bar of the output */ - xcb_pixmap_t buffer; /* An extra pixmap for double-buffering */ - xcb_gcontext_t bargc; /* The graphical context of the bar */ + /* Off-screen buffer for preliminary rendering of the bar. */ + surface_t buffer; + /* Off-screen buffer for pre-rendering the statusline, separated to make clipping easier. */ + surface_t statusline_buffer; + /* How much of statusline_buffer's horizontal space was used on last statusline render. */ + int statusline_width; + /* Whether statusline block short texts where used on last statusline render. */ + bool statusline_short_text; + /* The actual window on which we draw. */ + surface_t bar; - struct ws_head *workspaces; /* The workspaces on this output */ - struct tc_head *trayclients; /* The tray clients on this output */ + struct ws_head* workspaces; /* The workspaces on this output */ + struct tc_head* trayclients; /* The tray clients on this output */ SLIST_ENTRY(i3_output) slist; /* Pointer for the SLIST-Macro */ }; - -#endif