/usr/include/lxpanel/misc.h is in lxpanel-dev 0.9.3-1ubuntu3.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
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 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 | /*
* Copyright (C) 2006-2010 Hong Jen Yee (PCMan) <pcman.tw@gmail.com>
* 2006-2008 Jim Huang <jserv.tw@gmail.com>
* 2008-2009 Fred Chien <fred@lxde.org>
* 2009 Marty Jack <martyj19@comcast.net>
* 2011-2013 Henry Gebhardt <hsggebhardt@gmail.com>
* 2014-2016 Andriy Grytsenko <andrej@rep.kiev.ua>
*
* This file is a part of LXPanel project.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software Foundation,
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*/
#ifndef __MISC_H__
#define __MISC_H__ 1
#include <X11/Xatom.h>
#include <gtk/gtk.h>
#include <gdk/gdk.h>
#include <gdk/gdkx.h>
#include <stdio.h>
#include <libfm/fm.h>
#include "panel.h"
G_BEGIN_DECLS
extern Atom a_UTF8_STRING;
extern Atom a_XROOTPMAP_ID;
extern Atom a_WM_STATE;
extern Atom a_WM_DELETE_WINDOW;
extern Atom a_WM_PROTOCOLS;
extern Atom a_NET_WORKAREA;
extern Atom a_NET_CLIENT_LIST;
extern Atom a_NET_CLIENT_LIST_STACKING;
extern Atom a_NET_NUMBER_OF_DESKTOPS;
extern Atom a_NET_CURRENT_DESKTOP;
extern Atom a_NET_DESKTOP_VIEWPORT;
extern Atom a_NET_DESKTOP_NAMES;
extern Atom a_NET_ACTIVE_WINDOW;
extern Atom a_NET_CLOSE_WINDOW;
extern Atom a_NET_SHOWING_DESKTOP;
extern Atom a_NET_SUPPORTED;
extern Atom a_NET_WM_STATE;
extern Atom a_NET_WM_STATE_SKIP_TASKBAR;
extern Atom a_NET_WM_STATE_SKIP_PAGER;
extern Atom a_NET_WM_STATE_STICKY;
extern Atom a_NET_WM_STATE_HIDDEN;
extern Atom a_NET_WM_STATE_SHADED;
#define a_NET_WM_STATE_REMOVE 0 /* remove/unset property */
#define a_NET_WM_STATE_ADD 1 /* add/set property */
#define a_NET_WM_STATE_TOGGLE 2 /* toggle property */
extern Atom a_NET_WM_WINDOW_TYPE;
extern Atom a_NET_WM_WINDOW_TYPE_DESKTOP;
extern Atom a_NET_WM_WINDOW_TYPE_DOCK;
extern Atom a_NET_WM_WINDOW_TYPE_TOOLBAR;
extern Atom a_NET_WM_WINDOW_TYPE_MENU;
extern Atom a_NET_WM_WINDOW_TYPE_UTILITY;
extern Atom a_NET_WM_WINDOW_TYPE_SPLASH;
extern Atom a_NET_WM_WINDOW_TYPE_DIALOG;
extern Atom a_NET_WM_WINDOW_TYPE_NORMAL;
extern Atom a_NET_WM_DESKTOP;
extern Atom a_NET_WM_NAME;
extern Atom a_NET_WM_VISIBLE_NAME;
extern Atom a_NET_WM_STRUT;
extern Atom a_NET_WM_STRUT_PARTIAL;
extern Atom a_NET_WM_ICON;
extern Atom a_KDE_NET_WM_SYSTEM_TRAY_WINDOW_FOR;
extern Atom a_NET_SYSTEM_TRAY_OPCODE;
extern Atom a_NET_SYSTEM_TRAY_MESSAGE_DATA;
extern Atom a_NET_SYSTEM_TRAY_ORIENTATION;
extern Atom a_MANAGER;
extern Atom a_LXPANEL_CMD; /* for private client message */
/* Decoded value of WM_STATE property. */
typedef struct {
unsigned int modal : 1;
unsigned int sticky : 1;
unsigned int maximized_vert : 1;
unsigned int maximized_horz : 1;
unsigned int shaded : 1;
unsigned int skip_taskbar : 1;
unsigned int skip_pager : 1;
unsigned int hidden : 1;
unsigned int fullscreen : 1;
unsigned int above : 1;
unsigned int below : 1;
} NetWMState;
/* Decoded value of _NET_WM_WINDOW_TYPE property. */
typedef struct {
unsigned int desktop : 1;
unsigned int dock : 1;
unsigned int toolbar : 1;
unsigned int menu : 1;
unsigned int utility : 1;
unsigned int splash : 1;
unsigned int dialog : 1;
unsigned int normal : 1;
} NetWMWindowType;
void Xclimsgx(Screen *screen, Window win, Atom type, long l0, long l1, long l2, long l3, long l4);
void Xclimsgwm(Window win, Atom type, Atom arg);
void *get_xaproperty (Window win, Atom prop, Atom type, int *nitems);
char *get_textproperty(Window win, Atom prop);
void *get_utf8_property(Window win, Atom atom);
char **get_utf8_property_list(Window win, Atom atom, int *count);
void resolve_atoms();
//Window Select_Window(Display *dpy);
int get_net_number_of_desktops();
int get_net_current_desktop ();
int get_net_wm_desktop(Window win);
int get_wm_state (Window win);
void get_net_wm_state(Window win, NetWMState *nws);
void get_net_wm_window_type(Window win, NetWMWindowType *nwwt);
GPid get_net_wm_pid(Window win);
/**
* panel_handle_x_error
* @d: X display
* @ev: X error event
*
* Prints X error message to stderr if logging was enabled.
*/
extern int panel_handle_x_error(Display * d, XErrorEvent * ev);
extern int panel_handle_x_error_swallow_BadWindow_BadDrawable(Display * d, XErrorEvent * ev);
/**
* expand_tilda
* @file: file path
*
* If first char of @file is a tilda (~) then replaces it with content of
* environment variable HOME.
*
* Returns: (transfer full): new allocated path string.
*/
gchar *expand_tilda(const gchar *file);
/**
* gcolor2rgb24
* @color: a color structure
*
* Creates integer @color representation which can be easily converted
* into string using printf conversion "#%06x".
*
* Returns: a 32-bit integer.
*/
guint32 gcolor2rgb24(GdkColor *color);
/**
* lxpanel_button_new_for_icon
* @panel: panel instance
* @name: icon name or path
* @color: (allow-none): hilight color for icon
* @label: (allow-none): optional label for button
*
* Creates new #GtkEventBox button which will follow theme and icon size
* changes on @panel. If icon name is not found in theme then fallback
* name "application-x-executable" will be used. Button is flagged to be
* displayed.
*
* Returns: (transfer full): a new #GtkEventBox widget.
*/
extern GtkWidget *lxpanel_button_new_for_icon(LXPanel *panel, const gchar *name, GdkColor *color, const gchar *label);
extern GtkWidget *lxpanel_button_new_for_fm_icon(LXPanel *panel, FmIcon *icon, GdkColor *color, const gchar *label);
/**
* lxpanel_button_set_icon
* @btn: a button instance
* @name: icon name or path
* @size: new icon size
*
* Updates icon in the button created with lxpanel_button_new_for_icon()
* or lxpanel_button_new_for_fm_icon() before. If @size > 0 then stop
* following panel icon size and use this fixed size, if @size is 0 then
* do no changes on icons size.
*/
extern void lxpanel_button_set_icon(GtkWidget* btn, const gchar *name, gint size);
extern void lxpanel_button_update_icon(GtkWidget* btn, FmIcon *icon, gint size);
/**
* lxpanel_button_set_label
* @btn: a button instance
* @label: new label text
*
* Changes text of label created with lxpanel_button_new_for_icon(),
* lxpanel_button_new_for_fm_icon(), or lxpanel_button_compose(). Does
* nothing if those API were called with NULL passed as label.
*
* Returns: %TRUE in case of success.
*
* Since: 0.8.0
*/
extern gboolean lxpanel_button_set_label(GtkWidget *btn, const char *label);
/**
* lxpanel_button_compose
* @event_box: a widget to add image and label
* @image: an image widget
* @color: (allow-none): hilight color for icon
* @label: (allow-none): optional label for button
*
* Composes button similarly to lxpanel_button_new_for_icon() but using
* existing container @event_box and @image. The @image should be created
* using lxpanel_image_new_for_icon() or lxpanel_image_new_for_fm_icon(),
* and it can be updated later using lxpanel_button_set_icon() API.
*
* Returns: (transfer none): @event_box.
*
* Since: 0.8.0
*/
extern GtkWidget *lxpanel_button_compose(GtkWidget *event_box, GtkWidget *image,
GdkColor *color, const gchar *label);
/**
* lxpanel_image_new_for_icon
* @panel: (allow-none): panel instance
* @name: icon name or image path
* @height: image size
* @fallback: (allow-none): fallback image name or path
*
* Creates new #GtkImage which will follow theme if @name is a themed
* icon name. If @height is -1 then created image will also follow icon
* size changes on @panel. If icon not found in theme and @fallback is
* not %NULL then it will be used to load icon or image. Otherwise the
* "application-x-executable" will be used as fallback.
*
* Returns: (transfer full): a new #GtkImage widget.
*
* Since: 0.8.0
*/
extern GtkWidget *lxpanel_image_new_for_icon(LXPanel *panel, const gchar *name,
gint height, const gchar *fallback);
extern GtkWidget *lxpanel_image_new_for_fm_icon(LXPanel *panel, FmIcon *icon,
gint height, const gchar *fallback);
/**
* lxpanel_image_change_icon
* @img: an image
* @name: icon name or image path
* @fallback: (allow-none): fallback image name or path
*
* Changes an image @img created by lxpanel_image_new_for_icon() to use
* new icon @name and @fallback.
*
* Returns: %TRUE.
*
* Since: 0.8.0
*/
extern gboolean lxpanel_image_change_icon(GtkWidget *img, const gchar *name,
const char *fallback);
G_END_DECLS
#endif
|