clfswm: devel mailing list (and others?) and a small patch to asd file

Philippe Brochard pbrochard at common-lisp.net
Wed Jun 12 21:18:18 UTC 2013


Thijs Oppermann writes:

> I have tried to find other paths to get the below minimal patch to you, but the
> links to the clfswm-devel mailing list main info is broken. At least, I get an
> nginx error (404 Not Found) when I follow the link to "more info" ( http://
> lists.common-lisp.net/cgi-bin/mailman/listinfo/clfswm-devel ). Is that me, or
> it the setup broken?
>
Hi. Since the change from mailman to mlmmj the mailing list subscription
is broken. I'm waiting it stabilize before doing something.

For the time, it seems that you can subscribe to the ml with an email
subscription to:

   clfswm-devel+subscribe at common-lisp.net 

> I wanted to send you the below patch to the clfswm.asd file, so that I can more
> easily use contrib modules when I use quicklisp to get clfswm. Quicklisp puts
> clfswm in its own 'dists/quicklisp/software' directory, but to support multiple
> versions it puts it in a directory named something like: "clfswm-20130420-git".
> So when a new version is added in quicklisp the directory will change, and so
> will the location where I should get the contrib modules.
>
> With this small addition to the top of clfswm.asd I can get this location
> through the clfswm code itself:
>
> -------------8<------------
>  ;;;; -*- Mode: Lisp -*-
> ;;;; Author: Philippe Brochard <hocwp at free.fr>
> ;;;; ASDF System Definition
> ;;;
>
>
> + (defpackage #:clfswm-config (:export #:*base-directory*))
> + (defparameter clfswm-config:*base-directory*
> +   (make-pathname :name nil :type nil :defaults *load-truename*))
>
>
> (in-package #:asdf)
> -------------8<------------
>
>
>
> With that in the asd file I can do this in my .clfswmrc
>
> -------------8<------------
> (defparameter *contrib-dir* (truename (format nil "~acontrib/"
> clfswm-config:*base-directory*)))
>
> (load-contrib "toolbar.lisp")
> -------------8<------------
>
> This technique I adapted from Xach's journal some time ago. I'm sure there are
> other ways to do this, but in it would be nice if I can ask the code itself
> where its base directory is.
>
Thanks, I'll have a look at this this weekend.

> Let me end this with saying I really like clfswm and have been playing with it
> for a couple of weeks now. It has already graduated to my main window manager
> at home, and soon at work I will switch to it as well. It just let's me do what
> I want without getting in the way.
>
Really nice to hear!

> And, major bonus, I can just change or add stuff to it if I need it. For
> example, I'd like to be able to have a certain frame capture mutliple types of
> programs automatically (for example, amarok and volume control). I don't think
> it can be done as is (I think?), but I've already started thinking on how I can
> add this functionality myself... So maybe expect some more patches... ;)
>
Well, here is how I do with surf class window. I think you can adapt it
for your needs:

-8<-------------------------------------------------
(defun set-surf-frame-nw-hook (&optional (frame (current-child)))
  "Open the window in the Surf frame if it match surf absorb-nw-test"
  (when (frame-p frame)
    (setf (frame-nw-hook frame) 'absorb-window-nw-hook
	  (frame-data-slot frame :nw-absorb-test)  (nw-absorb-test-class "surf"))
    (make-permanent-nw-hook-frame frame)))


(defun init-surf-frame ()
  ...
  (let ((frame ...find here the capturing frame you want...))
    (set-surf-frame-nw-hook frame)
    ...))

(add-hook *init-hook* 'init-surf-frame))
-8<-------------------------------------------------

You can have a look at how it works in clfswm-nw-hooks.lisp (nw is for
new window). And you'll have to adapt the (nw-absorb-test-class "surf") 
function (build your own lambda form).

> Which I'll probably do by git pull request? Is that the prefered way?
>
Yes, this is the way.

> Thanks again for this great window manager!
>
Thanks a lot for your feedback!

> Thijs
>
Philippe



More information about the clfswm-devel mailing list