On Wed, Feb 26, 2020 at 03:16:12PM -0500, Stephen Talley wrote:
> In my FVWM configuration, I can use either Sticky:
>
>     # Show window on all desktops
>     Style *Emulator* Sticky
>
> ???or StartsOnDesk:
>
>     # Show window on desktop 3 only
>     Style *Emulator* StartsOnDesk 3
>
> But how can I make a window appear on, say, desktops 3 and 4, but not 0, 1, 
> or 2?

Fvwm does not manage desk objects.  The desk a window is present
on is just a property of the window, so there is no direct way to
do that.  However, you can do some scripting:

-- snip --
addtofunc custom_gotodesk
+ I setenv _desk $0
+ I test (envmatch _desk 1) all (xeyes) stick on
+ I test (envmatch _desk 2) all (xeyes) stick on
+ I test (envmatch _desk 3) all (xclock) stick on
+ I test (envmatch _desk 4) all (xclock) stick on
+ I GotoDesk 0 $0
+ I All (xeyes) stick off
+ I All (xclock) stick off
+ I unsetenv _desk
-- snip --

Call this function instead of GotoDesk with

  custom_gotodesk <desknum>

--

This won't work if you click on the pager to switch desks because
the GotoPage command is hard coded there.  In that case, FvwmEvent
helps:

-- snip --
*FvwmEvent: new_desk deskchange
Module FvwmEvent

addtofunc deskchange
+ I echo dc $[desk.n]
+ I setenv _desk $[desk.n]
+ I test (envmatch _desk 1) all (xeyes) movetodesk
+ I test (envmatch _desk 2) all (xeyes) movetodesk
+ I test (envmatch _desk 3) all (xclock) movetodesk
+ I test (envmatch _desk 4) all (xclock) movetodesk
+ I unsetenv _desk
-- snip --

You'll probably want to put the module execution in the
initfunction/restartfunction.

Ciao

Dominik ^_^  ^_^

--

Dominik Vogt

Reply via email to