Discussion:
[xmonad] Suspend Keybinding Temporarily
Eyal Erez
2018-11-21 18:49:27 UTC
Permalink
Hi,

I'm getting some collisions between my xmonad keybindings and an
application I'm running (it's a game that is suppose to run full screen but
in reality just uses a large window). I was wondering if I could suspend
or change some keybindings from a script that I can run before the app
launches and then restore later.

Is this at all possible? Happy to entertain other options.
--
*Eyal Erez <*****@gmail.com* <***@gmail.com>*>*

There are 10 types of people, those who know binary and those who don't.
Dmitriy Matrosov
2018-11-28 18:19:44 UTC
Permalink
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad keybindings and an
application I'm running (it's a game that is suppose to run full screen
but in reality just uses a large window).  I was wondering if I could
suspend or change some keybindings from a script that I can run before
the app launches and then restore later.
Is this at all possible?  Happy to entertain other options.
Here is proof of concept:


import XMonad
import XMonad.Hooks.EwmhDesktops

import System.Directory
import System.FilePath


main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs = disableKeys
}
xmonad xcf

disableKeys :: [String] -> XConfig Layout -> IO (XConfig Layout)
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf


To disable all keys create file `~/.xmonad/disable_keys` and then
restart xmonad with `xmonad --restart`. All keys will be disabled
_and_ file deleted (to avoid locking yourself), thus next restart will
restore all keys back.

As far as i understand, xmonad grabs keys in `X.Main.launch` before
entering main loop. Thus, the one way to change key grab is to restart
xmonad. I need to modify `XConfig` before calling X.Main.launch`, and
this may be done by `handleExtraArgs` (called in `launch'` in
`X.Main.xmonad`). Unfortunately, it seems, that xmonad does not allow
to pass extra cmd arguments during restart (`X.Operations.restart`
always starts xmonad with name `xmonad` and no arguments). Also, i
can't use extensible state in `handleExtraArgs`, because it runs in
`IO` (`X` context is not yet built at that time). Thus, to pass
something to it, i may use either file or (probably) `--replace`. The
above version uses file. And i have no luck with `--replace`: it
seems, `xmonad` can't replace itself?..
Brandon Allbery
2018-11-28 18:25:00 UTC
Permalink
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our not obeying the ICCCM
replace protocol unless started by replacing some other WM.

There's a few other places you can hide extra parameters; starting that
early, the environment is probably the easiest to use, provided they're not
too large (see why there's a state file now).
Post by Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad keybindings and an
application I'm running (it's a game that is suppose to run full screen
but in reality just uses a large window). I was wondering if I could
suspend or change some keybindings from a script that I can run before
the app launches and then restore later.
Is this at all possible? Happy to entertain other options.
import XMonad
import XMonad.Hooks.EwmhDesktops
import System.Directory
import System.FilePath
main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs = disableKeys
}
xmonad xcf
disableKeys :: [String] -> XConfig Layout -> IO (XConfig Layout)
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf
To disable all keys create file `~/.xmonad/disable_keys` and then
restart xmonad with `xmonad --restart`. All keys will be disabled
_and_ file deleted (to avoid locking yourself), thus next restart will
restore all keys back.
As far as i understand, xmonad grabs keys in `X.Main.launch` before
entering main loop. Thus, the one way to change key grab is to restart
xmonad. I need to modify `XConfig` before calling X.Main.launch`, and
this may be done by `handleExtraArgs` (called in `launch'` in
`X.Main.xmonad`). Unfortunately, it seems, that xmonad does not allow
to pass extra cmd arguments during restart (`X.Operations.restart`
always starts xmonad with name `xmonad` and no arguments). Also, i
can't use extensible state in `handleExtraArgs`, because it runs in
`IO` (`X` context is not yet built at that time). Thus, to pass
something to it, i may use either file or (probably) `--replace`. The
above version uses file. And i have no luck with `--replace`: it
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
***@gmail.com
Dmitriy Matrosov
2018-11-29 11:01:08 UTC
Permalink
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our not obeying the ICCCM
replace protocol unless started by replacing some other WM.
There's a few other places you can hide extra parameters; starting that
early, the environment is probably the easiest to use, provided they're not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need to pass something to running xmonad process (to which i send XMONAD_RESTART). As far as i know, i can't change environment of another process..
Post by Brandon Allbery
Post by Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad keybindings and an
application I'm running (it's a game that is suppose to run full
screen
Post by Dmitriy Matrosov
Post by Eyal Erez
but in reality just uses a large window). I was wondering if I
could
Post by Dmitriy Matrosov
Post by Eyal Erez
suspend or change some keybindings from a script that I can run
before
Post by Dmitriy Matrosov
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible? Happy to entertain other options.
import XMonad
import XMonad.Hooks.EwmhDesktops
import System.Directory
import System.FilePath
main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs = disableKeys
}
xmonad xcf
disableKeys :: [String] -> XConfig Layout -> IO (XConfig
Layout)
Post by Dmitriy Matrosov
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf
To disable all keys create file `~/.xmonad/disable_keys` and then
restart xmonad with `xmonad --restart`. All keys will be disabled
_and_ file deleted (to avoid locking yourself), thus next restart
will
Post by Dmitriy Matrosov
restore all keys back.
As far as i understand, xmonad grabs keys in `X.Main.launch` before
entering main loop. Thus, the one way to change key grab is to
restart
Post by Dmitriy Matrosov
xmonad. I need to modify `XConfig` before calling X.Main.launch`, and
this may be done by `handleExtraArgs` (called in `launch'` in
`X.Main.xmonad`). Unfortunately, it seems, that xmonad does not allow
to pass extra cmd arguments during restart (`X.Operations.restart`
always starts xmonad with name `xmonad` and no arguments). Also, i
can't use extensible state in `handleExtraArgs`, because it runs in
`IO` (`X` context is not yet built at that time). Thus, to pass
something to it, i may use either file or (probably) `--replace`. The
above version uses file. And i have no luck with `--replace`: it
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
Brandon Allbery
2018-11-29 18:50:01 UTC
Permalink
You were talking about restart, between the running xmonad and its
replacement via executeFile. There, you can use the environment. There is
no way to pass information between an invoked "xmonad --restart" and the
running xmonad.
On November 28, 2018 9:25:00 PM GMT+03:00, Brandon Allbery <
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our not obeying the ICCCM
replace protocol unless started by replacing some other WM.
There's a few other places you can hide extra parameters; starting that
early, the environment is probably the easiest to use, provided they're not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need to pass something to
running xmonad process (to which i send XMONAD_RESTART). As far as i know,
i can't change environment of another process..
Post by Brandon Allbery
Post by Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad keybindings and an
application I'm running (it's a game that is suppose to run full
screen
Post by Dmitriy Matrosov
Post by Eyal Erez
but in reality just uses a large window). I was wondering if I
could
Post by Dmitriy Matrosov
Post by Eyal Erez
suspend or change some keybindings from a script that I can run
before
Post by Dmitriy Matrosov
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible? Happy to entertain other options.
import XMonad
import XMonad.Hooks.EwmhDesktops
import System.Directory
import System.FilePath
main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs = disableKeys
}
xmonad xcf
disableKeys :: [String] -> XConfig Layout -> IO (XConfig
Layout)
Post by Dmitriy Matrosov
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf
To disable all keys create file `~/.xmonad/disable_keys` and then
restart xmonad with `xmonad --restart`. All keys will be disabled
_and_ file deleted (to avoid locking yourself), thus next restart
will
Post by Dmitriy Matrosov
restore all keys back.
As far as i understand, xmonad grabs keys in `X.Main.launch` before
entering main loop. Thus, the one way to change key grab is to
restart
Post by Dmitriy Matrosov
xmonad. I need to modify `XConfig` before calling X.Main.launch`, and
this may be done by `handleExtraArgs` (called in `launch'` in
`X.Main.xmonad`). Unfortunately, it seems, that xmonad does not allow
to pass extra cmd arguments during restart (`X.Operations.restart`
always starts xmonad with name `xmonad` and no arguments). Also, i
can't use extensible state in `handleExtraArgs`, because it runs in
`IO` (`X` context is not yet built at that time). Thus, to pass
something to it, i may use either file or (probably) `--replace`. The
above version uses file. And i have no luck with `--replace`: it
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
***@gmail.com
Dmitriy Matrosov
2018-11-29 21:05:45 UTC
Permalink
Post by Brandon Allbery
You were talking about restart, between the running xmonad and its
replacement via executeFile. There, you can use the environment. There
is no way to pass information between an invoked "xmonad --restart" and
the running xmonad.
On November 28, 2018 9:25:00 PM GMT+03:00, Brandon Allbery
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our not obeying the ICCCM
replace protocol unless started by replacing some other WM.
There's a few other places you can hide extra parameters; starting
that
Post by Brandon Allbery
early, the environment is probably the easiest to use, provided
they're
Post by Brandon Allbery
not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need to pass
something to running xmonad process (to which i send
XMONAD_RESTART). As far as i know, i can't change environment of
another process..
Post by Brandon Allbery
On Wed, Nov 28, 2018 at 1:20 PM Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad keybindings and an
application I'm running (it's a game that is suppose to run full
screen
Post by Eyal Erez
but in reality just uses a large window).  I was wondering if I
could
Post by Eyal Erez
suspend or change some keybindings from a script that I can run
before
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible?  Happy to entertain other options.
          import XMonad
          import XMonad.Hooks.EwmhDesktops
          import System.Directory
          import System.FilePath
          main :: IO ()
          main = do
                  let xcf = ewmh $ def
                              { modMask = mod4Mask
                              , handleExtraArgs = disableKeys
                              }
                  xmonad xcf
          disableKeys :: [String] -> XConfig Layout -> IO (XConfig
Layout)
          disableKeys _ xcf = do
              xd <- getXMonadDir
              let disableFn = xd </> "disable_keys"
              b <- doesFileExist disableFn
              if b
                then do
                  trace "Disabling all keys."
                  removeFile disableFn
                  return (xcf {keys = \_ -> mempty})
                else return xcf
To disable all keys create file `~/.xmonad/disable_keys` and then
restart xmonad with `xmonad --restart`. All keys will be disabled
_and_ file deleted (to avoid locking yourself), thus next restart
will
restore all keys back.
As far as i understand, xmonad grabs keys in `X.Main.launch` before
entering main loop. Thus, the one way to change key grab is to
restart
xmonad. I need to modify `XConfig` before calling
X.Main.launch`, and
Post by Brandon Allbery
this may be done by `handleExtraArgs` (called in `launch'` in
`X.Main.xmonad`). Unfortunately, it seems, that xmonad does not
allow
Post by Brandon Allbery
to pass extra cmd arguments during restart (`X.Operations.restart`
always starts xmonad with name `xmonad` and no arguments). Also, i
can't use extensible state in `handleExtraArgs`, because it runs in
`IO` (`X` context is not yet built at that time).  Thus, to pass
something to it, i may use either file or (probably)
`--replace`. The
Post by Brandon Allbery
above version uses file. And i have no luck with `--replace`: it
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
Dmitriy Matrosov
2018-11-29 21:07:36 UTC
Permalink
Post by Brandon Allbery
You were talking about restart, between the running xmonad and its
replacement via executeFile. There, you can use the environment. There
is no way to pass information between an invoked "xmonad --restart" and
the running xmonad.
You mean, `executeFile` preserves environment? So, i may change it from
running xmonad (by e.g. keybinding) and then restart it?
Post by Brandon Allbery
On November 28, 2018 9:25:00 PM GMT+03:00, Brandon Allbery
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our not obeying the ICCCM
replace protocol unless started by replacing some other WM.
There's a few other places you can hide extra parameters; starting
that
Post by Brandon Allbery
early, the environment is probably the easiest to use, provided
they're
Post by Brandon Allbery
not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need to pass
something to running xmonad process (to which i send
XMONAD_RESTART). As far as i know, i can't change environment of
another process..
Post by Brandon Allbery
On Wed, Nov 28, 2018 at 1:20 PM Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad keybindings and an
application I'm running (it's a game that is suppose to run full
screen
Post by Eyal Erez
but in reality just uses a large window).  I was wondering if I
could
Post by Eyal Erez
suspend or change some keybindings from a script that I can run
before
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible?  Happy to entertain other options.
          import XMonad
          import XMonad.Hooks.EwmhDesktops
          import System.Directory
          import System.FilePath
          main :: IO ()
          main = do
                  let xcf = ewmh $ def
                              { modMask = mod4Mask
                              , handleExtraArgs = disableKeys
                              }
                  xmonad xcf
          disableKeys :: [String] -> XConfig Layout -> IO (XConfig
Layout)
          disableKeys _ xcf = do
              xd <- getXMonadDir
              let disableFn = xd </> "disable_keys"
              b <- doesFileExist disableFn
              if b
                then do
                  trace "Disabling all keys."
                  removeFile disableFn
                  return (xcf {keys = \_ -> mempty})
                else return xcf
To disable all keys create file `~/.xmonad/disable_keys` and then
restart xmonad with `xmonad --restart`. All keys will be disabled
_and_ file deleted (to avoid locking yourself), thus next restart
will
restore all keys back.
As far as i understand, xmonad grabs keys in `X.Main.launch` before
entering main loop. Thus, the one way to change key grab is to
restart
xmonad. I need to modify `XConfig` before calling
X.Main.launch`, and
Post by Brandon Allbery
this may be done by `handleExtraArgs` (called in `launch'` in
`X.Main.xmonad`). Unfortunately, it seems, that xmonad does not
allow
Post by Brandon Allbery
to pass extra cmd arguments during restart (`X.Operations.restart`
always starts xmonad with name `xmonad` and no arguments). Also, i
can't use extensible state in `handleExtraArgs`, because it runs in
`IO` (`X` context is not yet built at that time).  Thus, to pass
something to it, i may use either file or (probably)
`--replace`. The
Post by Brandon Allbery
above version uses file. And i have no luck with `--replace`: it
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
Brandon Allbery
2018-11-29 21:11:20 UTC
Permalink
Yes. More specifically, it's ultimately using the execve() syscall, via one
of the wrappers which propagates the environment (which one depends on
whether it's asked to do $PATH search or not).
Post by Dmitriy Matrosov
Post by Brandon Allbery
You were talking about restart, between the running xmonad and its
replacement via executeFile. There, you can use the environment. There
is no way to pass information between an invoked "xmonad --restart" and
the running xmonad.
You mean, `executeFile` preserves environment? So, i may change it from
running xmonad (by e.g. keybinding) and then restart it?
Post by Brandon Allbery
On November 28, 2018 9:25:00 PM GMT+03:00, Brandon Allbery
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our not obeying
the
Post by Brandon Allbery
Post by Brandon Allbery
ICCCM
replace protocol unless started by replacing some other WM.
There's a few other places you can hide extra parameters; starting
that
Post by Brandon Allbery
early, the environment is probably the easiest to use, provided
they're
Post by Brandon Allbery
not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need to pass
something to running xmonad process (to which i send
XMONAD_RESTART). As far as i know, i can't change environment of
another process..
Post by Brandon Allbery
On Wed, Nov 28, 2018 at 1:20 PM Dmitriy Matrosov
Post by Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad keybindings and
an
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
Post by Eyal Erez
application I'm running (it's a game that is suppose to run
full
Post by Brandon Allbery
Post by Brandon Allbery
screen
Post by Dmitriy Matrosov
Post by Eyal Erez
but in reality just uses a large window). I was wondering if I
could
Post by Dmitriy Matrosov
Post by Eyal Erez
suspend or change some keybindings from a script that I can run
before
Post by Dmitriy Matrosov
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible? Happy to entertain other options.
import XMonad
import XMonad.Hooks.EwmhDesktops
import System.Directory
import System.FilePath
main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs = disableKeys
}
xmonad xcf
disableKeys :: [String] -> XConfig Layout -> IO (XConfig
Layout)
Post by Dmitriy Matrosov
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf
To disable all keys create file `~/.xmonad/disable_keys` and then
restart xmonad with `xmonad --restart`. All keys will be disabled
_and_ file deleted (to avoid locking yourself), thus next restart
will
Post by Dmitriy Matrosov
restore all keys back.
As far as i understand, xmonad grabs keys in `X.Main.launch`
before
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
entering main loop. Thus, the one way to change key grab is to
restart
Post by Dmitriy Matrosov
xmonad. I need to modify `XConfig` before calling
X.Main.launch`, and
Post by Brandon Allbery
Post by Dmitriy Matrosov
this may be done by `handleExtraArgs` (called in `launch'` in
`X.Main.xmonad`). Unfortunately, it seems, that xmonad does not
allow
Post by Brandon Allbery
Post by Dmitriy Matrosov
to pass extra cmd arguments during restart
(`X.Operations.restart`
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
always starts xmonad with name `xmonad` and no arguments). Also,
i
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
can't use extensible state in `handleExtraArgs`, because it runs
in
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
`IO` (`X` context is not yet built at that time). Thus, to pass
something to it, i may use either file or (probably)
`--replace`. The
Post by Brandon Allbery
Post by Dmitriy Matrosov
above version uses file. And i have no luck with `--replace`: it
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
***@gmail.com
Brandon Allbery
2018-11-30 20:18:51 UTC
Permalink
Er. What version of ghc? That sounds like either a ghc runtime bug, or a
system configuration issue. In particular, xmonad creates no threads
itself, so that would be the ghc runtime's IO manager thread.
Post by Dmitriy Matrosov
Post by Brandon Allbery
Yes. More specifically, it's ultimately using the execve() syscall, via
one of the wrappers which propagates the environment (which one depends
on whether it's asked to do $PATH search or not).
import XMonad
import XMonad.Operations
import XMonad.Util.EZConfig
import System.Environment
import Control.Exception
main :: IO ()
main = do
let xcf = def
{ modMask = mod4Mask
, handleExtraArgs = disableKeysE
}
`additionalKeys`
[ ((mod4Mask, xK_d), disableKeysOn) ]
xmonad xcf
disableKeysOn :: X ()
disableKeysOn = do
trace "Preparing to disable keys and restarting.."
io $ setEnv "XMONAD_DISABLE_KEYS" "1"
restart "xmonad" True
disableKeysE :: [String] -> XConfig Layout -> IO (XConfig Layout)
disableKeysE _ xcf = do
me <- lookupEnv "XMONAD_DISABLE_KEYS"
case me of
Just _ -> do
trace "Disabling all keys."
unsetEnv "XMONAD_DISABLE_KEYS"
return (xcf {keys = \_ -> mempty})
Nothing -> return xcf
It also restarts xmonad on key press (when disabling keys) and all
works fine, but.. xmonad frequently crashes with
xmonad: failed to create OS thread: Resource temporarily
unavailable
I don't think this crash relates somehow to using environment, and it
happened from time to time before too, but still.. Can you advise,
how to fix it?
Post by Brandon Allbery
Post by Brandon Allbery
You were talking about restart, between the running xmonad and
its
Post by Brandon Allbery
Post by Brandon Allbery
replacement via executeFile. There, you can use the environment.
There
Post by Brandon Allbery
is no way to pass information between an invoked "xmonad
--restart" and
Post by Brandon Allbery
the running xmonad.
You mean, `executeFile` preserves environment? So, i may change
it from
Post by Brandon Allbery
running xmonad (by e.g. keybinding) and then restart it?
Post by Brandon Allbery
On Thu, Nov 29, 2018 at 6:01 AM Dmitriy Matrosov
On November 28, 2018 9:25:00 PM GMT+03:00, Brandon Allbery
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our not
obeying the
Post by Brandon Allbery
Post by Brandon Allbery
ICCCM
replace protocol unless started by replacing some other WM.
There's a few other places you can hide extra parameters;
starting
Post by Brandon Allbery
that
Post by Brandon Allbery
early, the environment is probably the easiest to use,
provided
Post by Brandon Allbery
Post by Brandon Allbery
they're
Post by Brandon Allbery
not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need to pass
something to running xmonad process (to which i send
XMONAD_RESTART). As far as i know, i can't change
environment of
Post by Brandon Allbery
Post by Brandon Allbery
another process..
Post by Brandon Allbery
On Wed, Nov 28, 2018 at 1:20 PM Dmitriy Matrosov
Post by Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad
keybindings and an
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
Post by Eyal Erez
application I'm running (it's a game that is suppose to
run full
Post by Brandon Allbery
Post by Brandon Allbery
screen
Post by Dmitriy Matrosov
Post by Eyal Erez
but in reality just uses a large window). I was
wondering if I
Post by Brandon Allbery
Post by Brandon Allbery
could
Post by Dmitriy Matrosov
Post by Eyal Erez
suspend or change some keybindings from a script that I
can run
Post by Brandon Allbery
Post by Brandon Allbery
before
Post by Dmitriy Matrosov
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible? Happy to entertain other
options.
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
import XMonad
import XMonad.Hooks.EwmhDesktops
import System.Directory
import System.FilePath
main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs =
disableKeys
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
}
xmonad xcf
disableKeys :: [String] -> XConfig Layout -> IO
(XConfig
Post by Brandon Allbery
Post by Brandon Allbery
Layout)
Post by Dmitriy Matrosov
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf
To disable all keys create file `~/.xmonad/disable_keys`
and then
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
restart xmonad with `xmonad --restart`. All keys will be
disabled
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
_and_ file deleted (to avoid locking yourself), thus next
restart
Post by Brandon Allbery
Post by Brandon Allbery
will
Post by Dmitriy Matrosov
restore all keys back.
As far as i understand, xmonad grabs keys in
`X.Main.launch` before
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
entering main loop. Thus, the one way to change key grab
is to
Post by Brandon Allbery
Post by Brandon Allbery
restart
Post by Dmitriy Matrosov
xmonad. I need to modify `XConfig` before calling
X.Main.launch`, and
Post by Brandon Allbery
Post by Dmitriy Matrosov
this may be done by `handleExtraArgs` (called in
`launch'` in
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
`X.Main.xmonad`). Unfortunately, it seems, that xmonad
does not
Post by Brandon Allbery
allow
Post by Brandon Allbery
Post by Dmitriy Matrosov
to pass extra cmd arguments during restart
(`X.Operations.restart`
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
always starts xmonad with name `xmonad` and no
arguments). Also, i
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
can't use extensible state in `handleExtraArgs`, because
it runs in
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
`IO` (`X` context is not yet built at that time). Thus,
to pass
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
something to it, i may use either file or (probably)
`--replace`. The
Post by Brandon Allbery
Post by Dmitriy Matrosov
above version uses file. And i have no luck with
`--replace`: it
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
--
brandon s allbery kf8nh
***@gmail.com
Dmitriy Matrosov
2018-12-03 14:38:37 UTC
Permalink
Post by Brandon Allbery
Er. What version of ghc? That sounds like either a ghc runtime bug, or a
system configuration issue. In particular, xmonad creates no threads
itself, so that would be the ghc runtime's IO manager thread.
That reminds me, that i've compiled my xmonad build with `-threaded - with-rtsopts=-N`. I've tried without these options and for now it seems stable. May that be the case?

Ghc versions are different: this error happens to me with different stack snapshots from time to time more than year already.
Post by Brandon Allbery
Post by Dmitriy Matrosov
Post by Brandon Allbery
Yes. More specifically, it's ultimately using the execve()
syscall, via
Post by Dmitriy Matrosov
Post by Brandon Allbery
one of the wrappers which propagates the environment (which one
depends
Post by Dmitriy Matrosov
Post by Brandon Allbery
on whether it's asked to do $PATH search or not).
import XMonad
import XMonad.Operations
import XMonad.Util.EZConfig
import System.Environment
import Control.Exception
main :: IO ()
main = do
let xcf = def
{ modMask = mod4Mask
, handleExtraArgs = disableKeysE
}
`additionalKeys`
[ ((mod4Mask, xK_d), disableKeysOn) ]
xmonad xcf
disableKeysOn :: X ()
disableKeysOn = do
trace "Preparing to disable keys and restarting.."
io $ setEnv "XMONAD_DISABLE_KEYS" "1"
restart "xmonad" True
disableKeysE :: [String] -> XConfig Layout -> IO (XConfig
Layout)
Post by Dmitriy Matrosov
disableKeysE _ xcf = do
me <- lookupEnv "XMONAD_DISABLE_KEYS"
case me of
Just _ -> do
trace "Disabling all keys."
unsetEnv "XMONAD_DISABLE_KEYS"
return (xcf {keys = \_ -> mempty})
Nothing -> return xcf
It also restarts xmonad on key press (when disabling keys) and all
works fine, but.. xmonad frequently crashes with
xmonad: failed to create OS thread: Resource temporarily
unavailable
I don't think this crash relates somehow to using environment, and it
happened from time to time before too, but still.. Can you advise,
how to fix it?
Post by Brandon Allbery
On Thu, Nov 29, 2018 at 4:07 PM Dmitriy Matrosov
Post by Brandon Allbery
You were talking about restart, between the running xmonad
and
Post by Dmitriy Matrosov
its
Post by Brandon Allbery
Post by Brandon Allbery
replacement via executeFile. There, you can use the
environment.
Post by Dmitriy Matrosov
Post by Brandon Allbery
There
Post by Brandon Allbery
is no way to pass information between an invoked "xmonad
--restart" and
Post by Brandon Allbery
the running xmonad.
You mean, `executeFile` preserves environment? So, i may
change
Post by Dmitriy Matrosov
it from
Post by Brandon Allbery
running xmonad (by e.g. keybinding) and then restart it?
Post by Brandon Allbery
On Thu, Nov 29, 2018 at 6:01 AM Dmitriy Matrosov
On November 28, 2018 9:25:00 PM GMT+03:00, Brandon
Allbery
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our
not
Post by Dmitriy Matrosov
Post by Brandon Allbery
obeying the
Post by Brandon Allbery
Post by Brandon Allbery
ICCCM
replace protocol unless started by replacing some
other WM.
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
There's a few other places you can hide extra
parameters;
Post by Dmitriy Matrosov
Post by Brandon Allbery
starting
Post by Brandon Allbery
that
Post by Brandon Allbery
early, the environment is probably the easiest to
use,
Post by Dmitriy Matrosov
provided
Post by Brandon Allbery
Post by Brandon Allbery
they're
Post by Brandon Allbery
not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need
to pass
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
something to running xmonad process (to which i send
XMONAD_RESTART). As far as i know, i can't change
environment of
Post by Brandon Allbery
Post by Brandon Allbery
another process..
Post by Brandon Allbery
On Wed, Nov 28, 2018 at 1:20 PM Dmitriy Matrosov
Post by Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad
keybindings and an
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
Post by Eyal Erez
application I'm running (it's a game that is
suppose to
Post by Dmitriy Matrosov
Post by Brandon Allbery
run full
Post by Brandon Allbery
Post by Brandon Allbery
screen
Post by Dmitriy Matrosov
Post by Eyal Erez
but in reality just uses a large window). I was
wondering if I
Post by Brandon Allbery
Post by Brandon Allbery
could
Post by Dmitriy Matrosov
Post by Eyal Erez
suspend or change some keybindings from a script
that I
Post by Dmitriy Matrosov
Post by Brandon Allbery
can run
Post by Brandon Allbery
Post by Brandon Allbery
before
Post by Dmitriy Matrosov
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible? Happy to entertain
other
Post by Dmitriy Matrosov
options.
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
import XMonad
import XMonad.Hooks.EwmhDesktops
import System.Directory
import System.FilePath
main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs =
disableKeys
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
}
xmonad xcf
disableKeys :: [String] -> XConfig Layout
-> IO
Post by Dmitriy Matrosov
Post by Brandon Allbery
(XConfig
Post by Brandon Allbery
Post by Brandon Allbery
Layout)
Post by Dmitriy Matrosov
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf
To disable all keys create file
`~/.xmonad/disable_keys`
Post by Dmitriy Matrosov
Post by Brandon Allbery
and then
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
restart xmonad with `xmonad --restart`. All keys
will be
Post by Dmitriy Matrosov
Post by Brandon Allbery
disabled
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
_and_ file deleted (to avoid locking yourself),
thus next
Post by Dmitriy Matrosov
Post by Brandon Allbery
restart
Post by Brandon Allbery
Post by Brandon Allbery
will
Post by Dmitriy Matrosov
restore all keys back.
As far as i understand, xmonad grabs keys in
`X.Main.launch` before
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
entering main loop. Thus, the one way to change key
grab
Post by Dmitriy Matrosov
Post by Brandon Allbery
is to
Post by Brandon Allbery
Post by Brandon Allbery
restart
Post by Dmitriy Matrosov
xmonad. I need to modify `XConfig` before calling
X.Main.launch`, and
Post by Brandon Allbery
Post by Dmitriy Matrosov
this may be done by `handleExtraArgs` (called in
`launch'` in
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
`X.Main.xmonad`). Unfortunately, it seems, that
xmonad
Post by Dmitriy Matrosov
Post by Brandon Allbery
does not
Post by Brandon Allbery
allow
Post by Brandon Allbery
Post by Dmitriy Matrosov
to pass extra cmd arguments during restart
(`X.Operations.restart`
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
always starts xmonad with name `xmonad` and no
arguments). Also, i
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
can't use extensible state in `handleExtraArgs`,
because
Post by Dmitriy Matrosov
Post by Brandon Allbery
it runs in
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
`IO` (`X` context is not yet built at that time).
Thus,
Post by Dmitriy Matrosov
Post by Brandon Allbery
to pass
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
something to it, i may use either file or
(probably)
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
`--replace`. The
Post by Brandon Allbery
Post by Dmitriy Matrosov
above version uses file. And i have no luck with
`--replace`: it
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
Brandon Allbery
2018-12-03 18:55:33 UTC
Permalink
Threaded builds would run a certain risk of confusing X11 under some
circumstances (specifically, if you tried to use the existing server
connection in a thread, you could see X11 protocol errors). They shouldn't
produce that error.
On November 30, 2018 11:18:51 PM GMT+03:00, Brandon Allbery <
Post by Brandon Allbery
Er. What version of ghc? That sounds like either a ghc runtime bug, or a
system configuration issue. In particular, xmonad creates no threads
itself, so that would be the ghc runtime's IO manager thread.
That reminds me, that i've compiled my xmonad build with `-threaded -
with-rtsopts=-N`. I've tried without these options and for now it seems
stable. May that be the case?
Ghc versions are different: this error happens to me with different stack
snapshots from time to time more than year already.
Post by Brandon Allbery
Post by Dmitriy Matrosov
Post by Brandon Allbery
Yes. More specifically, it's ultimately using the execve()
syscall, via
Post by Dmitriy Matrosov
Post by Brandon Allbery
one of the wrappers which propagates the environment (which one
depends
Post by Dmitriy Matrosov
Post by Brandon Allbery
on whether it's asked to do $PATH search or not).
import XMonad
import XMonad.Operations
import XMonad.Util.EZConfig
import System.Environment
import Control.Exception
main :: IO ()
main = do
let xcf = def
{ modMask = mod4Mask
, handleExtraArgs = disableKeysE
}
`additionalKeys`
[ ((mod4Mask, xK_d), disableKeysOn) ]
xmonad xcf
disableKeysOn :: X ()
disableKeysOn = do
trace "Preparing to disable keys and restarting.."
io $ setEnv "XMONAD_DISABLE_KEYS" "1"
restart "xmonad" True
disableKeysE :: [String] -> XConfig Layout -> IO (XConfig
Layout)
Post by Dmitriy Matrosov
disableKeysE _ xcf = do
me <- lookupEnv "XMONAD_DISABLE_KEYS"
case me of
Just _ -> do
trace "Disabling all keys."
unsetEnv "XMONAD_DISABLE_KEYS"
return (xcf {keys = \_ -> mempty})
Nothing -> return xcf
It also restarts xmonad on key press (when disabling keys) and all
works fine, but.. xmonad frequently crashes with
xmonad: failed to create OS thread: Resource temporarily
unavailable
I don't think this crash relates somehow to using environment, and it
happened from time to time before too, but still.. Can you advise,
how to fix it?
Post by Brandon Allbery
On Thu, Nov 29, 2018 at 4:07 PM Dmitriy Matrosov
Post by Brandon Allbery
You were talking about restart, between the running xmonad
and
Post by Dmitriy Matrosov
its
Post by Brandon Allbery
Post by Brandon Allbery
replacement via executeFile. There, you can use the
environment.
Post by Dmitriy Matrosov
Post by Brandon Allbery
There
Post by Brandon Allbery
is no way to pass information between an invoked "xmonad
--restart" and
Post by Brandon Allbery
the running xmonad.
You mean, `executeFile` preserves environment? So, i may
change
Post by Dmitriy Matrosov
it from
Post by Brandon Allbery
running xmonad (by e.g. keybinding) and then restart it?
Post by Brandon Allbery
On Thu, Nov 29, 2018 at 6:01 AM Dmitriy Matrosov
On November 28, 2018 9:25:00 PM GMT+03:00, Brandon
Allbery
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Not by default; there's already a bug (
https://github.com/xmonad/xmonad/issues/78) about our
not
Post by Dmitriy Matrosov
Post by Brandon Allbery
obeying the
Post by Brandon Allbery
Post by Brandon Allbery
ICCCM
replace protocol unless started by replacing some
other WM.
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
There's a few other places you can hide extra
parameters;
Post by Dmitriy Matrosov
Post by Brandon Allbery
starting
Post by Brandon Allbery
that
Post by Brandon Allbery
early, the environment is probably the easiest to
use,
Post by Dmitriy Matrosov
provided
Post by Brandon Allbery
Post by Brandon Allbery
they're
Post by Brandon Allbery
not
too large (see why there's a state file now).
Hm, i don't understand how to use environment. I need
to pass
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
something to running xmonad process (to which i send
XMONAD_RESTART). As far as i know, i can't change
environment of
Post by Brandon Allbery
Post by Brandon Allbery
another process..
Post by Brandon Allbery
On Wed, Nov 28, 2018 at 1:20 PM Dmitriy Matrosov
Post by Dmitriy Matrosov
Hi.
Post by Eyal Erez
Hi,
I'm getting some collisions between my xmonad
keybindings and an
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
Post by Eyal Erez
application I'm running (it's a game that is
suppose to
Post by Dmitriy Matrosov
Post by Brandon Allbery
run full
Post by Brandon Allbery
Post by Brandon Allbery
screen
Post by Dmitriy Matrosov
Post by Eyal Erez
but in reality just uses a large window). I was
wondering if I
Post by Brandon Allbery
Post by Brandon Allbery
could
Post by Dmitriy Matrosov
Post by Eyal Erez
suspend or change some keybindings from a script
that I
Post by Dmitriy Matrosov
Post by Brandon Allbery
can run
Post by Brandon Allbery
Post by Brandon Allbery
before
Post by Dmitriy Matrosov
Post by Eyal Erez
the app launches and then restore later.
Is this at all possible? Happy to entertain
other
Post by Dmitriy Matrosov
options.
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
import XMonad
import XMonad.Hooks.EwmhDesktops
import System.Directory
import System.FilePath
main :: IO ()
main = do
let xcf = ewmh $ def
{ modMask = mod4Mask
, handleExtraArgs =
disableKeys
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
}
xmonad xcf
disableKeys :: [String] -> XConfig Layout
-> IO
Post by Dmitriy Matrosov
Post by Brandon Allbery
(XConfig
Post by Brandon Allbery
Post by Brandon Allbery
Layout)
Post by Dmitriy Matrosov
disableKeys _ xcf = do
xd <- getXMonadDir
let disableFn = xd </> "disable_keys"
b <- doesFileExist disableFn
if b
then do
trace "Disabling all keys."
removeFile disableFn
return (xcf {keys = \_ -> mempty})
else return xcf
To disable all keys create file
`~/.xmonad/disable_keys`
Post by Dmitriy Matrosov
Post by Brandon Allbery
and then
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
restart xmonad with `xmonad --restart`. All keys
will be
Post by Dmitriy Matrosov
Post by Brandon Allbery
disabled
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
_and_ file deleted (to avoid locking yourself),
thus next
Post by Dmitriy Matrosov
Post by Brandon Allbery
restart
Post by Brandon Allbery
Post by Brandon Allbery
will
Post by Dmitriy Matrosov
restore all keys back.
As far as i understand, xmonad grabs keys in
`X.Main.launch` before
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
entering main loop. Thus, the one way to change key
grab
Post by Dmitriy Matrosov
Post by Brandon Allbery
is to
Post by Brandon Allbery
Post by Brandon Allbery
restart
Post by Dmitriy Matrosov
xmonad. I need to modify `XConfig` before calling
X.Main.launch`, and
Post by Brandon Allbery
Post by Dmitriy Matrosov
this may be done by `handleExtraArgs` (called in
`launch'` in
Post by Brandon Allbery
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
`X.Main.xmonad`). Unfortunately, it seems, that
xmonad
Post by Dmitriy Matrosov
Post by Brandon Allbery
does not
Post by Brandon Allbery
allow
Post by Brandon Allbery
Post by Dmitriy Matrosov
to pass extra cmd arguments during restart
(`X.Operations.restart`
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
always starts xmonad with name `xmonad` and no
arguments). Also, i
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
can't use extensible state in `handleExtraArgs`,
because
Post by Dmitriy Matrosov
Post by Brandon Allbery
it runs in
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
`IO` (`X` context is not yet built at that time).
Thus,
Post by Dmitriy Matrosov
Post by Brandon Allbery
to pass
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
something to it, i may use either file or
(probably)
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
`--replace`. The
Post by Brandon Allbery
Post by Dmitriy Matrosov
above version uses file. And i have no luck with
`--replace`: it
Post by Brandon Allbery
Post by Brandon Allbery
Post by Dmitriy Matrosov
seems, `xmonad` can't replace itself?..
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
Post by Dmitriy Matrosov
Post by Brandon Allbery
Post by Brandon Allbery
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
_______________________________________________
xmonad mailing list
http://mail.haskell.org/cgi-bin/mailman/listinfo/xmonad
--
brandon s allbery kf8nh
***@gmail.com
Dmitriy Matrosov
2018-11-30 20:08:28 UTC
Permalink
This post might be inappropriate. Click to display it.
Loading...