From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: mark@markwitmer.com Newsgroups: gmane.lisp.guile.user Subject: Guile XCB Date: Mon, 17 Jun 2013 20:25:43 -0700 Message-ID: <8738sgje14.fsf@mark-desktop.PK5001Z> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: text/plain X-Trace: ger.gmane.org 1371525912 21418 80.91.229.3 (18 Jun 2013 03:25:12 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 18 Jun 2013 03:25:12 +0000 (UTC) To: guile-user@gnu.org Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Tue Jun 18 05:25:13 2013 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1UomXh-0005fZ-CO for guile-user@m.gmane.org; Tue, 18 Jun 2013 05:25:13 +0200 Original-Received: from localhost ([::1]:46435 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UomXg-00005B-C8 for guile-user@m.gmane.org; Mon, 17 Jun 2013 23:25:12 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:58053) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UomXX-0008VP-J9 for guile-user@gnu.org; Mon, 17 Jun 2013 23:25:04 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1UomXW-0002fl-CH for guile-user@gnu.org; Mon, 17 Jun 2013 23:25:03 -0400 Original-Received: from mail-pd0-f177.google.com ([209.85.192.177]:60446) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1UomXV-0002b6-UG for guile-user@gnu.org; Mon, 17 Jun 2013 23:25:02 -0400 Original-Received: by mail-pd0-f177.google.com with SMTP id p10so3415345pdj.22 for ; Mon, 17 Jun 2013 20:25:00 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=20120113; h=from:to:subject:date:message-id:mime-version:content-type :x-gm-message-state; bh=pxh7tXpzivbu2dAOJUmILd9Tb8uxN7W4w24Zb/xlVgM=; b=ZTJAiHwf63CgAb3Wy/Nb3Vym6b5pACVaP7uIQxoI8GeTRj+N2/VGb6jNZOyWQtZ7J5 2dqcxc2LxJwr/nAoEni3rqCrnzGSzwx2Au6k3fHTMjhprx1sTOob7hnL6YRRo1wD64w4 k20qmlPoXEttwfGxTd6+NEq9dLnTVqzSjEcRchGM3FzIreS90YBXQ+BUl1fmVKcSTNL8 XksStsXyxE+yc817Nf4Yw2o9P+N8GTb+qcpUtXrnHEKDxGnTl+cb3lLmtXtXMujGh0E/ BzHWE1FOOhFgmcE7Q54WkX4oZWF7unZ4LryHPe+rAElYRQhtFi0+ouBS3JzfjdV2qK7V v2VA== X-Received: by 10.68.236.42 with SMTP id ur10mr15312189pbc.206.1371525900758; Mon, 17 Jun 2013 20:25:00 -0700 (PDT) Original-Received: from localhost (174-21-131-23.tukw.qwest.net. [174.21.131.23]) by mx.google.com with ESMTPSA id bs2sm17437216pad.17.2013.06.17.20.24.59 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Mon, 17 Jun 2013 20:25:00 -0700 (PDT) X-Gm-Message-State: ALoCoQlt1zpCGG4JWznvQGrsJgbWZFZUjAgEVtokm0zUzHvqGlwm3WBEB4s877YNRlk7Qvj/7bC6 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 209.85.192.177 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: guile-user-bounces+guile-user=m.gmane.org@gnu.org Xref: news.gmane.org gmane.lisp.guile.user:10459 Archived-At: Hi everyone, I'm pleased to announce that Guile XCB is, at last, a real thing! I had to take a couple months off of working on it, but finally had time recently to go back and get it in pretty good shape. You can find it at https://github.com/mwitmer/guile-xcb. In the end I was able to write the whole thing without any C, so maybe this is a good candidate to include in the Guildhall. I've written a few simple programs in it but haven't really pushed it too hard. Sometime in the near-ish future I'd like to write some kind of window manager using it and I'm sure there will be many bugs found and squashed in the process! I also had an interesting time coming up with the necessary autotools magic to properly compile xml files to go files using the compiler I wrote and then install them. I'm still not sure if I'm doing it the right way -- adding new languages is really neat feature of Guile that's still a little tricky to automate. Here's the README: 1 Overview ========== Guile XCB is an X11 client library written entirely in Guile Scheme. It makes use of the Guile compiler and virtual machine to turn XML descriptions of the X protocol provided by the XCB project into Guile object code files. Support is included for the core X protocol and twenty-seven extensions. Guile XCB also includes some simple code for running asynchronous event loops. 2 Samples and Documentation =========================== Samples using Guile XCB can be found in the xcb/xml/samples directory. They include: - tinywm.scm: A Guile XCB implementation of tinywm - win.scm: A simple demonstration of creating a window and receiving events - randr.scm: A subset of the xrandr command line tool's functionality More detailed documentation resides in the texinfo manual included in this distribution. 3 Installation and Prerequisites ================================ You can use the typical ./configure, make, make install chain to build Guile XCB. Guile XCB requires the latest release of Guile (2.0.9). 4 Project Status and Caveats ============================ - The full XCB stack is implemented; however, many of the extensions haven't been extensively tested. - Extensions that send large requests are probably going to be too slow for practical use. In a future release, void and byte lists should be represented as bytevectors, not regular vectors. - Guile XCB includes a stripped-down Scheme implementation of Xauth that only supports UNIX sockets for now; it doesn't pick the "best" authentication method available, just the first. - XPRINT is excluded because it's deprecated and its XML file has just enough special cases in it that it wasn't worth including. Some other deprecated extensions are included simply because there was no reason not to. -- Mark Witmer