
On Sat, Aug 30, 2014 at 07:22:33PM +0400, Paul Fertser wrote:
On Fri, Aug 29, 2014 at 06:41:14PM -0700, Anton Vorontsov wrote:
+signalLocalWindow :: Signal -> Window -> X () +signalLocalWindow s w = do + host <- io $ getEnvDefault "HOSTNAME" "" + hasProperty (Machine host) w >>= flip when (signalWindow s w)
HOSTNAME is a bash-specific variable and it's not exported by default, so neither XMonad nor ghci sees it (even though I actually use bash on this machine):
Prelude System.Posix.Env> getEnv "HOSTNAME" Nothing
Ugh. As Brandon Allbery rightfully pointed out, the whole hostname issue is a mess. I also found this post about XAUTHLOCALHOSTNAME: http://lists.x.org/archives/xorg-arch/2005-August/000200.html Personally, in my setup I have all three env variable set: HOST{,NAME} and XAUTHLOCALHOSTNAME. Please see if the patch below helps. It should account for different setups. ...
I've noticed another unpleasant side-effect of this: urxvtd is a single process that can have many windows (each spawned with urxvtc). So if the stoppable workspace has a urxvtd window, all the other terminal windows get frozen too. Should an optional filtering facility be added?
Yea, maybe as a hook.
On an unrelated note, where do you get opportunities to apply your Haskell skills?
I do some AI/BCI research using Haskell, but it's for my own fun. Commercially I don't apply it anywhere. :) --- diff -rN -u old-XMonadContrib/XMonad/Layout/Stoppable.hs new-XMonadContrib/XMonad/Layout/Stoppable.hs --- old-XMonadContrib/XMonad/Layout/Stoppable.hs 2014-08-30 16:11:44.835184230 -0700 +++ new-XMonadContrib/XMonad/Layout/Stoppable.hs 2014-08-30 16:11:44.838184259 -0700 @@ -74,8 +74,11 @@ signalLocalWindow :: Signal -> Window -> X () signalLocalWindow s w = do - host <- io $ getEnvDefault "HOSTNAME" "" + host <- io $ takeOneMaybe `liftM` (getEnv `mapM` vars) hasProperty (Machine host) w >>= flip when (signalWindow s w) + where + takeOneMaybe = last . (mzero:) . take 1 . catMaybes + vars = ["XAUTHLOCALHOSTNAME","HOST","HOSTNAME"] withAllOn :: (a -> X ()) -> Workspace i l a -> X () withAllOn f wspc = f `mapM_` integrate' (stack wspc)