原因:xfce4面板上的显示桌面属于一个插件形式,不提供命令行,对于快捷键来说定制性不强;

方法来源:https://www.linuxquestions.org/questions/linux-software-2/how-to-show-desktop-in-xfce4-601161/

方法1:自行编译源代码:(未测试,具备切换功能)

代码段:

#include <X11/Xatom.h>
#include <X11/Xlib.h>
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char *argv[])
{
Display *d;
Window root;
Atom _NET_SHOWING_DESKTOP, actual_type;
int actual_format, error, current;
unsigned long nitems, after;
unsigned char *data = NULL;
/* Open the default display */
if(!(d = XOpenDisplay(NULL))) {
fprintf(stderr, "Cannot open display \"%s\".\n", XDisplayName(NULL));
exit(EXIT_FAILURE);
}
/* This is the default root window */
root = DefaultRootWindow(d);
/* find the Atom for _NET_SHOWING_DESKTOP */
_NET_SHOWING_DESKTOP = XInternAtom(d, "_NET_SHOWING_DESKTOP", False);
/* Obtain the current state of _NET_SHOWING_DESKTOP on the default root window */
error = XGetWindowProperty(d, root, _NET_SHOWING_DESKTOP, 0, 1, False, XA_CARDINAL,
                           &actual_type, &actual_format, &nitems, &after, &data);
if(error != Success) {
fprintf(stderr, "Received error %d!\n", error);
XCloseDisplay(d);
exit(EXIT_FAILURE);
}
/* The current state should be in data[0] */
if(data) {
current = data[0];
XFree(data);
data = NULL;
}
/* If nitems is 0, forget about data[0] and assume that current should be False */
if(!nitems) {
fprintf(stderr, "Unexpected result.\n");
fprintf(stderr, "Assuming unshown desktop!\n");
current = False;
}
/* Initialize Xevent struct */
XEvent xev = {
.xclient = {
.type = ClientMessage,
.send_event = True,
.display = d,
.window = root,
.message_type = _NET_SHOWING_DESKTOP,
.format = 32,
.data.l[0] = !current /* That’s what we want the new state to be */
}
};
/* Send the event to the window manager */
XSendEvent(d, root, False, SubstructureRedirectMask | SubstructureNotifyMask, &xev);
XCloseDisplay(d);
exit(EXIT_SUCCESS);
return 0;
}

将此代码保存为例如showdesk.c,然后采用:gcc -o showdesk -lX11 showdesk.c进行编译合成(作者提到前提系统需要先安装libX11以及header);

编译完成后,现在终端里面测试一下这个showdesk的可执行文件,./showdesktop; sleep 2; ./showdesktop,如果运行良好,则可以将此文件放入/usr/bin中,直接调用该命令了;

方法2:极其简单,按照该帖作者的说法,适用于多种桌面环境;(已测试,显示和恢复是两个命令)

显示桌面,最小化全部窗口:wmctrl -k on

恢复窗口:wmctrl -k off

将此设为快捷键或者设为alias都可以;