M README.md => README.md +9 -9
@@ 8,8 8,7 @@ Wayflan is a from-scratch Wayland communication library for Common Lisp. It is
not a binding or a wrapper around
[libwayland](https://wayland.freedesktop.org/), but a re-implementation of the
Wayland protocol. This unties Lisp applications from per-proxy manual memory
-allocation, toplevel-only C callbacks, and enables a closer interface with CLOS
-and CLCS.
+allocation, toplevel-only C callbacks, and enables a closer interface with lisp.
Wayflan makes a good-faith effort to mimic libwayland behavior not defined in
the Wayland spec, to keep compatibility between the two libraries.
@@ 24,6 23,7 @@ transition projects to any breaking changes I make along the way.*
## Features
+- Client support
- All implementation done in Common Lisp from the socket up
- Enum values are translated into keywords
- Wayland protocol introspection
@@ 33,11 33,11 @@ transition projects to any breaking changes I make along the way.*
## Road map
-Wayflan is currently only a communication library for Wayland clients, but
-intends to be a full-duplex library for both Clients and Compositors. The
-Wayflan project [tracker](https://todo.sr.ht/~shunter/wayflan) lists all
-tickets to improve Wayflan, and other Common Lisp systems related to the Linux
-desktop.
+Wayflan is currently only a single-threaded communication library for Wayland
+clients, but intends to be a full-duplex multi-threadable library for both
+Clients and Compositors. The Wayflan project
+[tracker](https://todo.sr.ht/~shunter/wayflan) lists all tickets to improve
+Wayflan and other systems for the Freedesktop stack.
## Documentation
@@ 51,7 51,7 @@ desktop.
This is a brief version of the [Hello World](./examples/hello-world.lisp) example.
-This snippet connects to a Wayland compositor to print all global variables the
+This snippet connects to a Wayland server to print all global variables the
client can bind to:
```lisp
@@ 59,7 59,7 @@ client can bind to:
(use-package :wayflan-client)
(defun run ()
- ;; Try to connect to a compositor socket at $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.
+ ;; Try to connect to a server socket at $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY.
;; If $WAYLAND_DISPLAY describes an absolute path, connect to that directly.
(with-open-display (display)
;; Create a registry to provide a list of all
M doc/API-Reference.md => doc/API-Reference.md +2 -2
@@ 92,7 92,7 @@ order each was defined, and identify which request or event to act on.
**Description:**
-Represents a message from a client to the compositor
+Represents a message from a client to the server
**Readers:**
@@ 106,7 106,7 @@ Represents a message from a client to the compositor
**Description:**
-Represents a message from the compositor to a client
+Represents a message from the server to a client
**Readers:**
M doc/Client-API-Reference.md => doc/Client-API-Reference.md +5 -5
@@ 2,7 2,7 @@
The wayflan-client package includes all symbols from the [wayflan
package](./API-Reference.md) plus the interface for connecting to, sending
-messages to, and dispatching events from a compositor.
+messages to, and dispatching events from a server.
The macro forms **define-interface**, **define-enum**, **define-request**, and
**define-event** are all used internally by `:wayflan-client-impl`, and are
@@ 36,7 36,7 @@ no value, return **nil**.
**Description:**
-A representation of a resource in the Wayland compositor. All subclasses are an
+A representation of a resource in the Wayland server. All subclasses are an
instance of __wl-interface-class__ except __wl-destroyed-proxy__.
**Readers:**
@@ 89,7 89,7 @@ internal Wayland protocol features.
**Description:**
-Find and return a proxy known by the Wayland compositor by that name.
+Find and return a proxy known by the Wayland server by that name.
## [Generic Function] **destroy-proxy** *proxy*
@@ 100,7 100,7 @@ Find and return a proxy known by the Wayland compositor by that name.
**Description:**
Mark the proxy for destruction and reclaim its ID for use by another proxy.
-Destructor requests specialize on **destroy-proxy** to send the compositor the
+Destructor requests specialize on **destroy-proxy** to send the server the
request message.
## [Generic Function] **wl-enum-value** *enum keyword* => *integer*
@@ 130,7 130,7 @@ keywords), according to *enum*.
## [Function] **wl-display-connect** *&optional name* => *display*
-Connect to a Wayland compositor and return a __wl-display__ owning the
+Connect to a Wayland server and return a __wl-display__ owning the
connection.
## [Function] **wl-display-disconnect** *display*
M src/client/client.lisp => src/client/client.lisp +2 -2
@@ 93,7 93,7 @@
(defclass wl-destroyed-proxy (wl-proxy)
()
- (:documentation "A proxy that has since been deleted by the compositor."))
+ (:documentation "A proxy that has since been deleted by the server."))
(defclass wl-display (wl-proxy)
((%pathname :type pathname
@@ 104,7 104,7 @@
:reader %proxy-table)
(%socket :type data-socket
:initarg :socket :reader %wl-display-socket))
- (:documentation "A connection to the compositor that acts as a proxy to the wl_display singleton object")
+ (:documentation "A connection to the server that acts as a proxy to the wl_display singleton object")
(:version . 1)
(:interface-name . "wl_display")
(:metaclass wl-interface-class))
M src/client/packages.lisp => src/client/packages.lisp +10 -18
@@ 50,29 50,23 @@
#:define-event)
(:documentation "Wayland client and core protocol implementation.
-Wayland is a protocol for a compositor to talk to its clients.
-The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
-The clients can be traditional applications, X servers (rootless or fullscreen), or other display servers.
+Wayland is a protocol for clients to talk to a display server to make themselves visible or get input from the user.
+The server can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
-This package defines the client's interpretation of various CLOS classes, the event protocol, define- macros to implement wayland protocols, and the core Wayland protocol."))
+This package contains symbols to drive the clientside implementation of the Wayland protocol."))
(defpackage #:xyz.shunter.wayflan.client.scanner
(:use #:cl #:alexandria #:xyz.shunter.wayflan.client)
(:export #:wl-include)
- (:documentation "PRIVATE: Wayland XML protocol definitions auto-wrapper.
-
-This package defines WL-INCLUDE, a macro that transforms a Wayland protocol described in an XML file into wayflan definition forms.
-
-PRIVATE: This package is private to Wayflan, and its API is susceptible to change. Please do not use this package in your own code."))
+ (:documentation "PRIVATE: This package is private to Wayflan, and its API is susceptible to change. Please do not use this package in your own code."))
(defpackage #:xyz.shunter.wayflan.client.presentation-time
(:use #:cl #:xyz.shunter.wayflan.client)
(:nicknames #:wayflan-client.presentation-time)
(:documentation "Wayland Presentation time protocol implementation.
-Wayland is a protocol for a compositor to talk to its clients.
-The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
-The clients can be traditional applications, X servers (rootless or fullscreen), or other display servers.
+Wayland is a protocol for clients to talk to a display server to make themselves visible or get input from the user.
+The server can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
This package implements the stable Presentation Time protocol."))
@@ 81,9 75,8 @@ This package implements the stable Presentation Time protocol."))
(:nicknames #:wayflan-client.viewporter)
(:documentation "Wayland Viewporter protocol implementation.
-Wayland is a protocol for a compositor to talk to its clients.
-The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
-The clients can be traditional applications, X servers (rootless or fullscreen), or other display servers.
+Wayland is a protocol for clients to talk to a display server to make themselves visible or get input from the user.
+The server can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
This package implements the stable Viewporter protocol."))
@@ 92,8 85,7 @@ This package implements the stable Viewporter protocol."))
(:nicknames #:wayflan-client.xdg-shell)
(:documentation "Wayland XDG shell protocol implementation.
-Wayland is a protocol for a compositor to talk to its clients.
-The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
-The clients can be traditional applications, X servers (rootless or fullscreen), or other display servers.
+Wayland is a protocol for clients to talk to a display server to make themselves visible or get input from the user.
+The server can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
This package implements the stable XDG shell protocol."))
M src/packages.lisp => src/packages.lisp +4 -9
@@ 55,11 55,10 @@
#:wl-parse)
(:documentation "Wayland protocol and type information
-Wayland is a protocol for a compositor to talk to its clients.
-The compositor can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
-The clients can be traditional applications, X servers (rootless or fullscreen), or other display servers.
+Wayland is a protocol for clients to talk to a display server to make themselves visible or get input from the user.
+The server can be a standalone display server running on Linux kernel modesetting and evdev input devices, or an X application, or a Wayland client itself.
-This package defines Wayland protocol CLOS objects, a function that parses a protocol document into CLOS, and a series of types of Wayland primitives."))
+This package defines Wayland protocol CLOS objects, a function that parses a protocol document into CLOS, and a series of Wayland primitives as lisp types."))
(defpackage #:xyz.shunter.wayflan.ffi
(:use #:cffi)
@@ 132,8 131,4 @@ This package defines Wayland protocol CLOS objects, a function that parses a pro
#:read-wl-string
#:read-wl-array
#:with-incoming-message)
- (:documentation "PRIVATE: Wayland wire format marshalling.
-
-The wayland-wire package defines utilities for communicating primitive data through a local address socket
-
-PRIVATE: This package is private to Wayflan, and its API is susceptible to change. Please do not use this package in your own code."))
+ (:documentation "PRIVATE: This package is private to Wayflan, and its API is susceptible to change. Please do not use this package in your own code."))
M src/protocol.lisp => src/protocol.lisp +2 -2
@@ 56,9 56,9 @@ Interfaces are message-based. Requests are actuated as server-bound messages, wh
:initarg :args)))
(defclass wl-request (%wl-message) ()
- (:documentation "Represents a message from a client to the compositor"))
+ (:documentation "Represents a message from a client to the server"))
(defclass wl-event (%wl-message) ()
- (:documentation "Represents a message from the compositor to a client"))
+ (:documentation "Represents a message from the server to a client"))
(defclass wl-enum (%wl-named-object)
((%since :type wl-uint :reader wl-since
M src/wire.lisp => src/wire.lisp +1 -2
@@ 300,8 300,7 @@ in the circular buffer and return the number of iovecs used."
(%input-fdbuf :initform (make-circular-buffer)
:type (or circular-buffer null))
(%output-fdbuf :initform (make-circular-buffer)
- :type (or circular-buffer null)))
- (:documentation "A binary binary local socket connected to a Wayland compositor"))
+ :type (or circular-buffer null))))
(defun make-socket ()
(let ((sockfd (socket +af-local+ +sock-stream+ 0)))