forked from enlightenment/enlightenment
parent
49cdf502fb
commit
a1ce91af14
19
netwm.txt
19
netwm.txt
|
@ -7,13 +7,16 @@
|
||||||
* E can have multiple virtual roots AND multiple desktops AND several
|
* E can have multiple virtual roots AND multiple desktops AND several
|
||||||
* zones when using xinerama
|
* zones when using xinerama
|
||||||
*/
|
*/
|
||||||
|
/*
|
||||||
|
* T = For taskbar
|
||||||
|
*/
|
||||||
|
|
||||||
_NET_ACTIVE_WINDOW [?] /* Listen to active window requests */
|
_NET_ACTIVE_WINDOW [?] /* Listen to active window requests */
|
||||||
_NET_CLIENT_LIST [X]
|
_NET_CLIENT_LIST [X]
|
||||||
_NET_CLIENT_LIST_STACKING [X]
|
_NET_CLIENT_LIST_STACKING [X]
|
||||||
_NET_CLOSE_WINDOW [P]
|
_NET_CLOSE_WINDOW [P]
|
||||||
_NET_CURRENT_DESKTOP [P]
|
_NET_CURRENT_DESKTOP [P]
|
||||||
_NET_DESKTOP_GEOMETRY [?] /* Listen to _NET_DESKTOP_GEOMETRY requests */
|
_NET_DESKTOP_GEOMETRY [P]
|
||||||
_NET_DESKTOP_LAYOUT [P]
|
_NET_DESKTOP_LAYOUT [P]
|
||||||
_NET_DESKTOP_NAMES [ ]
|
_NET_DESKTOP_NAMES [ ]
|
||||||
_NET_DESKTOP_VIEWPORT [P]
|
_NET_DESKTOP_VIEWPORT [P]
|
||||||
|
@ -37,10 +40,10 @@ _NET_WM_ACTION_RESIZE [ ]
|
||||||
_NET_WM_ACTION_SHADE [ ]
|
_NET_WM_ACTION_SHADE [ ]
|
||||||
_NET_WM_ACTION_STICK [ ]
|
_NET_WM_ACTION_STICK [ ]
|
||||||
_NET_WM_ALLOWED_ACTIONS [ ]
|
_NET_WM_ALLOWED_ACTIONS [ ]
|
||||||
_NET_WM_DESKTOP [?] /* Remove this property on unmap */
|
_NET_WM_DESKTOP [ ]
|
||||||
_NET_WM_HANDLED_ICONS [ ]
|
_NET_WM_HANDLED_ICONS [T]
|
||||||
_NET_WM_ICON [X]
|
_NET_WM_ICON [X]
|
||||||
_NET_WM_ICON_GEOMETRY [ ]
|
_NET_WM_ICON_GEOMETRY [T]
|
||||||
_NET_WM_ICON_NAME [X]
|
_NET_WM_ICON_NAME [X]
|
||||||
_NET_WM_MOVERESIZE [ ]
|
_NET_WM_MOVERESIZE [ ]
|
||||||
_NET_WM_NAME [X]
|
_NET_WM_NAME [X]
|
||||||
|
@ -63,11 +66,11 @@ _NET_WM_STATE_FULLSCREEN [X]
|
||||||
_NET_WM_STATE_ABOVE [X]
|
_NET_WM_STATE_ABOVE [X]
|
||||||
_NET_WM_STATE_BELOW [X]
|
_NET_WM_STATE_BELOW [X]
|
||||||
_NET_WM_STATE_DEMANDS_ATTENTION [ ]
|
_NET_WM_STATE_DEMANDS_ATTENTION [ ]
|
||||||
_NET_WM_STRUT [ ]
|
_NET_WM_STRUT [X]
|
||||||
_NET_WM_STRUT_PARTIAL [ ]
|
_NET_WM_STRUT_PARTIAL [X]
|
||||||
_NET_WM_SYNC_REQUEST [ ]
|
_NET_WM_SYNC_REQUEST [ ]
|
||||||
_NET_WM_SYNC_REQUEST_COUNTER [ ]
|
_NET_WM_SYNC_REQUEST_COUNTER [ ]
|
||||||
_NET_WM_USER_TIME [ ]
|
_NET_WM_USER_TIME [X]
|
||||||
_NET_WM_VISIBLE_ICON_NAME [X] /* E uses _NET_WM_ICON_NAME, doesn't need to set this */
|
_NET_WM_VISIBLE_ICON_NAME [X] /* E uses _NET_WM_ICON_NAME, doesn't need to set this */
|
||||||
_NET_WM_VISIBLE_NAME [X] /* E uses _NET_WM_NAME, doesn't need to set this */
|
_NET_WM_VISIBLE_NAME [X] /* E uses _NET_WM_NAME, doesn't need to set this */
|
||||||
/* Do we have to do anything special with these, except
|
/* Do we have to do anything special with these, except
|
||||||
|
@ -81,4 +84,4 @@ _NET_WM_WINDOW_TYPE_UTILITY [X]
|
||||||
_NET_WM_WINDOW_TYPE_SPLASH [X]
|
_NET_WM_WINDOW_TYPE_SPLASH [X]
|
||||||
_NET_WM_WINDOW_TYPE_DIALOG [X]
|
_NET_WM_WINDOW_TYPE_DIALOG [X]
|
||||||
_NET_WM_WINDOW_TYPE_NORMAL [X]
|
_NET_WM_WINDOW_TYPE_NORMAL [X]
|
||||||
_NET_WORKAREA [ ]
|
_NET_WORKAREA [X]
|
||||||
|
|
|
@ -355,6 +355,20 @@ e_border_new(E_Container *con, Ecore_X_Window win, int first_map)
|
||||||
{
|
{
|
||||||
bd->client.netwm.fetch.icon = 1;
|
bd->client.netwm.fetch.icon = 1;
|
||||||
}
|
}
|
||||||
|
else if (atoms[i] == ECORE_X_ATOM_NET_WM_USER_TIME)
|
||||||
|
{
|
||||||
|
bd->client.netwm.fetch.user_time = 1;
|
||||||
|
}
|
||||||
|
else if (atoms[i] == ECORE_X_ATOM_NET_WM_STRUT)
|
||||||
|
{
|
||||||
|
printf("ECORE_X_ATOM_NET_WM_STRUT\n");
|
||||||
|
bd->client.netwm.fetch.strut = 1;
|
||||||
|
}
|
||||||
|
else if (atoms[i] == ECORE_X_ATOM_NET_WM_STRUT_PARTIAL)
|
||||||
|
{
|
||||||
|
printf("ECORE_X_ATOM_NET_WM_STRUT_PARTIAL\n");
|
||||||
|
bd->client.netwm.fetch.strut = 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
free(atoms);
|
free(atoms);
|
||||||
}
|
}
|
||||||
|
@ -1971,6 +1985,21 @@ _e_border_cb_window_property(void *data, int ev_type, void *ev)
|
||||||
bd->client.netwm.fetch.icon = 1;
|
bd->client.netwm.fetch.icon = 1;
|
||||||
bd->changed = 1;
|
bd->changed = 1;
|
||||||
}
|
}
|
||||||
|
else if (e->atom == ECORE_X_ATOM_NET_WM_USER_TIME)
|
||||||
|
{
|
||||||
|
bd->client.netwm.fetch.user_time = 1;
|
||||||
|
bd->changed = 1;
|
||||||
|
}
|
||||||
|
else if (e->atom == ECORE_X_ATOM_NET_WM_STRUT)
|
||||||
|
{
|
||||||
|
bd->client.netwm.fetch.strut = 1;
|
||||||
|
bd->changed = 1;
|
||||||
|
}
|
||||||
|
else if (e->atom == ECORE_X_ATOM_NET_WM_STRUT_PARTIAL)
|
||||||
|
{
|
||||||
|
bd->client.netwm.fetch.strut = 1;
|
||||||
|
bd->changed = 1;
|
||||||
|
}
|
||||||
*/
|
*/
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
@ -2944,6 +2973,44 @@ _e_border_eval(E_Border *bd)
|
||||||
bd->changes.icon = 1;
|
bd->changes.icon = 1;
|
||||||
bd->client.netwm.fetch.icon = 0;
|
bd->client.netwm.fetch.icon = 0;
|
||||||
}
|
}
|
||||||
|
if (bd->client.netwm.fetch.user_time)
|
||||||
|
{
|
||||||
|
ecore_x_netwm_user_time_get(bd->client.win, &bd->client.netwm.user_time);
|
||||||
|
|
||||||
|
bd->client.netwm.fetch.user_time = 0;
|
||||||
|
}
|
||||||
|
if (bd->client.netwm.fetch.strut)
|
||||||
|
{
|
||||||
|
if (!ecore_x_netwm_strut_partial_get(bd->client.win,
|
||||||
|
&bd->client.netwm.strut.left,
|
||||||
|
&bd->client.netwm.strut.right,
|
||||||
|
&bd->client.netwm.strut.top,
|
||||||
|
&bd->client.netwm.strut.bottom,
|
||||||
|
&bd->client.netwm.strut.left_start_y,
|
||||||
|
&bd->client.netwm.strut.left_end_y,
|
||||||
|
&bd->client.netwm.strut.right_start_y,
|
||||||
|
&bd->client.netwm.strut.right_end_y,
|
||||||
|
&bd->client.netwm.strut.top_start_x,
|
||||||
|
&bd->client.netwm.strut.top_end_x,
|
||||||
|
&bd->client.netwm.strut.bottom_start_x,
|
||||||
|
&bd->client.netwm.strut.bottom_end_x))
|
||||||
|
{
|
||||||
|
ecore_x_netwm_strut_get(bd->client.win,
|
||||||
|
&bd->client.netwm.strut.left, &bd->client.netwm.strut.right,
|
||||||
|
&bd->client.netwm.strut.top, &bd->client.netwm.strut.bottom);
|
||||||
|
|
||||||
|
bd->client.netwm.strut.left_start_y = 0;
|
||||||
|
bd->client.netwm.strut.left_end_y = 0;
|
||||||
|
bd->client.netwm.strut.right_start_y = 0;
|
||||||
|
bd->client.netwm.strut.right_end_y = 0;
|
||||||
|
bd->client.netwm.strut.top_start_x = 0;
|
||||||
|
bd->client.netwm.strut.top_end_x = 0;
|
||||||
|
bd->client.netwm.strut.bottom_start_x = 0;
|
||||||
|
bd->client.netwm.strut.bottom_end_x = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
bd->client.netwm.fetch.strut = 0;
|
||||||
|
}
|
||||||
if (bd->changes.icon)
|
if (bd->changes.icon)
|
||||||
{
|
{
|
||||||
if (bd->icon_object)
|
if (bd->icon_object)
|
||||||
|
|
|
@ -168,6 +168,21 @@ struct _E_Border
|
||||||
int height;
|
int height;
|
||||||
int size;
|
int size;
|
||||||
} icon;
|
} icon;
|
||||||
|
unsigned int user_time;
|
||||||
|
struct {
|
||||||
|
int left;
|
||||||
|
int right;
|
||||||
|
int top;
|
||||||
|
int bottom;
|
||||||
|
int left_start_y;
|
||||||
|
int left_end_y;
|
||||||
|
int right_start_y;
|
||||||
|
int right_end_y;
|
||||||
|
int top_start_x;
|
||||||
|
int top_end_x;
|
||||||
|
int bottom_start_x;
|
||||||
|
int bottom_end_x;
|
||||||
|
} strut;
|
||||||
|
|
||||||
/* NetWM Window state */
|
/* NetWM Window state */
|
||||||
struct {
|
struct {
|
||||||
|
@ -189,6 +204,8 @@ struct _E_Border
|
||||||
unsigned char name : 1;
|
unsigned char name : 1;
|
||||||
unsigned char icon_name : 1;
|
unsigned char icon_name : 1;
|
||||||
unsigned char icon : 1;
|
unsigned char icon : 1;
|
||||||
|
unsigned char user_time : 1;
|
||||||
|
unsigned char strut : 1;
|
||||||
/* No, fetch on new_client, shouldn't be changed after map.
|
/* No, fetch on new_client, shouldn't be changed after map.
|
||||||
unsigned char pid : 1;
|
unsigned char pid : 1;
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -43,8 +43,6 @@ e_hints_init(void)
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST, 1);
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST_STACKING, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_CLIENT_LIST_STACKING, 1);
|
||||||
|
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_DESKTOP_GEOMETRY, 1);
|
|
||||||
|
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_FRAME_EXTENTS, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_FRAME_EXTENTS, 1);
|
||||||
|
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_SUPPORTED, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_SUPPORTED, 1);
|
||||||
|
@ -68,6 +66,10 @@ e_hints_init(void)
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_ABOVE, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_ABOVE, 1);
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_BELOW, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STATE_BELOW, 1);
|
||||||
|
|
||||||
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STRUT, 1);
|
||||||
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_STRUT_PARTIAL, 1);
|
||||||
|
|
||||||
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_USER_TIME, 1);
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_ICON_NAME, 1);
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_NAME, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_VISIBLE_NAME, 1);
|
||||||
|
|
||||||
|
@ -80,6 +82,7 @@ e_hints_init(void)
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_SPLASH, 1);
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_DIALOG, 1);
|
||||||
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL, 1);
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WM_WINDOW_TYPE_NORMAL, 1);
|
||||||
|
ecore_x_netwm_supported(roots[i], ECORE_X_ATOM_NET_WORKAREA, 1);
|
||||||
}
|
}
|
||||||
free(roots);
|
free(roots);
|
||||||
}
|
}
|
||||||
|
@ -108,7 +111,6 @@ e_hints_e16_comms_pretend(E_Manager *man)
|
||||||
void
|
void
|
||||||
e_hints_manager_init(E_Manager *man)
|
e_hints_manager_init(E_Manager *man)
|
||||||
{
|
{
|
||||||
ecore_x_netwm_desk_size_set(man->root, man->w, man->h);
|
|
||||||
e_hints_e16_comms_pretend(man);
|
e_hints_e16_comms_pretend(man);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1033,7 +1035,9 @@ e_hints_window_desktop_set(E_Border *bd)
|
||||||
deskpos[1] = bd->desk->y;
|
deskpos[1] = bd->desk->y;
|
||||||
ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_DESK, deskpos, 2);
|
ecore_x_window_prop_card32_set(bd->client.win, E_ATOM_DESK, deskpos, 2);
|
||||||
|
|
||||||
|
#if 0
|
||||||
ecore_x_netwm_desktop_set(bd->client.win, current);
|
ecore_x_netwm_desktop_set(bd->client.win, current);
|
||||||
|
#endif
|
||||||
bd->client.netwm.desktop = current;
|
bd->client.netwm.desktop = current;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue