[xmonad] xmonad switching screens + xsetwacom

Gwern Branwen gwern0 at gmail.com
Sun Oct 26 15:56:33 EDT 2008


On Sun, Oct 26, 2008 at 3:05 PM, IL'dar AKHmetgaleev <akhilman at gmail.com> wrote:
> Greetings
>
> How I can execute
> Code:
> xsetwacom set stylus Screen_No $No
> when I'm switching screen with hotkeys:
> Code:
>    --
>    -- mod-{w,e,r}, Switch to physical/Xinerama screens 1, 2, or 3
>    -- mod-shift-{w,e,r}, Move client to screen 1, 2, or 3
>    --
>    [((m .|. modMask, key), screenWorkspace sc >>= flip whenJust
> (windows . f)) | (key, sc) <- zip [xK_q, xK_w, xK_e] [0..]
>        , (f, m) <- [(W.view, 0), (W.shift, shiftMask)]]
>
> For example I need to spawn "xsetwacom set stylus Screen_No 0" when I'm
> switching to screen 1 by mod-q
>
> How I can do this?

A rough stab at a solution:

          , ((modMask, xK_q), spawn "xsetwacom set stylus Screen_No 0"
>>  (screenWorkspace sc >>= flip whenJust (windows ○ f)) 1)))

This untested fragment obviously isn't exactly what you want, but it
shows a few pieces of the puzzle: the use of 'spawn' to run your shell
command, the use of >> inside a X () action to do multiple things on
the same key press, and it hints at how to deconstruct the list
comprehension and do the workspace-switching manually*. However, I
leave it to another to tell you how to run spawn only if switching to
workspace 1 instead of running it on every workspace switch.

* I incidentally have long thought that that list comprehension was
cleverness for the sake of being clever, and makes it difficult for
people to modify or even understand it.

--
gwern


More information about the xmonad mailing list