Page 1 of 5

FVWM myExt collection

Posted: Sun Dec 20, 2020 12:35 pm
by rasat
This thread collects FVWM3 extensions that are created in "FVWM3 configs & addon" thread. For questions and new ideas post in this link.
viewtopic.php?f=82&t=61605

Inspired by Gnome Extensions that make gnome multifunctional. This gave the name "FVWM myExtensions". The new FVWM3 (F? Virtual Window Manager 3), started as an experiment and became a fully functional base that makes "my" daily computer workflow simpler and more efficient. This is a model for you to use, modify or create your own extensions

Earlier was missing were style and beauty. The config extensions provide the missing parts and make the workflow simpler and more efficient. With myExt, it is easy to work and manage by using the default FVWM3 config as a base, directly in ~/.fvwm. The config is split into folders and runs in the same sequence as the original. The additional extension configs are simply added in associated folders.

1. 1Functions
2. 2-3Styles
3. 4Menus
4. 5Bindings
5. 6Decor
6. 7Modules

Besides the fast and low memory usage of FVWM, the aim is to speed up the workflow on common tasks and a clean desk. Access to choices and customization. This system helps to maintain and create new functions, decors, and modules. Here is the config that runs startup, extensions, and does changes in preloaded settings.

Code: Select all

## .fvwm/config
## STARTUP ##

## Load default 1.Functions
Read $[FVWM_USERDIR]/1Functions/MyInitMgr.sys
Read $[FVWM_USERDIR]/1Functions/FVWM-StartFunction.sys

## Load 2-3.Styles
Read $[FVWM_USERDIR]/2-3Styles/FVWM-Page.sys
Read $[FVWM_USERDIR]/2-3Styles/FVWM-Colorsets.sys
Read $[FVWM_USERDIR]/2-3Styles/my-Colorsets.sys
Read $[FVWM_USERDIR]/2-3Styles/Fvwm-Thumbnails.sys
Read $[FVWM_USERDIR]/2-3Styles/my-BorderStyle.sys

## Load 4.Menus
Read $[FVWM_USERDIR]/4Menus/myMenu.conf
# Read $[FVWM_USERDIR]/4Menus/AutoMoveWin.sys

## Load 5.Bindings (min, max, close button, and win focus)
Read $[FVWM_USERDIR]/5Bindings/my-MouseBindings.sys

## Load 6.Decorations
Read $[FVWM_USERDIR]/6Decor/myDecor.sys

## Load 7.Modules
Read $[FVWM_USERDIR]/7Modules/FvwmScript.sys
Read $[FVWM_USERDIR]/7Modules/myRightPanel.sys
# Read $[FVWM_USERDIR]/7Modules/AutoHideList.sys
Read $[FVWM_USERDIR]/7Modules/FvwmPager.sys
Read $[FVWM_USERDIR]/7Modules/FvwmIconMan.sys
Read $[FVWM_USERDIR]/7Modules/DiaryThumbPlace.sys
Read $[FVWM_USERDIR]/7Modules/SimpleButton.sys
Read $[FVWM_USERDIR]/7Modules/ControlPanelBP.sys

######
## Change preloaded settings
######
----
### Colorsets in 2-3Styles/
## Module Default bg #2b4e5e (background pager, buttons, etc.)
Colorset 10 fg #ffffff, bg #2b4e5e, hi #aaaaaa, sh #999999, Plain, NoShape
----
## TouchPad Off
# + I Test (Init) Exec synclient TouchpadOff=1
----
# Style setting
Style Ulauncher* NoTitle
Style QuickEdit* NoTitle #config editor dialog box
----
### Settings and styles in 3Styles/FVWM-Page.sys
## Default Font
DefaultFont "xft:Noto Sans:size=12"

## EdgeScroll will move the view port between the Pages when the mouse
## moves to the edge of the screen.
EdgeScroll 0 0
EdgeResistance 450
EdgeThickness 1
Style * EdgeMoveDelay 500, EdgeMoveResistance 100

# EwmhBaseStruts [left] [right] [top] [bottom]
# Reserves space along the edge(s) of the Screen that will not
# be covered when maximizing or placing windows.

EwmhBaseStruts 40 120 70 0

## Mouse click behaviour
Style * ClickToFocus

## Window Placement
Style * TileCascadePlacement

## Quit location and style
Style ConfirmQuit !Title, PositionPlacement Center, WindowListSkip, Layer 6
Style FvwmIdent WindowListSkip
############

Image

Re: FVWM3 myExt collection

Posted: Sun Dec 20, 2020 12:36 pm
by rasat
EXTENSIONS

1. SimpleButton - using FvwmButtons as a panel that contains icons to launch applications.

Image

2. Auto Hiding Windows - allows withdrawing a window to a location where it does not use precious desktop space.

Code: Select all

## 7Modules: AutoHideList.sys
# # AutoHidingWindows
#
DestroyFunc autohide
AddToFunc autohide
+ I ThisWindow ($0) Deschedule $[w.id]
+ I ThisWindow ($0) ThisWindow (Shaded) WindowShade off
+ I TestRc (!Match) All ($0, !Shaded) autohide\_hide $1 $2

DestroyFunc autohide_hide
AddToFunc autohide_hide
+ I Schedule $0 $[w.id] WindowShade $1
+ I Schedule $0 $[w.id] Deschedule $[w.id]

# Start FvwmAuto
AddToFunc StartFunction I Module FvwmAuto FvwmAutohide -menter enter_handler

# Add windows you want to autohide
DestroyFunc enter_handler
AddToFunc enter_handler
+ I autohide RightPanel 50 E
+ I autohide SimpleButtons 50 N
3. DiaryDecor and Thumbnails - a borderless window frame with minimized window thumbnail (based on addy-fe's Diary theme).

Image

4. AutoMoveWindows - moves applications to specific workspaces (pages) when they create windows.

Code: Select all

## 4Menus: AutoMoveWin.sys
#
Style Firefox StartsOnPage 0 0 0 #page 0
Style Thunar StartsOnPage 0 1 0 #page 1
Style "Mozilla Thunderbird" StartsOnPage 0 0 1 #page 2
Style Evolution StartsOnPage 0 1 1 #page 3
5. RightPanel - part of FVWM default config

6. myMenu - see below screenshool.

Screenshot with visible extensions:

Image

##########################

MY FVWM3 SETUP:

Image

Re: FVWM3 myExt collection

Posted: Tue Dec 22, 2020 11:13 am
by manyroads
@rasat would you like some help? I may be skilled enough to assist but I don't want to muddle your efforts.

Re: FVWM3 myExt collection

Posted: Wed Dec 30, 2020 2:22 pm
by rasat
The new extensions improve the workflow without getting distracted by a small minimize, maximize, or close button. Or limiting the feature of resizing or moving a window. On the desk you can do it with a right-click mouse and click anywhere on the window. Or use larger buttons on the control panel. On the pager, you can move a window from one page to another with the mid-click mouse.

The desk looks clean without a fancy title bar and the minimized windows are easily retrieved thumbnails. Cerebro finds applications and websites.

EXTENSIONS

7. ControlPanelBP - Manages the window move, resize, minimize, maximize, and close. On the pager, you can move a window page location.

Image

8. myDecor - Buttonlless title bar (the image shows also the right-click menu).

Image


9. myMenu (added configs) - Manages the window move, resize, minimize, maximize, close. and moves windows to a selected page.

Code: Select all

## Titlebar right-click
DestroyMenu MenuWindowOps
AddToMenu   MenuWindowOps
+ "Send to " Popup MenuSendTo
+ "Min" Thumbnail
+ "Shade" WindowShade
+ "Close" Close
+ "-" Nop
+ "Quit" Destroy

## Desktop right-click
DestroyMenu MenuWindowOpsLong
AddToMenu   MenuWindowOpsLong
+ " " Nop
+ "Min%$[mimg]/icons/win/iconify.png%" Thumbnail
+ "Move%$[mimg]/icons/win/move.png%" Move
+ "Resize%$[mimg]/icons/win/resize.png%" Resize
+ "Max%$[mimg]/icons/win/max.png%" Maximize
+ "Close%$[mimg]/icons/win/close.png%" Close
+ "---" Nop
+ "Quit%$[mimg]/icons/quit.png%" Module FvwmScript FvwmScript-ConfirmQuit

## Titlebar Right Click >> Send To
DestroyMenu MenuSendTo
AddToMenu MenuSendTo
+ " Page 1" MoveToPage 0 0
+ " Page 2" MoveToPage 1 0
+ " Page 3" MoveToPage 0 1
+ " Page 4" MoveToPage 1 1
10. Ulauncher - a local search engine for Linux distros

Image

SCREENSHOT OF NEW EXTENSIONS

Image

Image

Re: FVWM3 myExt collection

Posted: Wed Jan 06, 2021 5:25 am
by rasat
Here is the latest. The snapshot is for users who prefer the classic all-in-one config.
Note: Cerebro search app is replaced by Ulauncher which is lighter and has good preference settings.

Download:
Full version v.0.9.7 (15 Feb 2021)
http://rasatpc.net/download/fvwm/ext/FV ... v0.9.7.zip

Snapshot v. 0.7 (old)
http://rasatpc.net/download/fvwm/ext/FV ... apshot.zip

Image

Re: FVWM3 myExt collection

Posted: Wed Jan 06, 2021 9:14 am
by manyroads
Nice job, @rasat.

Re: FVWM3 myExt collection

Posted: Sun Jan 10, 2021 3:47 pm
by rasat
These extensions are new choices to an existing system, such as replacing RightPanel with a separate pager and task panel. Here I am displaying how wallpaper is also part of the extensions.

EXTENSIONS

11. TaskPanelCurve - is similar to the classic windows taskbar (based on David Lanham’s Somatic theme). Choice of round or curve panel end.

Image

Code: Select all

DestroyMenu MenuStart
AddToMenu MenuStart
+ "Menu" Popup XDGMenu
Test (x featherpad) + "Help" Exec exec featherpad $[FVWM_USERDIR]/howTo.txt
+ "-" Nop
+ "Restart" Restart
+ "Quit" Module FvwmScript FvwmScript-ConfirmQuit

# Generate XDGMenu
PipeRead "fvwm-menu-desktop -e"

SetEnv tpc-image $[HOME]/.fvwm/images/TaskPanel
Module FvwmButtons TPanelButtons

DestroyModuleConfig TPanelButtons: *
*TPanelButtons: Geometry 912x30+0+0
*TPanelButtons: Colorset 10
*TPanelButtons: Frame 0
#*TPanelButtons: Font -*-helvetica-medium-r-*-*-12-*
*TPanelButtons: Columns 912
*TPanelButtons: Padding 0 0

*TPanelButtons: (100x25, Icon $[tpc-image]/fvwm.png, ActionOnPress, Action(Mouse 1) `Menu MenuStart Rectangle +$left+23 0 0m`)
*TPanelButtons: (631x23, Swallow FvwmIconMan 'Module FvwmIconMan')
Test (x stalonetray) *TPanelButtons: (120x30, Swallow(NoClose,UseOld) \
    stalonetray 'Exec exec stalonetray --config \
    "$[FVWM_DATADIR]/default-config/.stalonetrayrc"', Frame 0, Colorset 10)
  *TPanelButtons: (30x30, Colorset 10)
*TPanelButtons: (31x30, Icon $[tpc-image]/curve1-wood.png, Colorset 18)

## Style setting
Style TPanelButtons !Borders, !Title, WindowListSkip, Sticky
12. VPager6pg - a vertical pager with six pages. This is inspired by the Gnome's "Workspace To Dock" extension. Later there will be one app icon launcher on the right side.

Image

Code: Select all

# Virtual Desktop
DesktopSize "1x6"
Module FvwmPager VPager

DestroyModuleConfig VPager: *
*VPager: Geometry 113x600-0+150
*VPager: Back #d9d9d9
#*VPager: Colorset * 13
*VPager: HilightColorset * 6 #selected page background (original 13)
*VPager: BalloonColorset * 10 # font color
*VPager: WindowColorsets 10 11 # original 10 11 (inactive apps)
*VPager: Font none
*VPager: SolidSeparators
*VPager: WindowBorderWidth 1
*VPager: Balloons All
*VPager: BalloonFont "xft:Sans:Bold:size=10:antialias=True"
*VPager: BallonYOffset +2
*VPager: Window3dBorders
*VPager: MiniIcons

Style "VPager" NoTitle, !Handles, Borders, BorderWidth 5, BorderColorset 6, Sticky, WindowListSkip, FixedSize, !Iconifiable ## BorderColorset 19 (border line)
Module VPager
###############

SCREENSHOT OF NEW EXTENSION (action).

Image

Re: FVWM3 myExt collection

Posted: Wed Jan 20, 2021 9:32 am
by rasat
This collection is directly related to window management as per the acronym WM. In this regard, a WM does better than a Desktop which is more related to the applications and appearance. The core of FVWM is window management. It does well when dealing with a cluttered desk. In my case, this often happens when working with Gimp images and OpenShot video editing. And a file manager to "drag and drop" between the two.

Image

13. WinListSwitch - a two-button switch to view windows on the current page and all pages. Similar to a taskbar but easier to manage.

Image

14. New menu update - includes lowering a window (brings hidden windows to appear). And to close windows one after another without clicking on them. Fast way of closing numbers of open windows.

Code: Select all

## Titlebar right-click
DestroyMenu MenuWindowOps
AddToMenu   MenuWindowOps
+ "Send to " Popup MenuSendTo
+ "Min" Thumbnail
+ "Shade" WindowShade ## NEW UPDATE
+ "Low" Lower ## NEW UPDATE
+ "Close" Close
+ "-" Nop
+ "Quit" Destroy

## Desktop right-click
DestroyMenu MenuWindowOpsLong
AddToMenu   MenuWindowOpsLong
+ " " Nop
+ "Min%$[mimg]/icons/win/iconify.png%" Thumbnail
+ "Move%$[mimg]/icons/win/move.png%" Move
+ "Resize%$[mimg]/icons/win/resize.png%" Resize
+ "Low%$[mimg]/icons/win/bottom.png%" Lower ## NEW UPDATE
+ "Max%$[mimg]/icons/win/max.png%" Maximize
+ "---" Nop
+ "Done%$[mimg]/icons/win/done.png%" Next (Focused) Close ## NEW UPDATE
+ "---" Nop
+ "Quit%$[mimg]/icons/quit.png%" Module FvwmScript FvwmScript-ConfirmQuit

Re: FVWM3 myExt collection

Posted: Wed Jan 27, 2021 1:21 pm
by rasat
This is the last major part of the myExt to switch the configs without using an external script. Also, no restart is required.

15. ExtensionSwitch - this config uses “KillModule” and “Read” to do the job. At present, it has 5 buttons that can be extended to any number. Each button changes a set of module configs and one button changes the decoration. Later, the idea is to have a set for a particular work environment (office, multimedia, etc.)

1. myRightPanel + ControlBPanel (with pager)
2. VerticalPager + TaskPanel + ControlButtons
3. TaskPanel and ControlButtons
4 . DiaryDecoration
5. Reset

For this to work, some of the configs were re-written which makes the whole system stable and easier to add new extensions.

Image

Sample of “RPanel” config…

Code: Select all

## 7Modules: ExtSwitch/RPanel.sys
## Close VerticalPager, TaskPanelCurve, and ControlButtons.
## Load ControlBPanel and myRightButtons.

## Close VerticalPager and TaskPanelCurve.
KillModule FvwmPager VPager
KillModule FvwmButtons ClockPanel
KillModule FvwmButtons TPanelButtons
KillModule FvwmButtons CPanelButtons

## Load ControlPanel and myRightButtons
Read $[FVWM_USERDIR]/7Modules/myRightButtons.sys
Read $[FVWM_USERDIR]/7Modules/controlPanelBPg.sys

## Change SimpleButtons geometry
KillModule FvwmButtons SimpleButtons
Read $[FVWM_USERDIR]/7Modules/simpleButton.sys
*SimpleButtons: Geometry 500x50+720+0
16. Time, Day, and Calendar - is an addon to FvwmScript-DateTime with one calendar button.

Image

Code: Select all

## Time, Date, and Calendar
Module FvwmButtons TimeDayButton

DestroyModuleConfig TimeDayButton:*
*TimeDayButton: Geometry 120x80-0-50
*TimeDayButton: Colorset 10
*TimeDayButton: Columns 120
*TimeDayButton: Font "xft:Sans:Bold:size=10:antialias=True"
*TimeDayButton: (25x20,  Frame 0)
*TimeDayButton: (25x20,  Frame 0)
*TimeDayButton: (120x30, Title Calendar, Action(Mouse 1) "Exec exec $[FVWM_USERDIR]/scripts/Calendar.sh", Font "xft:Sans:size=10:antialias=True", Frame 0)
*TimeDayButton: (120x45, Swallow DateTime 'Module FvwmScript', Frame 0)
*TimeDayButton: (120x25, Frame 0)

Style TimeDayButton !Borders, !Title, WindowListSkip, Sticky
Style yad* NoTitle ## no titel bar

## Yad position
AddToFunc StartFunction I Module FvwmEvent FvwmEvent-MoveWindow

DestroyModuleConfig FvwmEvent-MoveWindow: *
*FvwmEvent-MoveWindow: Cmd Function
*FvwmEvent-MoveWindow: add_window MoveYad

DestroyFunc MoveYad
AddToFunc   MoveYad
+ I ThisWindow ("yad") Move -2 -20
Bash script

Code: Select all

#!/bin/bash
# /scripts/calendar.sh

CAL_GET=`yad --calendar --text "" --list --button=Close:0 --title "My Calendar"`
case $? in
	0)
		exit ;;
esac

17. RestartShutdown - restart and shutdown panel (not included in the default FVWM).

Image

Code: Select all

SetEnv logo-image $[HOME]/.fvwm/images
Module FvwmButtons RestShutButtons

DestroyModuleConfig RestShutButtons: *
*RestShutButtons: Fore #2b4e5e
*RestShutButtons: Back #88b2b1
*RestShutButtons: Geometry 480x100-750+550

*RestShutButtons: Frame 0
*RestShutButtons: Rows 2
*RestShutButtons: BoxSize smart
*RestShutButtons: Font "xft:Sans:size=14:antialias=True"
*RestShutButtons: Padding 2 2

*RestShutButtons: (Icon "$[logo-image]/fvwm-logo-small.png", Back #f5f6f7, Fore #000000)
*RestShutButtons: (3x1, Title "Power Off", Back #f5f6f7, Fore #707070, Font "xft:Sans:size=18:antialias=True")

*RestShutButtons: (4x1,Container(Rows 1,Frame 1))
*RestShutButtons: (Title Cancel, Action(Mouse 1) KillModule FvwmButtons RestShutButtons)
*RestShutButtons: (Title Resart, Action(Mouse 1) Exec sudo /sbin/reboot)
*RestShutButtons: (Title "Power Off", Action(Mouse 1) Exec sudo /sbin/poweroff)

# Style Setting
Style RestShutButtons !Borders, !Title, WindowListSkip, Sticky
####

Download version 0.9.7 (15 Feb 2021)
http://rasatpc.net/download/fvwm/ext/FV ... v0.9.7.zip

Re: FVWM3 myExt collection

Posted: Mon Feb 15, 2021 3:14 pm
by rasat
FVWM is a Window Manager (WM). What sets it apart from other WMs? It is also a Virtual window manager. Among the powerful fvwm features is the virtual desktop, which allows you to place windows on an area much larger than the actual size of the visible display.

18. Virtual Window Switch - this switch changes the desk into a size of six pages (screens). 3 pages wide and 2 pages high (3x2). Allows full window view (100% to 200%) by using the pager or scroll screen edge with the mouse cursor (EdgeScroll 100 100). Here is Scribus in action, window view zoom 170%.

Image