Oleksandr Gavenko
2012-08-10 09:48:17 UTC
I use desktops only because FvwmPager look cool with such my preference:
DesktopSize 3x3
DesktopName 0 Main
DesktopName 1 Net
DesktopName 2 Work
DesktopName 3 Media
DesktopName 4 Games
DestroyModuleConfig FvwmPager: *
*FvwmPager: Columns 1
Also today I discover that focus persistent only on one desktop (see my post
http://permalink.gmane.org/gmane.comp.window-managers.fvwm/7487). I don't know
how this useful for end user workflow...
So what reason to use multiply desktops?
May be I miss some useful features of desktops?
You can look for my way how I start using desktops below (or skip it if want
keep your time).
================================================================
I wanted one page for one application and FvwmPager with WindowList allow
visually easy switching among them. This require *large* DesktopSize or many
desktops. But also I wanted to preserve FvwmPager always on screen (and its
size occupy many space on screen).
So with help of Thomas Adam 3.5 years ago, I make work auto-hiding for
FvwmPager.
As I say FvwmPager look cool for me if use many desktops instead of
DesktopSize (3*N_desktops)x3. But I also wanted keyboard navigation across
pages.
Simple examples from Fvwm FAQ shown how to move between pages in single
desktop and different key bindings to move across desktops. But I wanted
single key binding for both pages and desktops. So reject using multiply
desktops.
But each day I recall how FvwmPager be cool with multiply desktops so one
evening write nice code (see below). I use only build-in features of Fvwm
without any external scripting for conditional branching or arithmetics. Only
tow drawback.
First is setting 2 environment variable. But recent version of Fvwm allow use
local variables (I keep env vars for old Fvwm installations)...
Second - magic constants of desktops count and desktop size. But one day as
contest I think generalise this code with M4 preprocessor capabilities to use
arithmetics.
================================================================
# Similar to Vi hjkl:
#
# F11 - up
# F9 - left F12 - right
# F10 - down
DestroyFunc myGotoPage
AddToFunc myGotoPage
+ I Next (CirculateHit, FvwmPager, Shaded) WindowShade "False"
+ I GotoPage $0 $1
Key F9 A C myGotoPage -1p -0p
Key F12 A C myGotoPage +1p +0p
# Move across page up, if no page more go to last page of prev desk.
DestroyFunc myGotoPageUp
AddToFunc myGotoPageUp
+ I Next (CirculateHit, FvwmPager, Shaded) WindowShade "False"
+ I SetEnv fvwm_page_ny $[page.ny]
+ I Test (EnvMatch fvwm_page_ny 0) Nop
+ I TestRc (Match) GotoDesk -1 0 4
+ I TestRc (Match) GotoPage +0p 2
+ I TestRc (NoMatch) GotoPage +0p -1p
# Remove fvwm_page_ny so derived processes do not inherit it.
+ I SetEnv fvwm_page_ny
Key F11 A C myGotoPageUp
# Move across page down, if no page more go to first page of next desk.
DestroyFunc myGotoPageDown
AddToFunc myGotoPageDown
+ I Next (CirculateHit, FvwmPager, Shaded) WindowShade "False"
+ I SetEnv fvwm_page_ny $[page.ny]
+ I Test (EnvMatch fvwm_page_ny 2) Nop
+ I TestRc (Match) GotoDesk +1 0 4
+ I TestRc (Match) GotoPage +0p 0
+ I TestRc (NoMatch) GotoPage +0p +1p
# Remove fvwm_page_ny so derived processes do not inherit it.
+ I SetEnv fvwm_page_ny
Key F10 A C myGotoPageDown
# No any button on pager.
Style "FvwmPager" !Button 1, !Button 3, !Button 5, \
StaysOnTop, Sticky, FixedPosition, FixedSize, !Iconifiable, \
WindowListSkip, CirculateSkip
m4_define(`m4_PagerInactiveRGB', `rgb:c0/c0/c0')m4_dnl
m4_define(`m4_PagerActiveRGB', `rgb:ef/df/bdc')m4_dnl
DestroyModuleConfig FvwmPager: *
*FvwmPager: Back m4_PagerInactiveRGB
*FvwmPager: BalloonBack m4_PagerActiveRGB
*FvwmPager: Hilight m4_PagerActiveRGB
*FvwmPager: Geometry 80x500-0+0
*FvwmPager: WindowColors m4_PagerInactiveRGB m4_PagerInactiveRGB m4_PagerActiveRGB m4_PagerActiveRGB
*FvwmPager: Font "xft:Sans:Bold:pixelsize=12:minspace=True:antialias=True"
*FvwmPager: Balloons All
*FvwmPager: BalloonFont "-Misc-Fixed-Medium-R-Normal-*-13-*-*-*-*-*-ISO10646-1"
*FvwmPager: MiniIcons
*FvwmPager: UseSkipList
*FvwmPager: LabelsAbove
# As I use only columns row count calculated automatically.
# *FvwmPager: Rows 5
*FvwmPager: Columns 1
DesktopSize 3x3
DesktopName 0 Main
DesktopName 1 Net
DesktopName 2 Work
DesktopName 3 Media
DesktopName 4 Games
DestroyModuleConfig FvwmPager: *
*FvwmPager: Columns 1
Also today I discover that focus persistent only on one desktop (see my post
http://permalink.gmane.org/gmane.comp.window-managers.fvwm/7487). I don't know
how this useful for end user workflow...
So what reason to use multiply desktops?
May be I miss some useful features of desktops?
You can look for my way how I start using desktops below (or skip it if want
keep your time).
================================================================
I wanted one page for one application and FvwmPager with WindowList allow
visually easy switching among them. This require *large* DesktopSize or many
desktops. But also I wanted to preserve FvwmPager always on screen (and its
size occupy many space on screen).
So with help of Thomas Adam 3.5 years ago, I make work auto-hiding for
FvwmPager.
As I say FvwmPager look cool for me if use many desktops instead of
DesktopSize (3*N_desktops)x3. But I also wanted keyboard navigation across
pages.
Simple examples from Fvwm FAQ shown how to move between pages in single
desktop and different key bindings to move across desktops. But I wanted
single key binding for both pages and desktops. So reject using multiply
desktops.
But each day I recall how FvwmPager be cool with multiply desktops so one
evening write nice code (see below). I use only build-in features of Fvwm
without any external scripting for conditional branching or arithmetics. Only
tow drawback.
First is setting 2 environment variable. But recent version of Fvwm allow use
local variables (I keep env vars for old Fvwm installations)...
Second - magic constants of desktops count and desktop size. But one day as
contest I think generalise this code with M4 preprocessor capabilities to use
arithmetics.
================================================================
# Similar to Vi hjkl:
#
# F11 - up
# F9 - left F12 - right
# F10 - down
DestroyFunc myGotoPage
AddToFunc myGotoPage
+ I Next (CirculateHit, FvwmPager, Shaded) WindowShade "False"
+ I GotoPage $0 $1
Key F9 A C myGotoPage -1p -0p
Key F12 A C myGotoPage +1p +0p
# Move across page up, if no page more go to last page of prev desk.
DestroyFunc myGotoPageUp
AddToFunc myGotoPageUp
+ I Next (CirculateHit, FvwmPager, Shaded) WindowShade "False"
+ I SetEnv fvwm_page_ny $[page.ny]
+ I Test (EnvMatch fvwm_page_ny 0) Nop
+ I TestRc (Match) GotoDesk -1 0 4
+ I TestRc (Match) GotoPage +0p 2
+ I TestRc (NoMatch) GotoPage +0p -1p
# Remove fvwm_page_ny so derived processes do not inherit it.
+ I SetEnv fvwm_page_ny
Key F11 A C myGotoPageUp
# Move across page down, if no page more go to first page of next desk.
DestroyFunc myGotoPageDown
AddToFunc myGotoPageDown
+ I Next (CirculateHit, FvwmPager, Shaded) WindowShade "False"
+ I SetEnv fvwm_page_ny $[page.ny]
+ I Test (EnvMatch fvwm_page_ny 2) Nop
+ I TestRc (Match) GotoDesk +1 0 4
+ I TestRc (Match) GotoPage +0p 0
+ I TestRc (NoMatch) GotoPage +0p +1p
# Remove fvwm_page_ny so derived processes do not inherit it.
+ I SetEnv fvwm_page_ny
Key F10 A C myGotoPageDown
# No any button on pager.
Style "FvwmPager" !Button 1, !Button 3, !Button 5, \
StaysOnTop, Sticky, FixedPosition, FixedSize, !Iconifiable, \
WindowListSkip, CirculateSkip
m4_define(`m4_PagerInactiveRGB', `rgb:c0/c0/c0')m4_dnl
m4_define(`m4_PagerActiveRGB', `rgb:ef/df/bdc')m4_dnl
DestroyModuleConfig FvwmPager: *
*FvwmPager: Back m4_PagerInactiveRGB
*FvwmPager: BalloonBack m4_PagerActiveRGB
*FvwmPager: Hilight m4_PagerActiveRGB
*FvwmPager: Geometry 80x500-0+0
*FvwmPager: WindowColors m4_PagerInactiveRGB m4_PagerInactiveRGB m4_PagerActiveRGB m4_PagerActiveRGB
*FvwmPager: Font "xft:Sans:Bold:pixelsize=12:minspace=True:antialias=True"
*FvwmPager: Balloons All
*FvwmPager: BalloonFont "-Misc-Fixed-Medium-R-Normal-*-13-*-*-*-*-*-ISO10646-1"
*FvwmPager: MiniIcons
*FvwmPager: UseSkipList
*FvwmPager: LabelsAbove
# As I use only columns row count calculated automatically.
# *FvwmPager: Rows 5
*FvwmPager: Columns 1
--
Best regards!
Best regards!