Ben Spencer | 2 Jan 2010 22:53
Picon

[STUMP] Re: [PATCH] Modify pathname-is-executable-p to work with symlinks in recent SBCLs.

I've now pushed this patch.  Let me know if it causes any issues.

Ben
Ben Spencer | 2 Jan 2010 22:59
Picon

[STUMP] [PATCH] UTF-8 support for CCL.

---
 wrappers.lisp |   26 ++++++++++++--------------
 1 files changed, 12 insertions(+), 14 deletions(-)

diff --git a/wrappers.lisp b/wrappers.lisp
index 658b1c5..89f9626 100644
--- a/wrappers.lisp
+++ b/wrappers.lisp
 <at>  <at>  -212,26 +212,24  <at>  <at> 

 (defun utf8-to-string (octets)
   "Convert the list of octets to a string."
-  #+sbcl (handler-bind
-             ((sb-impl::octet-decoding-error #'(lambda (c) 
-                                                 (declare (ignore c))
-                                                 (invoke-restart 'use-value "?"))))
-           (sb-ext:octets-to-string 
-            (coerce octets '(vector (unsigned-byte 8)))
-            :external-format :utf-8))
-  #+clisp (ext:convert-string-from-bytes (coerce octets '(vector (unsigned-byte 8)))
-                                         charset:utf-8)
-  #-(or sbcl clisp)
-  (map 'string #'code-char octets))
+  (let ((octets (coerce octets '(vector (unsigned-byte 8)))))
+    #+ccl (ccl:decode-string-from-octets octets :external-format :utf-8)
+    #+clisp (ext:convert-string-from-bytes octets charset:utf-8)
+    #+sbcl (handler-bind
+               ((sb-impl::octet-decoding-error #'(lambda (c)
+                                                   (declare (ignore c))
+                                                   (invoke-restart 'use-value "?"))))
(Continue reading)

Julian Stecklina | 3 Jan 2010 02:53
Picon
Favicon
Gravatar

Re: [STUMP] [PATCH] UTF-8 support for CCL.

Ben Spencer <dangerous.ben <at> gmail.com> writes:

> ---
>  wrappers.lisp |   26 ++++++++++++--------------
>  1 files changed, 12 insertions(+), 14 deletions(-)

Nice. Please commit. Works fine.

Regards,
--

-- 
Julian Stecklina

The day Microsoft makes something that doesn't suck is probably the day
they start making vacuum cleaners - Ernst Jan Plugge
Brit Butler | 20 Jan 2010 04:47
Picon
Gravatar

[STUMP] Interesting Bug...

Stump-devs,


I'm a recent stump convert and very much enjoying it. I've stumbled upon a reproduceable bug but it's kind of weird. Bear with me...
I have a Lenovo X200 laptop with a dock, the dock is connected to an external flatscreen via VGA. With Xmonad I would get home, drop on the dock, use lxrandr to enable the second screen and be off to the races. This didn't work with stumpwm so I wrote the fix-layout defcommand in my .stumpwmrc which works handily. Connected to stump with slime, it's interesting to note that (current-screen) always returns the screen stumpwm first loaded with, even if I turn OFF the VGA monitor in lxrandr and turn on the laptop screen (or vice versa). (current-head) always shows the accurate resolution of the active screen. It's also interesting to note that *screen-list* never has more than one entry, including with both screens on in lxrandr.

So, the weird bug:
When I "flip" monitors in lxrandr and hit OK, stumpwm hangs. The window I'm in receives all keyboard input and, generally, it's like stumpwm isn't there at all. If I switch to a tty, open emacs, slime-connect to stump and try to run (loadrc) or most anything in the :stumpwm package, I get a backtrace like that seen in http://redlinernotes.com/docs/stumpwm_backtrace.txt. The brief absence of the former (current-head) causes something not to type-check as head and even though a new head takes its place, stump hangs. Aborting to SLIME's toplevel in the debugger returns stump to it's normal state. I'm happy to try and produce fuller debugging information. 

I'm not sure what a sensible fix would be but I'm open to suggestions. This may be a weird use case. If this is too esoteric to fix, I won't object. I could always try to find where to put the appropriate restarts for the type-error myself, time allowing...
It would be nice in any case if anyone could tell me how to add a *head-changed-hook*, so that I can have fix-layout run automatically when I switch heads.

My .stumpwmrc is posted at http://redlinernotes.com/docs/.stumpwmrc for the curious as is a screenshot (188k, full res) of the stumpwm slime session with (current-head)/(current-screen) calls.

Cheers,
Brit Butler
_______________________________________________
Stumpwm-devel mailing list
Stumpwm-devel <at> nongnu.org
http://lists.nongnu.org/mailman/listinfo/stumpwm-devel
Ben Spencer | 20 Jan 2010 19:52
Picon

Re: [STUMP] Interesting Bug...

Hi,

On Tue, Jan 19, 2010 at 10:47:57PM -0500, Brit Butler wrote:
> I have a Lenovo X200 laptop with a dock, the dock is connected to an
> external flatscreen via VGA. With Xmonad I would get home, drop on the dock,
> use lxrandr to enable the second screen and be off to the races. This didn't
> work with stumpwm so I wrote the fix-layout defcommand in my .stumpwmrc
> which works handily.

What exactly does it not do that you expect it to?

> Connected to stump with slime, it's interesting to note
> that (current-screen) always returns the screen stumpwm first loaded with,
> even if I turn OFF the VGA monitor in lxrandr and turn on the laptop screen
> (or vice versa). (current-head) always shows the accurate resolution of the
> active screen. It's also interesting to note that *screen-list* never has
> more than one entry, including with both screens on in lxrandr.

Terminology note: 'screen' refers to X screens, 'head' refers to
Xinerama heads.  It sounds like you have two heads within one screen,
so I'd expect *screen-list* to only show one entry.  However, when you
have both heads enabled, (screen-heads (current-screen)) should have
two entries.  The command:

xdpyinfo -ext XINERAMA | grep head

should show dimensions that match these entries.

> So, the weird bug:
> When I "flip" monitors in lxrandr and hit OK, stumpwm hangs. The window I'm
> in receives all keyboard input and, generally, it's like stumpwm isn't there
> at all. If I switch to a tty, open emacs, slime-connect to stump and try to
> run (loadrc) or most anything in the :stumpwm package, I get a backtrace
> like that seen in http://redlinernotes.com/docs/stumpwm_backtrace.txt. The
> brief absence of the former (current-head) causes something not to
> type-check as head and even though a new head takes its place, stump hangs.
> Aborting to SLIME's toplevel in the debugger returns stump to it's normal
> state. I'm happy to try and produce fuller debugging information.

Are you running the latest from git?  This sounds rather like a bug
that was fixed relatively recently and isn't in the latest release.  I
get a 404 from that backtrace link btw.

> It would be nice in any case if anyone could tell me how to add a
> *head-changed-hook*, so that I can have fix-layout run automatically when I
> switch heads.

xrandr changes are handled in the :configure-notify event handler in events.lisp.

Hope some of this is helpful :)

Ben
Ben Spencer | 21 Jan 2010 14:07
Picon

Re: [STUMP] Interesting Bug...

On Thu, Jan 21, 2010 at 12:19:02AM -0500, Brit Butler wrote:
> I would expect the windows to expand to fill the (added) screen. The laptop
> runs at 1280x800, the VGA monitor at 1680x1050. If the laptop monitor is on
> and I connect and turn on the desktop monitor with lxrandr, the full screen
> real estate is not used. The laptop's 1280x800 resolution is simply mirrored
> on the larger screen. I have not found a simpler way to address this
> (getting *any window* at 1680x1050 resolution) than turning off the laptop
> monitor in lxrandr and iterating through all windows in all groups calling
> (redisplay). That is implemented as fix-layout in my .stumpwmrc and the
> laptop monitor must be *off* in lxrandr for fix-layout to work.

Are you aiming for a mirrored display or two separate heads?

Could you post the output of xrandr -q before and after switching on
the desktop monitor? (just trying to understand what lxrandr is up to).

> *version* returns "0.9.6-39-g545fd7a Compiled On Wed Jan 13 19:12:01". I
> built it from the stumpwm-git package on aur:
> http://aur.archlinux.org/packages.php?ID=12996
> In other words, I'm pretty sure I am...but I could always recompile. ;)

Yep, that's the latest.

> http://redlinernotes.com/docs/stump_backtrace.txt

It looks like you have *top-level-error-action* set to :break (some
instructions for setting up slime recommend this), which is why things
are locking up.  Setting it to :abort should hopefully give you a more
useful backtrace which you can grab with copy-unhandled-error.

(Side note: I'm not really sure what the practical difference between
:abort and :message is.  :abort throws out of the main loop whereas
:message just continues; so I guess the idea is that :abort ensures
you're in a stable state at the cost of a soft reset, whereas :message
leaves everything as it is, risking something somewhere being broken).

As to the bug itself, it looks like it's similar to the issue we had
before in that frame-head can return nil under certain circumstances,
and the caller doesn't expect it.

Ben
Brit Butler | 21 Jan 2010 18:40
Picon
Gravatar

Re: [STUMP] Interesting Bug...

Ben,


Sorry I mailed you directly last time.

> Are you aiming for a mirrored display or two heads?

Mirrored, with all windows in all groups taking advantage of the larger resolution. To be clear, I actually shut the laptop lid on the dock as there isn't enough room on the desk for both screens to be open and visible.

xrandr -q before:

Screen 0: minimum 320 x 200, current 1280 x 800, maximum 8192 x 8192
VGA1 connected (normal left inverted right x axis y axis)
   1680x1050      60.0 +
   1280x1024      75.0     60.0  
   1280x960       60.0  
   1152x864       75.0  
   1024x768       75.1     75.0     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3  
   640x480        72.8     75.0     66.7     60.0  
   720x400        70.1  
LVDS1 connected 1280x800+0+0 (normal left inverted right x axis y axis) 261mm x 163mm
   1280x800       60.0*+   50.0  
   1024x768       85.0     75.0     70.1     60.0  
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)

xrandr -q after: 

Screen 0: minimum 320 x 200, current 1680 x 1050, maximum 8192 x 8192
VGA1 connected 1680x1050+0+0 (normal left inverted right x axis y axis) 473mm x 297mm
   1680x1050      60.0*+
   1280x1024      75.0     60.0  
   1280x960       60.0  
   1152x864       75.0  
   1024x768       75.1     75.0     70.1     60.0  
   832x624        74.6  
   800x600        72.2     75.0     60.3  
   640x480        72.8     75.0     66.7     60.0  
   720x400        70.1  
LVDS1 connected (normal left inverted right x axis y axis)
   1280x800       60.0 +   50.0  
   1024x768       85.0     75.0     70.1     60.0  
   832x624        74.6  
   800x600        85.1     72.2     75.0     60.3     56.2  
   640x480        85.0     72.8     75.0     59.9  
   720x400        85.0  
   640x400        85.1  
   640x350        85.1  
HDMI1 disconnected (normal left inverted right x axis y axis)
DP1 disconnected (normal left inverted right x axis y axis)
HDMI2 disconnected (normal left inverted right x axis y axis)
DP2 disconnected (normal left inverted right x axis y axis)
DP3 disconnected (normal left inverted right x axis y axis)

I'll try setting *top-level-error-action* to :abort and see if I can't get more details. Thanks again for all your help.

Regards,
Brit

On Thu, Jan 21, 2010 at 8:07 AM, Ben Spencer <dangerous.ben <at> gmail.com> wrote:
On Thu, Jan 21, 2010 at 12:19:02AM -0500, Brit Butler wrote:
> I would expect the windows to expand to fill the (added) screen. The laptop
> runs at 1280x800, the VGA monitor at 1680x1050. If the laptop monitor is on
> and I connect and turn on the desktop monitor with lxrandr, the full screen
> real estate is not used. The laptop's 1280x800 resolution is simply mirrored
> on the larger screen. I have not found a simpler way to address this
> (getting *any window* at 1680x1050 resolution) than turning off the laptop
> monitor in lxrandr and iterating through all windows in all groups calling
> (redisplay). That is implemented as fix-layout in my .stumpwmrc and the
> laptop monitor must be *off* in lxrandr for fix-layout to work.

Are you aiming for a mirrored display or two separate heads?

Could you post the output of xrandr -q before and after switching on
the desktop monitor? (just trying to understand what lxrandr is up to).


> *version* returns "0.9.6-39-g545fd7a Compiled On Wed Jan 13 19:12:01". I
> built it from the stumpwm-git package on aur:
> http://aur.archlinux.org/packages.php?ID=12996
> In other words, I'm pretty sure I am...but I could always recompile. ;)

Yep, that's the latest.
It looks like you have *top-level-error-action* set to :break (some
instructions for setting up slime recommend this), which is why things
are locking up.  Setting it to :abort should hopefully give you a more
useful backtrace which you can grab with copy-unhandled-error.

(Side note: I'm not really sure what the practical difference between
:abort and :message is.  :abort throws out of the main loop whereas
:message just continues; so I guess the idea is that :abort ensures
you're in a stable state at the cost of a soft reset, whereas :message
leaves everything as it is, risking something somewhere being broken).

As to the bug itself, it looks like it's similar to the issue we had
before in that frame-head can return nil under certain circumstances,
and the caller doesn't expect it.


Ben


_______________________________________________
Stumpwm-devel mailing list
Stumpwm-devel <at> nongnu.org
http://lists.nongnu.org/mailman/listinfo/stumpwm-devel

_______________________________________________
Stumpwm-devel mailing list
Stumpwm-devel <at> nongnu.org
http://lists.nongnu.org/mailman/listinfo/stumpwm-devel
Shawn Betts | 21 Jan 2010 18:58
Picon

Re: [STUMP] Interesting Bug...

> (Side note: I'm not really sure what the practical difference between
> :abort and :message is.  :abort throws out of the main loop whereas
> :message just continues; so I guess the idea is that :abort ensures
> you're in a stable state at the cost of a soft reset, whereas :message
> leaves everything as it is, risking something somewhere being broken).

I think :message may be old crust from how errors used to be handled.
It's possible one could simply want to display a message and push
through but I suspect that's almost always a bad idea.

-Shawn
Ben Spencer | 21 Jan 2010 19:46
Picon

Re: [STUMP] Interesting Bug...

On Thu, Jan 21, 2010 at 12:40:41PM -0500, Brit Butler wrote:
> Mirrored, with all windows in all groups taking advantage of the larger
> resolution. To be clear, I actually shut the laptop lid on the dock as there
> isn't enough room on the desk for both screens to be open and visible.

What happens if you actually disable the laptop screen?  Or does that
trigger the crash?

(using xrandr that would be 'xrandr --output LVDS1 --off', not sure
how you'd do the same thing with lxrandr)

Could you also post before and after output for:

xdpyinfo -ext XINERAMA | grep head

and

(screen-heads (current-screen))

the latter from slime.

Thanks, Ben
Morgan Veyret | 22 Jan 2010 12:20

[STUMP] [PATCH 14/14] Added password identification support for mpd contrib.

---
 contrib/mpd.lisp |    5 ++++-
 1 files changed, 4 insertions(+), 1 deletions(-)

diff --git a/contrib/mpd.lisp b/contrib/mpd.lisp
index 01a6e91..3bbb8ac 100644
--- a/contrib/mpd.lisp
+++ b/contrib/mpd.lisp
 <at>  <at>  -114,6 +114,7  <at>  <at> 
   #(127 0 0 1)
   )
 (defparameter *mpd-port* 6600)
+(defparameter *mpd-password* nil)

 (defvar *mpd-timeout* 50)

 <at>  <at>  -204,7 +205,9  <at>  <at> 
     (when *mpd-timeout*
       (setf *mpd-timer*
             (run-with-timer *mpd-timeout* *mpd-timeout* 'mpd-ping)))
-    (read-line *mpd-socket*)))
+    (read-line *mpd-socket*)
+    (when *mpd-password*
+      (mpd-format-command "password \"~a\"" *mpd-password*))))

 (defun mpd-ping ()
   (mpd-send-command "ping"))
--

-- 
1.6.4

Gmane