X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fprop.h;h=13c338efcfd86115351ae4c9e6cff7deeebe3eed;hb=fb7a71da202632c7301ada67c8b4420bfb8d8fbe;hp=5bfad5727ea2cd3c6c3d52a5d2a0527e8fa43c18;hpb=4cd886e5188549ab48a11b70cb40b65efe916b6c;p=chaz%2Fopenbox diff --git a/openbox/prop.h b/openbox/prop.h index 5bfad572..13c338ef 100644 --- a/openbox/prop.h +++ b/openbox/prop.h @@ -1,3 +1,22 @@ +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- + + prop.h for the Openbox window manager + Copyright (c) 2006 Mikael Magnusson + Copyright (c) 2003-2007 Dana Jansens + + 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. + + See the COPYING file for a copy of the GNU General Public License. +*/ + #ifndef __atoms_h #define __atoms_h @@ -31,13 +50,44 @@ typedef struct Atoms { Atom wm_icon_name; Atom wm_class; Atom wm_window_role; + Atom wm_client_machine; + Atom wm_command; + Atom wm_client_leader; Atom motif_wm_hints; /* SM atoms */ Atom sm_client_id; /* NETWM atoms */ - + + /* Atoms that are used inside messages - these don't go in net_supported */ + + Atom net_wm_moveresize_size_topleft; + Atom net_wm_moveresize_size_top; + Atom net_wm_moveresize_size_topright; + Atom net_wm_moveresize_size_right; + Atom net_wm_moveresize_size_bottomright; + Atom net_wm_moveresize_size_bottom; + Atom net_wm_moveresize_size_bottomleft; + Atom net_wm_moveresize_size_left; + Atom net_wm_moveresize_move; + Atom net_wm_moveresize_size_keyboard; + Atom net_wm_moveresize_move_keyboard; + Atom net_wm_moveresize_cancel; + + Atom net_wm_state_add; + Atom net_wm_state_remove; + Atom net_wm_state_toggle; + + Atom net_wm_orientation_horz; + Atom net_wm_orientation_vert; + Atom net_wm_topleft; + Atom net_wm_topright; + Atom net_wm_bottomright; + Atom net_wm_bottomleft; + + /* Everything below here must go in net_supported on the root window */ + /* root window properties */ Atom net_supported; Atom net_client_list; @@ -48,14 +98,25 @@ typedef struct Atoms { Atom net_current_desktop; Atom net_desktop_names; Atom net_active_window; +/* Atom net_restack_window;*/ Atom net_workarea; Atom net_supporting_wm_check; Atom net_desktop_layout; Atom net_showing_desktop; + /* root window messages */ Atom net_close_window; Atom net_wm_moveresize; Atom net_moveresize_window; + Atom net_request_frame_extents; + Atom net_restack_window; + + /* helpful hints to apps that aren't used for anything */ + Atom net_wm_full_placement; + + /* startup-notification extension */ + Atom net_startup_id; + /* application window properties */ Atom net_wm_name; Atom net_wm_visible_name; @@ -67,10 +128,19 @@ typedef struct Atoms { Atom net_wm_strut; Atom net_wm_strut_partial; Atom net_wm_icon; + Atom net_wm_icon_geometry; /* Atom net_wm_pid; */ Atom net_wm_allowed_actions; + Atom net_wm_user_time; +/* Atom net_wm_user_time_window; */ + Atom net_frame_extents; + /* application protocols */ -/* Atom Atom net_wm_ping; */ + Atom net_wm_ping; +#ifdef SYNC + Atom net_wm_sync_request; + Atom net_wm_sync_request_counter; +#endif Atom net_wm_window_type_desktop; Atom net_wm_window_type_dock; @@ -81,31 +151,21 @@ typedef struct Atoms { Atom net_wm_window_type_dialog; Atom net_wm_window_type_normal; - Atom net_wm_moveresize_size_topleft; - Atom net_wm_moveresize_size_top; - Atom net_wm_moveresize_size_topright; - Atom net_wm_moveresize_size_right; - Atom net_wm_moveresize_size_bottomright; - Atom net_wm_moveresize_size_bottom; - Atom net_wm_moveresize_size_bottomleft; - Atom net_wm_moveresize_size_left; - Atom net_wm_moveresize_move; - Atom net_wm_moveresize_size_keyboard; - Atom net_wm_moveresize_move_keyboard; - Atom net_wm_action_move; Atom net_wm_action_resize; Atom net_wm_action_minimize; Atom net_wm_action_shade; - Atom net_wm_action_stick; +/* Atom net_wm_action_stick;*/ Atom net_wm_action_maximize_horz; Atom net_wm_action_maximize_vert; Atom net_wm_action_fullscreen; Atom net_wm_action_change_desktop; Atom net_wm_action_close; + Atom net_wm_action_above; + Atom net_wm_action_below; Atom net_wm_state_modal; - Atom net_wm_state_sticky; +/* Atom net_wm_state_sticky;*/ Atom net_wm_state_maximized_vert; Atom net_wm_state_maximized_horz; Atom net_wm_state_shaded; @@ -115,33 +175,26 @@ typedef struct Atoms { Atom net_wm_state_fullscreen; Atom net_wm_state_above; Atom net_wm_state_below; + Atom net_wm_state_demands_attention; - Atom net_wm_state_add; - Atom net_wm_state_remove; - Atom net_wm_state_toggle; + /* KDE atoms */ - Atom net_wm_orientation_horz; - Atom net_wm_orientation_vert; - Atom net_wm_topleft; - Atom net_wm_topright; - Atom net_wm_bottomright; - Atom net_wm_bottomleft; - - /* Extra atoms */ - - Atom kde_net_system_tray_windows; - Atom kde_net_wm_system_tray_window_for; + Atom kde_wm_change_state; + Atom kde_net_wm_frame_strut; Atom kde_net_wm_window_type_override; - Atom kwm_win_icon; - +/* Atom rootpmapid; Atom esetrootid; +*/ /* Openbox specific atoms */ - - Atom openbox_pid; - Atom openbox_premax; + + Atom ob_wm_action_undecorate; + Atom ob_wm_state_undecorated; + Atom openbox_pid; /* this is depreecated in favour of ob_control */ + Atom ob_theme; + Atom ob_control; } Atoms; Atoms prop_atoms; @@ -150,21 +203,24 @@ void prop_startup(); gboolean prop_get32(Window win, Atom prop, Atom type, guint32 *ret); gboolean prop_get_array32(Window win, Atom prop, Atom type, guint32 **ret, guint *nret); -gboolean prop_get_string_locale(Window win, Atom prop, char **ret); -gboolean prop_get_string_utf8(Window win, Atom prop, char **ret); -gboolean prop_get_strings_locale(Window win, Atom prop, char ***ret); -gboolean prop_get_strings_utf8(Window win, Atom prop, char ***ret); +gboolean prop_get_string_locale(Window win, Atom prop, gchar **ret); +gboolean prop_get_string_utf8(Window win, Atom prop, gchar **ret); +gboolean prop_get_strings_locale(Window win, Atom prop, gchar ***ret); +gboolean prop_get_strings_utf8(Window win, Atom prop, gchar ***ret); -void prop_set32(Window win, Atom prop, Atom type, guint32 val); -void prop_set_array32(Window win, Atom prop, Atom type, guint32 *val, +void prop_set32(Window win, Atom prop, Atom type, gulong val); +void prop_set_array32(Window win, Atom prop, Atom type, gulong *val, guint num); -void prop_set_string_utf8(Window win, Atom prop, char *val); -void prop_set_strings_utf8(Window win, Atom prop, char **strs); +void prop_set_string_utf8(Window win, Atom prop, const gchar *val); +void prop_set_strings_utf8(Window win, Atom prop, gchar **strs); void prop_erase(Window win, Atom prop); -void prop_message(Window about, Atom messagetype, long data0, long data1, - long data2, long data3, long mask); +void prop_message(Window about, Atom messagetype, glong data0, glong data1, + glong data2, glong data3, glong mask); +void prop_message_to(Window to, Window about, Atom messagetype, + glong data0, glong data1, glong data2, + glong data3, glong data4, glong mask); #define PROP_GET32(win, prop, type, ret) \ (prop_get32(win, prop_atoms.prop, prop_atoms.type, ret)) @@ -191,4 +247,9 @@ void prop_message(Window about, Atom messagetype, long data0, long data1, (prop_message(about, prop_atoms.msgtype, data0, data1, data2, data3, \ SubstructureNotifyMask | SubstructureRedirectMask)) +#define PROP_MSG_TO(to, about, msgtype, data0, data1, data2, data3, data4, \ + mask) \ + (prop_message_to(to, about, prop_atoms.msgtype, \ + data0, data1, data2, data3, data4, mask)) + #endif