I am glad to get my last phost's offline distaste out of my mouth and begin my quest into the mcclim backend of clim2. This is what I think I am doing, anyway. CLIM's premise is that the only way to talk to common lisp defined by the standard is READing streams, such as standard input or file streams. CLIM changes this to event streams, implicitly from graphical applications. The CLIM2 standard is then implemented by the McCLIM example backend which is the SWANK server frome gnu emacs slime for communicating to lisp streams, and every other lisp package (basically for MMAPed graphics and every file format under the sun). I feel like it could be easier to not load dependencies I don't want. I was a bit confused by simply include :clim and :clim-lisp in your :use list since this did not appear to end up loading the required mcclim backend dependency of my new asdf package. Anyway, here is how I started: ```~/common-lisp/eg/eg.asd (defsystem "eg" :class :package-inferred-system :serial t :depends-on (:mcclim "eg/src/all")) (register-system-packages "eg/src/all" '(:eg)) ``` (I wasn't sure where I was going to end up) ```~/common-lisp/eg/src/all.lisp (uiop:define-package :eg (:mix :clim :clim-lisp :cl)) (in-package :eg) (defclass hello-world-pane (clim-stream-pane) ()) (define-application-frame hello-world () ((greeting :initform "Hello_World" :accessor :greeting)) (:pane (make-pane 'hello-world-pane))) ``` In the guided tour, the class named hello-world-pane is forward referenced. Anyway, this was sufficient for ```sh $ rlwrap ecl > (require :eg) > (in-package :eG) EG> (run-frame-top-level (make-application-frame 'hello-world)) ``` to pop up a window, completing the hello world example. I'm not entirely sure why :pane is put in the same place as :documentation or :default-initargs yet, given it looks a lot like a slot to me naievely. I just tried this on a linux vm to start with. Hopefully :mcclim has been implemented on openbsd as well.