From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Stefan Israelsson Tampe Newsgroups: gmane.lisp.guile.user Subject: Re: Guile XCB Date: Tue, 18 Jun 2013 17:43:42 +0200 Message-ID: References: <8738sgje14.fsf@mark-desktop.PK5001Z> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary=047d7b15a48de490d904df6f9338 X-Trace: ger.gmane.org 1371570242 31811 80.91.229.3 (18 Jun 2013 15:44:02 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Tue, 18 Jun 2013 15:44:02 +0000 (UTC) Cc: guile-user@gnu.org To: mark@markwitmer.com Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Tue Jun 18 17:44:01 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 1Uoy4b-0004UF-K9 for guile-user@m.gmane.org; Tue, 18 Jun 2013 17:43:57 +0200 Original-Received: from localhost ([::1]:37904 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uoy4b-0004Ts-83 for guile-user@m.gmane.org; Tue, 18 Jun 2013 11:43:57 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:36137) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uoy4Q-0004PT-4J for guile-user@gnu.org; Tue, 18 Jun 2013 11:43:48 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Uoy4O-00010v-6c for guile-user@gnu.org; Tue, 18 Jun 2013 11:43:46 -0400 Original-Received: from mail-pb0-x229.google.com ([2607:f8b0:400e:c01::229]:52141) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Uoy4N-00010j-Rv for guile-user@gnu.org; Tue, 18 Jun 2013 11:43:44 -0400 Original-Received: by mail-pb0-f41.google.com with SMTP id rp16so4045499pbb.0 for ; Tue, 18 Jun 2013 08:43:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=OwjDi6WyTWNEHq6WlbkWYoap630nj14BnQzHW9i/PxU=; b=rGlVDEa6KnEWE48DFRINF3TtKI9Ea5eDhqPgZBKxgbluQ41wnHa+huW3tH6y6bFfhb R3OTsgVXkJTDfVaXRka+kalR8l0GZpgzehYfPqpvphLQLDSzkSmG7vb3N+NhUVAdA34I wSUPDKXbzDzQIaqC8+Q6fk59sxJ+JGZTgHinOj38jywK8O3nlxIpOWU4ObJz/+LW63GX X68etrn3FtNg2y8bpe45D1DqaC0EVK8ugSUhd5hY+/5pBLvfoVGXGeW+Ml/q4Hf86MAI UJaxFf/YeAlwOyDMfzaCna59BI6sbSlTmXzpWY9WFhjYtUvGGm5Pe9NSFsZ8HqZtBlxS g/cg== X-Received: by 10.68.141.14 with SMTP id rk14mr17893646pbb.1.1371570222434; Tue, 18 Jun 2013 08:43:42 -0700 (PDT) Original-Received: by 10.70.123.198 with HTTP; Tue, 18 Jun 2013 08:43:42 -0700 (PDT) In-Reply-To: <8738sgje14.fsf@mark-desktop.PK5001Z> X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2607:f8b0:400e:c01::229 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:10462 Archived-At: --047d7b15a48de490d904df6f9338 Content-Type: text/plain; charset=ISO-8859-1 Hi Mark! Nice tool! A bit off topic but maybe something that is perhaps useful in this project, is there any scheme framework centered around the scheme xsd specification to validate and translate data. If not, I could help. I'm wanting to learn that technology and could in the mean time code something useful for all to enjoy If I would do that I would combine the guile module system and xml namespaces an look at code that executes to a sxml-similar representation. Transfoming xml and parsing xml would mean that one uses syntax-parse, syntax-rules etc.. WDYT /Stefan On Tue, Jun 18, 2013 at 5:25 AM, wrote: > > 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 > > --047d7b15a48de490d904df6f9338 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Hi Mark!

Nice tool!

A bit off topic but maybe something that is perhaps useful= in this project, is there any scheme framework=A0
centered aroun= d the scheme xsd specification to validate and translate
data.

If not, I could help. I'm wanting t= o learn that technology=A0
and could in the mean time code someth= ing useful for=A0
all to enjoy

If = I would do that I would combine the guile module system and
xml namespaces an look at code that executes to a sxml-similar r= epresentation.

Transfoming xml and par= sing xml would mean that one uses syntax-parse, syntax-rules
etc..=A0

WDYT

/Stefan



On Tue, Jun 18, 2013 at 5:25 AM, <= span dir=3D"ltr"><mark@markwitmer.com> wrote:

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 fe= w
simple programs in it but haven't really pushed it too hard. Sometime i= n
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
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D

=A0 Guile XCB is an X11 client library written entirely in Guile
=A0 Scheme. It makes use of the Guile compiler and virtual machine to turn<= br> =A0 XML descriptions of the X protocol provided by the XCB project into
=A0 Guile object code files.

=A0 Support is included for the core X protocol and twenty-seven
=A0 extensions. Guile XCB also includes some simple code for running
=A0 asynchronous event loops.


2 Samples and Documentation
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D

=A0 Samples using Guile XCB can be found in the xcb/xml/samples
=A0 directory. They include:

=A0 - tinywm.scm: A Guile XCB implementation of tinywm
=A0 - win.scm: A simple demonstration of creating a window and receiving =A0 =A0 =A0events
=A0 - randr.scm: A subset of the xrandr command line tool's functionali= ty

=A0 More detailed documentation resides in the texinfo manual included in =A0 this distribution.


3 Installation and Prerequisites
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D=3D=3D=3D=3D

=A0 You can use the typical ./configure, make, make install chain to build<= br> =A0 Guile XCB.

=A0 Guile XCB requires the latest release of Guile (2.0.9).


4 Project Status and Caveats
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D= =3D=3D=3D

=A0 - The full XCB stack is implemented; however, many of the extensions =A0 =A0 haven't been extensively tested.

=A0 - Extensions that send large requests are probably going to be too
=A0 =A0 slow for practical use. In a future release, void and byte lists =A0 =A0 should be represented as bytevectors, not regular vectors.

=A0 - Guile XCB includes a stripped-down Scheme implementation of Xauth
=A0 =A0 that only supports UNIX sockets for now; it doesn't pick the &q= uot;best"
=A0 =A0 authentication method available, just the first.

=A0 - XPRINT is excluded because it's deprecated and its XML file has j= ust
=A0 =A0 enough special cases in it that it wasn't worth including. Some=
=A0 =A0 other deprecated extensions are included simply because there was n= o
=A0 =A0 reason not to.


--
Mark Witmer


--047d7b15a48de490d904df6f9338--