2

我正在尝试使用 clx 更改墙纸,但它不起作用。我的代码有什么问题?

(ql:quickload :clx)

(defpackage #:wm/uw
  (:use #:cl #:xlib))

(in-package #:wm/uw)

(setf *display* (open-default-display))

(setf *screen* (display-default-screen *display*))

(setf *root* (screen-root *screen*))

(setf (window-background *root*) (screen-white-pixel *screen*))

(clear-area *root*)
(close-display *display*)


4

1 回答 1

0

为了提高网络性能,许多 X11 客户端库不直接执行 X11 命令。相反,命令被存储并批量发送到 XServer。通常,这会在事件处理之前自动发生。由于您没有进行任何事件处理,因此命令队列似乎永远不会被刷新。如果你执行

(xlib::buffer-flush *display*)

在关闭显示之前,您应该会看到所需的效果。CLX 不导出buffer-flush函数,因此您需要明确说明包名称。

于 2021-07-28T14:24:09.947 回答