all repos — tint2 @ d7f294d7c266a4f9081133d42dbaecf8f8800a3d

fork of the tint2 desktop panel for my custom setup - only minimized windows across all desktops for the taskbar

src/panel.h (raw)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
/**************************************************************************
* Copyright (C) 2008 Pål Staurland (staura@gmail.com)
* Modified (C) 2008/2009 thierry lorthiois (lorthiois@bbsoft.fr)
*
* panel :
* - draw panel and all objects according to panel_layout
*
*
**************************************************************************/

#ifndef PANEL_H
#define PANEL_H

#include <pango/pangocairo.h>
#include <sys/time.h>

#include "common.h"
#include "clock.h"
#include "task.h"
#include "taskbar.h"
#include "systraybar.h"
#include "launcher.h"
#include "freespace.h"
#include "execplugin.h"
#include "separator.h"

#ifdef ENABLE_BATTERY
#include "battery.h"
#endif

extern int signal_pending;
// --------------------------------------------------
// mouse events
extern MouseAction mouse_left;
extern MouseAction mouse_middle;
extern MouseAction mouse_right;
extern MouseAction mouse_scroll_up;
extern MouseAction mouse_scroll_down;
extern MouseAction mouse_tilt_left;
extern MouseAction mouse_tilt_right;

// panel mode
typedef enum TaskbarMode {
	SINGLE_DESKTOP = 0,
	MULTI_DESKTOP,
} TaskbarMode;

typedef enum Layer {
	BOTTOM_LAYER,
	NORMAL_LAYER,
	TOP_LAYER,
} Layer;

// panel position
typedef enum PanelPosition {
	LEFT = 0x01,
	RIGHT = 0x02,
	CENTER = 0X04,
	TOP = 0X08,
	BOTTOM = 0x10,
} PanelPosition;

typedef enum Strut {
	STRUT_MINIMUM,
	STRUT_FOLLOW_SIZE,
	STRUT_NONE,
} Strut;

extern TaskbarMode taskbar_mode;
extern gboolean wm_menu;
extern gboolean panel_dock;
extern Layer panel_layer;
extern char *panel_window_name;
extern PanelPosition panel_position;
extern gboolean panel_horizontal;
extern gboolean panel_refresh;
extern gboolean task_dragged;
extern gboolean panel_autohide;
extern int panel_autohide_show_timeout;
extern int panel_autohide_hide_timeout;
extern int panel_autohide_height; // for vertical panels this is of course the width
extern gboolean panel_shrink;
extern Strut panel_strut_policy;
extern char *panel_items_order;
extern int max_tick_urgent;
extern GArray *backgrounds;
extern GArray *gradients;
extern Imlib_Image default_icon;
#define DEFAULT_FONT "sans 10"
extern char *default_font;
extern XSettingsClient *xsettings_client;
extern gboolean debug_geometry;
extern gboolean debug_fps;
extern gboolean debug_frames;

typedef struct Panel {
	Area area;

	Window main_win;
	Pixmap temp_pmap;

	// position relative to root window
	int posx, posy;
	int marginx, marginy;
	gboolean fractional_width, fractional_height;
	int max_size;
	int monitor;
	int font_shadow;
	gboolean mouse_effects;
	// Mouse effects for icons
	int mouse_over_alpha;
	int mouse_over_saturation;
	int mouse_over_brightness;
	int mouse_pressed_alpha;
	int mouse_pressed_saturation;
	int mouse_pressed_brightness;

	// Per-panel parameters and states for Taskbar and Task
	GlobalTaskbar g_taskbar;
	GlobalTask g_task;

	// Array of Taskbar, with num_desktops items
	Taskbar *taskbar;
	int num_desktops;
	gboolean taskbarname_has_font;
	PangoFontDescription *taskbarname_font_desc;

	Clock clock;

#ifdef ENABLE_BATTERY
	Battery battery;
#endif

	Launcher launcher;
	GList *freespace_list;
	GList *separator_list;
	GList *execp_list;

	// Autohide
	gboolean is_hidden;
	int hidden_width, hidden_height;
	Pixmap hidden_pixmap;
	timeout *autohide_timeout;
} Panel;

extern Panel panel_config;
extern Panel *panels;
extern int num_panels;

// default global data
void default_panel();

// freed memory
void cleanup_panel();

// realloc panels according to number of monitor
// use panel_config as default value
void init_panel();

void init_panel_size_and_position(Panel *panel);
gboolean resize_panel(void *obj);
void render_panel(Panel *panel);
void shrink_panel(Panel *panel);
void _schedule_panel_redraw(const char *file, const char *function, const int line);
#define schedule_panel_redraw() _schedule_panel_redraw(__FILE__, __FUNCTION__, __LINE__)

void set_panel_items_order(Panel *p);
void place_panel_all_desktops(Panel *p);
void replace_panel_all_desktops(Panel *p);
void set_panel_properties(Panel *p);
void set_panel_window_geometry(Panel *panel);
void set_panel_layer(Panel *p, Layer layer);

// draw background panel
void set_panel_background(Panel *p);

// detect witch panel
Panel *get_panel(Window win);

Taskbar *click_taskbar(Panel *panel, int x, int y);
Task *click_task(Panel *panel, int x, int y);
Launcher *click_launcher(Panel *panel, int x, int y);
LauncherIcon *click_launcher_icon(Panel *panel, int x, int y);
Clock *click_clock(Panel *panel, int x, int y);

#ifdef ENABLE_BATTERY
Battery *click_battery(Panel *panel, int x, int y);
#endif

Area *click_area(Panel *panel, int x, int y);
Execp *click_execp(Panel *panel, int x, int y);

void autohide_show(void *p);
void autohide_hide(void *p);
void autohide_trigger_show(Panel *p);
void autohide_trigger_hide(Panel *p);

const char *get_default_font();

void default_icon_theme_changed();
void default_font_changed();

#endif