Discussion:
FVWM: What reason to use multiply desktops?
Oleksandr Gavenko
2012-08-10 09:48:17 UTC
Permalink
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
--
Best regards!
Thomas Adam
2012-08-16 21:51:03 UTC
Permalink
Post by Oleksandr Gavenko
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?
Are you confusing pages and desks here, I wonder? In your above
configuration snippet, you have defined *fives* desks, each with *nine*
pages on them. Which one of the two concepts (pages or desks) are you
referring to when you say "desktops", or indeed "multiple desktops"? Since
you have more than one of each pages and desk.
Post by Oleksandr Gavenko
May be I miss some useful features of desktops?
Other than the terminology and understanding the implications of a page
versus a desk, the answer is that it's as useful as you want it to be.

At the risk of reiterating the FAQ (which you've clearly not read) the major
difference between a page and a desk is that pages belong to a desk however
you want them arranged -- and that the "concept" of what that desk should
contain depends entirely on how you want to organise your windows (you've
used examples above with DesktopName, so that confirms you have some
understanding). Pages cannot be named, only referenced to by their location
-- although the InfoStoreAdd command could help here with that.

By default, if you have at a minimum one page belonging to a desk. The way
in which windows are handled internally by FVWM between pages and desks is
that windows on different desks other to the one you're on are unmapped.
Post by Oleksandr Gavenko
So with help of Thomas Adam 3.5 years ago, I make work auto-hiding for
FvwmPager.
Have I been here even that long?
Post by Oleksandr Gavenko
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.
GotoDeskAndPage would help here.
Post by Oleksandr Gavenko
# Remove fvwm_page_ny so derived processes do not inherit it.
+ I SetEnv fvwm_page_ny
This applies to all other instances where you have this. You meant:

UnSetEnv ....

-- Thomas Adam
Michael Großer
2012-08-17 03:11:42 UTC
Permalink
[...]
Post by Thomas Adam
Post by Oleksandr Gavenko
So what reason to use multiply desktops?
Are you confusing pages and desks here, I wonder? In your above
configuration snippet, you have defined *fives* desks, each with *nine*
pages on them. Which one of the two concepts (pages or desks) are you
referring to when you say "desktops", or indeed "multiple desktops"? Since
you have more than one of each pages and desk.
I use a mix of multiple desktops and multiple pages everyday,
and not because it looks cool but because it makes me unbelievably
productiv!

Look at my screenshots:
http://www.jumping-blue-turtle.com/online-shop/0005_lenny/debian/fvwm/screenshots/screenshot-show/slide001.html

Currently, my entire window management bases on 7 dimensions:

- dimension 1: Tabbed Browsing
- dimension 2: Alt+Tab
- dimension 3: 4 pages horizontally side by side
- dimension 4: 3 pages vertically one below the other
- dimension 5: 4 desks horizontally side by side
- dimension 6: 3 desks vertically one below the other
- dimension 7: 3 up to 6 desk clusters lined up one after another

The answer to the question "what reason to use multiple desktops"
is that the way I think and work makes me able to cope with
multiple complex projects and taks simultaneously.
Post by Thomas Adam
Post by Oleksandr Gavenko
May be I miss some useful features of desktops?
Other than the terminology and understanding the implications of a page
versus a desk, the answer is that it's as useful as you want it to be.
This is true.
Post by Thomas Adam
Post by Oleksandr Gavenko
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.
Remember one important thing: I do not care whether something looks cool
or not. The amount of speed and productivity is what counts.
I daily *use* keyboard navigation across pages.

- I have a mix of 12*12*3 = 432 up to 12*12*6 = 864 pages in my computer.

- I treat pages like desks somehow with the exception that a window is
still allowed to cover more than one page if it is larger than the
screen size.

- I use Win+F1 ... Win+F12 to access pages (or Win+Arrow keys)

- I use Shift+Win+F1 ... Shift+Win+F12 to access desktops (or Shift+Win+Arrow keys)

- I use Shift+Win+[HOME/END/PgUp/PgDwn] to switch between different desktop
clusters.

- A builtin memory ensures that my computer remembers the position
of all lower dimensions when I switch to a new location within
a higher dimension:

- When desktop cluster 1 is activ, I am at page 6 of desk 11.

- I switch to cluster 3 and go to page 2 of desk 4.

- When I switch back to cluster 1, I am automatically
back at page 6 of desk 11.

This kind of thinking in 7 dimensions makes me fast and powerful.
And because FVWM is fast, my computers stay fast (because no
fat and sluggish software unnecessarily thwarts down the speed
of my computers). With the unbraked power of my computers and
my thinking in 7 dimensions, I am so powerful that the question
"what reason to use multiply desktops" bears resemblance to
a provocation like "I have a horse-drawn carriage and want to
travel from Berlin to Moscow as fast as possible: What reason
to use cars?"

Ask me if you want to see my latest FVWM configuration.
I may need some days to have the time to send something
to you via e-mail, but it looks like you need some ideas
about solving problems that I already solved.


Best regards,
Michael Großer
mimosinnet
2012-08-24 18:34:37 UTC
Permalink
Post by Michael Großer
http://www.jumping-blue-turtle.com/online-shop/0005_lenny/debian/fvwm/screenshots/screenshot-show/slide001.html
- dimension 1: Tabbed Browsing
- dimension 2: Alt+Tab
- dimension 3: 4 pages horizontally side by side
- dimension 4: 3 pages vertically one below the other
- dimension 5: 4 desks horizontally side by side
- dimension 6: 3 desks vertically one below the other
- dimension 7: 3 up to 6 desk clusters lined up one after another
I like your arrangement, and find interesting you defined it as
"dimensions". My case is more simple. I have 9 desktops:

DesktopSize 1x1
EdgeResistance 0
DesktopName 0 Utils
DesktopName 1 Gent
DesktopName 2 Oficina
DesktopName 3 Internet
DesktopName 4 Sistema
DesktopName 5 Oci
DesktopName 6 Xarxa
DesktopName 7 Test1
DesktopName 8 Test2

Each desktop is devoted to a particular type of tasks, and I have
defined a menu for each desktop. When moving to a particular desk, the
corresponding menu is shown, and normally the first option in the menu
is the one needed:

# Shift: Go to a different desk and show menu
Key KP_Home A S F-GotoDeskMenu 0 0 Utils
Key KP_Up A S F-GotoDeskMenu 0 1 Gent
Key KP_Prior A S F-GotoDeskMenu 0 2 Oficina
Key KP_Left A S F-GotoDeskMenu 0 3 Internet
Key KP_Begin A S F-GotoDeskMenu 0 4 Sistema
Key KP_Right A S F-GotoDeskMenu 0 5 Oci
Key KP_End A S F-GotoDeskMenu 0 6 Xarxa
Key KP_Down A S F-GotoDeskMenu 0 7
Key KP_Next A S F-GotoDeskMenu 0 8 Global

The number of pages per desktop is changed with a key binding:

# Function: EdgeThinkness + DesktopSize
Key d A 4 F-MultiplePages 0 1 1
Key d A 4S F-MultiplePages 2 2 2

DestroyFunc F-MultiplePages
AddToFunc F-MultiplePages
+ I EdgeThickness $0
+ I DesktopSize $1x$2

With this, you can work with a window larger than your computer screen,
and make it visible by moving the mouse to the edge of the screen. I
have used this when editing some large images, although I have used it
more often as a show off of what FVWM can do....

Cheers!
--
Mimosinnet
Linux User: #463211
41:24:51N (41.4141) 2:11:24E (2.1902)

Ningún Lugar
Activisme Cultural per a la Transformació Social
http://generatech.org/ningunlugar

Fractalitats en Investigació Crítica
Investigació Crítica per a la Transformació Social
http://psicologiasocial.uab.es/fic
Oleksandr Gavenko
2012-08-25 08:21:07 UTC
Permalink
Post by Thomas Adam
Post by Oleksandr Gavenko
# Remove fvwm_page_ny so derived processes do not inherit it.
+ I SetEnv fvwm_page_ny
UnSetEnv ....
I found "UnSetEnv" in fvwm(1), but also look to comment for "SetEnv":

SetEnv variable value
If no _value_ is given, the variable is deleted.

In time when I wrote this code I was a very noob, so don't know about
"UnSetEnv".

I think that semantics for "SetEnv" with empty args is historical when
"UnSetEnv" was not present.

"UnSetEnv" is better then "SenEnv" without value as its name provide
obvious description of semantic.
--
Best regards!
Loading...