--- xfce4-cvs/xfwm4/src/client.c 2005-01-23 16:59:32.000000000 +0200 +++ xfce4/xfwm4/src/client.c 2005-01-24 10:20:42.540207296 +0200 @@ -287,10 +287,11 @@ grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_ADD_WORKSPACE], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_CLOSE_WINDOW], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_CYCLE_WINDOWS], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_DEL_WORKSPACE], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_HIDE_WINDOW], c->window); + grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_SHOW_DESKTOP], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_LOWER_WINDOW], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_VERT], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], c->window); grabKey (clientGetXDisplay (c), &screen_info->params->keys[KEY_MOVE_DOWN], c->window); --- xfce4-cvs/xfwm4/src/events.c 2005-01-23 16:59:32.000000000 +0200 +++ xfce4/xfwm4/src/events.c 2005-01-24 10:30:10.933798336 +0200 @@ -574,10 +574,30 @@ Here we know that "screen_info" is defined, otherwise, we would already have returned... */ switch (key) { + case KEY_SHOW_DESKTOP: + { + long visible = 0; + XEvent ev; + + if ( getHint( display_info, screen_info->xroot, NET_SHOWING_DESKTOP, &visible ) == TRUE ) { + ev.xclient.type = ClientMessage; + ev.xclient.serial = 0; + ev.xclient.send_event = True; + ev.xclient.message_type = XInternAtom( display_info->dpy, "_NET_SHOWING_DESKTOP", False ); + ev.xclient.window = DefaultRootWindow( display_info->dpy ); + ev.xclient.format = 32; + ev.xclient.data.l[0] = ( visible ) ? FALSE : TRUE; + + XSendEvent( display_info->dpy, DefaultRootWindow( display_info->dpy ), + False, SubstructureRedirectMask | SubstructureNotifyMask, + &ev ); + } + } + break; case KEY_NEXT_WORKSPACE: workspaceSwitch (screen_info, screen_info->current_ws + 1, NULL); break; case KEY_PREV_WORKSPACE: workspaceSwitch (screen_info, screen_info->current_ws - 1, NULL); --- xfce4-cvs/xfwm4/themes/default.keys/keythemerc 2005-01-23 16:59:32.000000000 +0200 +++ xfce4/xfwm4/themes/default.keys/keythemerc 2005-01-24 09:46:12.682873440 +0200 @@ -1,10 +1,11 @@ close_window_key=Alt+F4 maximize_window_key=Alt+F5 maximize_vert_key=Alt+F6 maximize_horiz_key=Alt+F7 hide_window_key=Alt+F8 +show_desktop_key=Control+Alt+d shade_window_key=Alt+F9 stick_window_key=Alt+F10 cycle_windows_key=Alt+Tab move_window_up_key=Control+Shift+Alt+Up move_window_down_key=Control+Shift+Alt+Down --- xfce4-cvs/xfwm4/src/settings.c 2005-01-23 16:59:32.000000000 +0200 +++ xfce4/xfwm4/src/settings.c 2005-01-23 21:51:20.000000000 +0200 @@ -983,10 +983,11 @@ parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_LEFT], getValue ("resize_window_left_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_RESIZE_RIGHT], getValue ("resize_window_right_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], getValue ("cycle_windows_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_CLOSE_WINDOW], getValue ("close_window_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_HIDE_WINDOW], getValue ("hide_window_key", rc)); + parseKeyString (dpy, &screen_info->params->keys[KEY_SHOW_DESKTOP], getValue("show_desktop_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_WINDOW], getValue ("maximize_window_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_VERT], getValue ("maximize_vert_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_MAXIMIZE_HORIZ], getValue ("maximize_horiz_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_SHADE_WINDOW], getValue ("shade_window_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], getValue ("next_workspace_key", rc)); @@ -1035,10 +1036,11 @@ parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_DOWN_WORKSPACE], getValue ("move_window_down_workspace_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_LEFT_WORKSPACE], getValue ("move_window_left_workspace_key", rc)); parseKeyString (dpy, &screen_info->params->keys[KEY_MOVE_RIGHT_WORKSPACE], getValue ("move_window_right_workspace_key", rc)); ungrabKeys (dpy, screen_info->gnome_win); + grabKey (dpy, &screen_info->params->keys[KEY_SHOW_DESKTOP], screen_info->gnome_win); grabKey (dpy, &screen_info->params->keys[KEY_CYCLE_WINDOWS], screen_info->gnome_win); grabKey (dpy, &screen_info->params->keys[KEY_NEXT_WORKSPACE], screen_info->gnome_win); grabKey (dpy, &screen_info->params->keys[KEY_PREV_WORKSPACE], screen_info->gnome_win); grabKey (dpy, &screen_info->params->keys[KEY_ADD_WORKSPACE], screen_info->gnome_win); grabKey (dpy, &screen_info->params->keys[KEY_DEL_WORKSPACE], screen_info->gnome_win); @@ -1150,10 +1152,11 @@ {"close_window_key", NULL, TRUE}, {"cycle_windows_key", NULL, TRUE}, {"del_workspace_key", NULL, TRUE}, {"fullscreen_key", NULL, TRUE}, {"hide_window_key", NULL, TRUE}, + {"show_desktop_key", NULL, TRUE}, {"maximize_horiz_key", NULL, TRUE}, {"maximize_vert_key", NULL, TRUE}, {"maximize_window_key", NULL, TRUE}, {"move_window_down_key", NULL, TRUE}, {"move_window_left_key", NULL, TRUE}, --- xfce4-cvs/xfwm4/src/settings.h 2005-01-23 16:59:32.000000000 +0200 +++ xfce4/xfwm4/src/settings.h 2005-01-23 21:51:20.000000000 +0200 @@ -64,61 +64,62 @@ #define KEY_RESIZE_LEFT 6 #define KEY_RESIZE_RIGHT 7 #define KEY_CYCLE_WINDOWS 8 #define KEY_CLOSE_WINDOW 9 #define KEY_HIDE_WINDOW 10 -#define KEY_MAXIMIZE_WINDOW 11 -#define KEY_MAXIMIZE_VERT 12 -#define KEY_MAXIMIZE_HORIZ 13 -#define KEY_SHADE_WINDOW 14 -#define KEY_NEXT_WORKSPACE 15 -#define KEY_PREV_WORKSPACE 16 -#define KEY_ADD_WORKSPACE 17 -#define KEY_DEL_WORKSPACE 18 -#define KEY_STICK_WINDOW 19 -#define KEY_WORKSPACE_1 20 -#define KEY_WORKSPACE_2 21 -#define KEY_WORKSPACE_3 22 -#define KEY_WORKSPACE_4 23 -#define KEY_WORKSPACE_5 24 -#define KEY_WORKSPACE_6 25 -#define KEY_WORKSPACE_7 26 -#define KEY_WORKSPACE_8 27 -#define KEY_WORKSPACE_9 28 -#define KEY_MOVE_NEXT_WORKSPACE 29 -#define KEY_MOVE_PREV_WORKSPACE 30 -#define KEY_MOVE_WORKSPACE_1 31 -#define KEY_MOVE_WORKSPACE_2 32 -#define KEY_MOVE_WORKSPACE_3 33 -#define KEY_MOVE_WORKSPACE_4 34 -#define KEY_MOVE_WORKSPACE_5 35 -#define KEY_MOVE_WORKSPACE_6 36 -#define KEY_MOVE_WORKSPACE_7 37 -#define KEY_MOVE_WORKSPACE_8 38 -#define KEY_MOVE_WORKSPACE_9 39 -#define KEY_SHORTCUT_1 40 -#define KEY_SHORTCUT_2 41 -#define KEY_SHORTCUT_3 42 -#define KEY_SHORTCUT_4 43 -#define KEY_SHORTCUT_5 44 -#define KEY_SHORTCUT_6 45 -#define KEY_SHORTCUT_7 46 -#define KEY_SHORTCUT_8 47 -#define KEY_SHORTCUT_9 48 -#define KEY_SHORTCUT_10 49 -#define KEY_LOWER_WINDOW 50 -#define KEY_RAISE_WINDOW 51 -#define KEY_TOGGLE_FULLSCREEN 52 -#define KEY_UP_WORKSPACE 53 -#define KEY_DOWN_WORKSPACE 54 -#define KEY_LEFT_WORKSPACE 55 -#define KEY_RIGHT_WORKSPACE 56 -#define KEY_MOVE_UP_WORKSPACE 57 -#define KEY_MOVE_DOWN_WORKSPACE 58 -#define KEY_MOVE_LEFT_WORKSPACE 59 -#define KEY_MOVE_RIGHT_WORKSPACE 60 -#define KEY_COUNT 61 +#define KEY_SHOW_DESKTOP 11 +#define KEY_MAXIMIZE_WINDOW 12 +#define KEY_MAXIMIZE_VERT 13 +#define KEY_MAXIMIZE_HORIZ 14 +#define KEY_SHADE_WINDOW 15 +#define KEY_NEXT_WORKSPACE 16 +#define KEY_PREV_WORKSPACE 17 +#define KEY_ADD_WORKSPACE 18 +#define KEY_DEL_WORKSPACE 19 +#define KEY_STICK_WINDOW 20 +#define KEY_WORKSPACE_1 21 +#define KEY_WORKSPACE_2 22 +#define KEY_WORKSPACE_3 23 +#define KEY_WORKSPACE_4 24 +#define KEY_WORKSPACE_5 25 +#define KEY_WORKSPACE_6 26 +#define KEY_WORKSPACE_7 27 +#define KEY_WORKSPACE_8 28 +#define KEY_WORKSPACE_9 29 +#define KEY_MOVE_NEXT_WORKSPACE 30 +#define KEY_MOVE_PREV_WORKSPACE 31 +#define KEY_MOVE_WORKSPACE_1 32 +#define KEY_MOVE_WORKSPACE_2 33 +#define KEY_MOVE_WORKSPACE_3 34 +#define KEY_MOVE_WORKSPACE_4 35 +#define KEY_MOVE_WORKSPACE_5 36 +#define KEY_MOVE_WORKSPACE_6 37 +#define KEY_MOVE_WORKSPACE_7 38 +#define KEY_MOVE_WORKSPACE_8 39 +#define KEY_MOVE_WORKSPACE_9 40 +#define KEY_SHORTCUT_1 41 +#define KEY_SHORTCUT_2 42 +#define KEY_SHORTCUT_3 43 +#define KEY_SHORTCUT_4 44 +#define KEY_SHORTCUT_5 45 +#define KEY_SHORTCUT_6 46 +#define KEY_SHORTCUT_7 47 +#define KEY_SHORTCUT_8 48 +#define KEY_SHORTCUT_9 49 +#define KEY_SHORTCUT_10 50 +#define KEY_LOWER_WINDOW 51 +#define KEY_RAISE_WINDOW 52 +#define KEY_TOGGLE_FULLSCREEN 53 +#define KEY_UP_WORKSPACE 54 +#define KEY_DOWN_WORKSPACE 55 +#define KEY_LEFT_WORKSPACE 56 +#define KEY_RIGHT_WORKSPACE 57 +#define KEY_MOVE_UP_WORKSPACE 58 +#define KEY_MOVE_DOWN_WORKSPACE 59 +#define KEY_MOVE_LEFT_WORKSPACE 60 +#define KEY_MOVE_RIGHT_WORKSPACE 61 +#define KEY_COUNT 62 #define NB_KEY_SHORTCUTS 10 #define ALIGN_LEFT 0 #define ALIGN_RIGHT 1 #define ALIGN_CENTER 2 --- xfce4-cvs/xfwm4/mcs-plugin/xfwm4_shortcuteditor.c 2005-01-23 16:59:32.000000000 +0200 +++ xfce4/xfwm4/mcs-plugin/xfwm4_shortcuteditor.c 2005-01-23 21:51:20.000000000 +0200 @@ -377,10 +377,15 @@ else if (g_ascii_strcasecmp (*shortcut, "hide_window_key") == 0) { gtk_list_store_append (GTK_LIST_STORE (model3), &iter); gtk_list_store_set (GTK_LIST_STORE (model3), &iter, COLUMN_COMMAND, _("Hide window"), COLUMN_SHORTCUT, entry_value, COLUMN_NAME, *shortcut, -1); } + else if ( g_ascii_strcasecmp( *shortcut, "show_desktop_key" ) == 0 ) + { + gtk_list_store_append( GTK_LIST_STORE( model3 ), &iter ); + gtk_list_store_set( GTK_LIST_STORE( model3 ), &iter, COLUMN_COMMAND, _( "Show desktop" ), COLUMN_SHORTCUT, entry_value, COLUMN_NAME, *shortcut, -1 ); + } else if (g_ascii_strcasecmp (*shortcut, "shade_window_key") == 0) { gtk_list_store_append (GTK_LIST_STORE (model3), &iter); gtk_list_store_set (GTK_LIST_STORE (model3), &iter, COLUMN_COMMAND, _("Shade window"), COLUMN_SHORTCUT, entry_value, COLUMN_NAME, *shortcut, -1); }