原因: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都可以;