# Nebulae, loosely based on MS Windows desktop
# Written by: Maciej Delmanowski <harnir@post.pl>
#
# 2007-2013 - Dominique Michel <dominique_libre@userssourceforge.net> support for:
# See ChangeLog for details
#
# You can use folding to navigate this file

Echo Nebulae recipe loading from $.
InfoStoreAdd Recipe "Nebulae"

# No magic button, we nedd to reset its ewmh values after a recipe change.
InfoStoreAdd EWMH_CBB_Left 3
InfoStoreAdd EWMH_CBB_Right 3
InfoStoreAdd EWMH_CBB_Top 3
InfoStoreAdd EWMH_CBB_Bottom 3

# Includes and FVWM modules {{{1
# Type of icons on the desktop {{{2
LoadPreferences IconsType

# Media player {{{2
InfoStoreAdd CustomBarLocation Bottom
Include components/functions/Music-$[infostore.MusicPlayer]

# Desktop settings {{{1
EdgeScroll	0	0
EdgeResistance			0
Style * EdgeMoveDelay		250
Style * EdgeMoveResistance	100
HideGeometryWindow	Move, Resize
OpaqueMoveSize	100
EdgeThickness	1

EWMH-Desktop 3 3 3 3
PipeRead 'echo "EWMH-Panel-Bottom $(($(($[panel_font_size]*3))/2))"'
InfoStoreAdd EWMH_Recipe_Left $[EWMH_BS_Panel_Left]
InfoStoreAdd EWMH_Recipe_Right $[EWMH_BS_Panel_Right]
InfoStoreAdd EWMH_Recipe_Top $[EWMH_BS_Panel_Top]
InfoStoreAdd EWMH_Recipe_Bottom $[EWMH_BS_Panel_Bottom]
PipeRead '$[FVWM_SYSTEMDIR]/scripts/set_DesktopIconsGeom $[vp.height]'

# Desktop manager {{{2
DestroyFunc RedrawIconBox
AddToFunc RedrawIconBox
+ I PipeRead 'echo "Style * IconBox $(($[vp.width]-((((50*$[IconColumnsNumber]))+36))))x$(($[vp.height]-33))+$((((50*$[IconColumnsNumber]))+18))-30, IconFill left bottom, IconGrid 30 30"'
LoadPreferences DefaultDesktopManager

# Settings for icons on the desktop {{{1
#Style * IconBox 1200x800+30-30, IconFill left bottom, IconGrid 30 30
Style * StickyIcon
Test (EnvMatch DefaultDesktopManager Crystal) PipeRead 'echo "Style * IconBox $(($[vp.width]-((((50*$[IconColumnsNumber]))+36))))x$(($[vp.height]-33))+$((((50*$[IconColumnsNumber]))+18))-30, IconFill left bottom, IconGrid 30 30"'
Test (!EnvMatch DefaultDesktopManager Crystal) PipeRead 'echo "Style * IconBox $(($[vp.width]-6))x$(($[vp.height]-30))+3+27, IconFill left bottom, IconGrid 30 30"'

# Main panel {{{1
All (FvwmButtons-MainPanel) Close
DestroyModuleConfig FvwmButtons-MainPanel: *
PipeRead 'echo "*FvwmButtons-MainPanel: Geometry $[vp.width]x$(($(($[panel_font_size]*3))/2))+-1--1"'
*FvwmButtons-MainPanel: BoxSize smart
*FvwmButtons-MainPanel: ActiveColorset $[infostore.cs_panel_active]
*FvwmButtons-MainPanel: Colorset $[infostore.cs_panel_inactive]
*FvwmButtons-MainPanel: Rows 1
PipeRead 'echo "*FvwmButtons-MainPanel: Columns $(($[vp.width]/24))"'
*FvwmButtons-MainPanel: Font "xft:$[panel_font]:pixelsize=$[panel_font_size]:$[panel_font_style]"
*FvwmButtons-MainPanel: Padding 1 1
*FvwmButtons-MainPanel: Frame 0

# Diamond {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: (4x1, Size 101 $(($(($[panel_font_size]*3))/2)), Title (Side) Crystal, Icon 22x22/fvwm-crystal/fvwm-crystal.png, \
	Action (Mouse 1) Menu /StartMenu ${MenuPosition_NE}, \
	Action (Mouse 3) Menu /FVWM-Crystal ${MenuPosition_NE}, \
	Action (Mouse 2) Menu /Random-Wallpaper ${MenuPosition_NE})"'
	
# Applications menu generator {{{2
# This creates the main "Start Menu", upside down because it's located on the
# bottom of the screen
PipeRead 'fvwm-crystal.apps --database=$[FVWM_DISTROMENUDIR]/Applications --database=$[FVWM_SYSTEMDIR]/Applications --database=$[FVWM_USERDIR]/Applications --search-icons-in=$[FVWM_USERDIR]/icons/$[infostore.Icon_Theme]/32x32/categories:$[FVWM_USERDIR]/icons/$[infostore.Icon_Theme]/32x32/apps:$[FVWM_SYSTEMDIR]/icons/$[infostore.Icon_Theme]/32x32/categories:$[FVWM_SYSTEMDIR]/icons/$[infostore.Icon_Theme]/32x32/apps:$[FVWM_DISTROMENUDIR]/icons/$[infostore.Icon_Theme]/32x32/categories:$[FVWM_DISTROMENUDIR]/icons/$[infostore.Icon_Theme]/32x32/apps --default-file-icon=32x32/apps/default.png --default-dir-icon=32x32/categories/directory.png --min-submenu-length=5 --root-cat-name="StartMenu" --submenu-suffix="Item 100 o100" --sort=rprio --no-panel --check-execs'
AddToMenu /StartMenu "" Nop
AddToMenu /StartMenu "%32x32/fvwm-crystal/fvwm-crystal.png%FVWM-Crystal" Popup /FVWM-Crystal

# This creates app menu available under Alt+Win_R
PipeRead 'fvwm-crystal.apps --database=$[FVWM_DISTROMENUDIR]/Applications --database=$[FVWM_SYSTEMDIR]/Applications --database=$[FVWM_USERDIR]/Applications --search-icons-in=$[FVWM_USERDIR]/icons/$[infostore.Icon_Theme]/22x22/categories:$[FVWM_USERDIR]/icons/$[infostore.Icon_Theme]/22x22/apps:$[FVWM_SYSTEMDIR]/icons/$[infostore.Icon_Theme]/22x22/categories:$[FVWM_SYSTEMDIR]/icons/$[infostore.Icon_Theme]/22x22/apps:$[FVWM_DISTROMENUDIR]/icons/$[infostore.Icon_Theme]/22x22/categories:$[FVWM_DISTROMENUDIR]/icons/$[infostore.Icon_Theme]/22x22/apps --default-file-icon=22x22/apps/default.png --default-dir-icon=22x22/categories/directory.png --min-submenu-length=5 --sort=prio --no-panel --check-execs'

# Desktop menu with left click {{{1
#SetEnv DesktopMenu /FVWM-Crystal
SetEnv DesktopMenu /StartMenu

# Main music button, with some menus {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: (1x1, Size 22 $(($(($[panel_font_size]*3))/2)), Icon 22x22/categories/Multimedia.png, \
	Action (Mouse 1) Menu /Player ${MenuPosition_NE}, \
	Action (Mouse 2) Music-GUI, \
	Action (Mouse 3) Music-QJackGUI, \
	Action (Mouse 4) Change-Volume-Up $[infostore.Vol_Step], \
	Action (Mouse 5) Change-Volume-Down $[infostore.Vol_Step])"'
# music controls button {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: (1x1, Size 22 $(($(($[panel_font_size]*3))/2)), Icon 22x22/fvwm-crystal/media-eject.png, \
	Action (Mouse 1) Menu /Playlist-button ${MenuPosition_NE}, \
	Action (Mouse 2) Menu /Music/Volume ${MenuPosition_NE}, \
	Action (Mouse 3) Menu /Mixer ${MenuPosition_NE}, \
	Action (Mouse 4) Music-Next, \
	Action (Mouse 5) Music-Prev)"'
# music controls button {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: (1x1, Size 22 $(($(($[panel_font_size]*3))/2)), Icon 22x22/fvwm-crystal/media-playback-start.png, \
        Action (Mouse 1) Music-Play, \
        Action (Mouse 2) Music-Pause, \
        Action (Mouse 3) Menu /Playback ${MenuPosition_NE}, \
	Action (Mouse 4) Music-Speed-Up, \
	Action (Mouse 5) Music-Speed-Down)"'
# music controls button 4 {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: (1x1, Size 22 $(($(($[panel_font_size]*3))/2)), Icon 22x22/fvwm-crystal/media-skip-forward.png, \
	Action (Mouse 1) Menu /Speed ${MenuPosition_NE}, \
	Action (Mouse 4) Button-Seek-+, \
	Action (Mouse 5) Button-Seek--)"'
# }}}2

# Window list {{{1
SetEnv WindowsGeom 196

All (FvwmIconMan-Windows) Close
DestroyModuleConfig FvwmIconMan-Windows: *

*FvwmIconMan-Windows: Resolution Global
*FvwmIconMan-Windows: UseWinList True
*FvwmIconMan-Windows: DontShow Class=xmms,FvwmButtons,FvwmIconMan,FvwmPager,FvwmIdent,FvwmForm
*FvwmIconMan-Windows: ShowNoIcons false
*FvwmIconMan-Windows: DrawIcons Always
*FvwmIconMan-Windows: Sort Id
*FvwmIconMan-Windows: FollowFocus True
*FvwmIconMan-Windows: Format "%t"
*FvwmIconMan-Windows: Title ""
PipeRead "echo \*FvwmIconMan-Windows: ButtonGeometry $(($[vp.width]-$[trayer_width]-$[WindowsGeom]-88))x$(($(($[panel_font_size]*3))/2))"
*FvwmIconMan-Windows: ManagerGeometry 1x1+$[WindowsGeom]--1
*FvwmIconMan-Windows: MaxButtonWidthByColumns 4
*FvwmIconMan-Windows: Font "xft:$[panel_font]:pixelsize=$[panel_font_size]:$[panel_font_style]"
# Tips {{{2
*FvwmIconMan-Windows: Tips needed
*FvwmIconMan-Windows: TipsDelays 500 200
*FvwmIconMan-Windows: TipsFont "xft:$[panel_font]:pixelsize=$[panel_font_size]:$[panel_font_style]"
*FvwmIconMan-Windows: TipsBorderWidth 0
*FvwmIconMan-Windows: TipsColorset $[infostore.cs_panel_inactive]
*FvwmIconMan-Windows: TipsJustification leftup
# Button look {{{2
*FvwmIconMan-Windows: PlainButton flat
*FvwmIconMan-Windows: FocusButton flat
*FvwmIconMan-Windows: SelectButton flat
*FvwmIconMan-Windows: FocusAndSelectButton flat
*FvwmIconMan-Windows: IconButton flat
# Colorsets {{{2
*FvwmIconMan-Windows: Colorset $[infostore.cs_panel_inactive]
*FvwmIconMan-Windows: PlainColorset $[infostore.cs_panel_wininactive]
*FvwmIconMan-Windows: FocusColorset $[infostore.cs_panel_winactive]
*FvwmIconMan-Windows: SelectColorset $[infostore.cs_panel_active]
*FvwmIconMan-Windows: FocusAndSelectColorset $[infostore.cs_panel_active]
*FvwmIconMan-Windows: IconColorset $[infostore.cs_panel_inactive]
# Actions {{{2
*FvwmIconMan-Windows: Action Mouse 1 A SendCommand "Function Window-Focus-DefaultDesk-Raised"
*FvwmIconMan-Windows: Action Mouse 2 $[Mod2] SendCommand "Close"
*FvwmIconMan-Windows: Action Mouse 2 $[Mod0] SendCommand "Window-Iconify"
*FvwmIconMan-Windows: Action Mouse 3 $[Mod] SendCommand "Function Window-Focus-CurrentDesk-Raised"
# }}}2

Module FvwmIconMan FvwmIconMan-Windows

# The button {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: ($(((($[vp.width]-$[trayer_width]-$[WindowsGeom]-88))/24))x1, Size $(($[vp.width]-$[trayer_width]-$[WindowsGeom]-88)) $(($(($[panel_font_size]*3))/2)), Swallow (Close, Respawn, FvwmModule) FvwmIconMan-Windows Nop)"'

# Pager button {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: (1x1, Size 22 $(($(($[panel_font_size]*3))/2)), Icon 22x22/fvwm-crystal/user-desktop.png, \
Action (Mouse 2) GotoPage prev, \
Action (Mouse 4) GotoPage-Right, \
Action (Mouse 5) GotoPage-Left, \
Panel (position Button center) FvwmPager \\"Module FvwmPager\\")"'

# Pager window {{{2
DestroyFunc FvwmPagerWindow
AddToFunc FvwmPagerWindow
+ I KillModule FvwmPager
+ I DestroyModuleConfig FvwmPager: *
+ I PipeRead 'echo \*FvwmPager: Geometry $((28*$[infostore.Desk_Pages_X]))x$((24*$[infostore.Desk_Pages_Y]))+20000+20000'
+ I *FvwmPager: MiniIcons
+ I *FvwmPager: Font none
+ I *FvwmPager: WindowBorderWidth 1
+ I *FvwmPager: Window3DBorders
#+ I *FvwmPager: NoSeparators
+ I *FvwmPager: UseSkipList
+ I *FvwmPager: Colorset * $[infostore.cs_panel_inactive]
+ I *FvwmPager: HilightColorset * $[infostore.cs_panel_active]
+ I *FvwmPager: WindowColorsets $[infostore.cs_panel_wininactive] $[infostore.cs_panel_winactive]

FvwmPagerWindow

# Notification area {{{1
# Settings of stalonetray {{{2
Test (!EnvMatch trayer_width 0) \
PipeRead 'if [ "$[infostore.NotificationAreaManager]" = "stalonetray" ]; then echo FvwmStalonePanel \
    24 $(($[trayer_width]/24)) 1 "-60" "--1" W $[trayer_width] $(($(($[panel_font_size]*3))/2)) "-60" "--1"; fi'
# Settings of trayer {{{2
Test (!EnvMatch trayer_width 0) \
PipeRead 'if [ "$[infostore.NotificationAreaManager]" = "trayer" ]; then echo FvwmTrayerPanel \
    pixel pixel $(($(($[panel_font_size]*3))/2)) bottom right 62 "1" \\"--width $[trayer_width]\\"; fi'
# The button {{{2
Test (!EnvMatch trayer_width 0) \
PipeRead 'if [ "$[infostore.NotificationAreaManager]" = "stalonetray" ]; then echo "*FvwmButtons-MainPanel: ($(($[trayer_width]/24))x1, Size $[trayer_width] $(($(($[panel_font_size]*3))/2)), \
    Swallow (Close, Respawn, FvwmModule) FvwmStalonePanel Nop)"; \
    else echo "*FvwmButtons-MainPanel: ($(($[trayer_width]/24))x1, Size $[trayer_width] $(($(($[panel_font_size]*3))/2)), Swallow (UseOld, FvwmModule) trayer Nop)"; fi'

# Clock {{{2
PipeRead 'echo "*FvwmButtons-MainPanel: (3x1, Size 60 $(($(($[panel_font_size]*3))/2)), \
Swallow (Close, Respawn, FvwmModule) FvwmScript-Clock \'Script components/scripts/FvwmScript-Clock\', \
Action (Mouse 3) SendToModule *FvwmScript-Clock SendString 1 1 str)"'

Module FvwmButtons FvwmButtons-MainPanel

# Change desktop pages using mouse wheel on pager
Mouse (FvwmPager) 4 W $[Mod] GotoPage-Right
Mouse (FvwmPager) 5 W $[Mod] GotoPage-Left

Style FvwmButtons-Music NoIcon
Style FvwmButtons-Clock Layer 2

Echo /--------- Fvwm-Crystal: Recipe loaded ---------/
#PrintInfo infostore

# ViM modeline {{{1
# vim:foldmethod=marker:foldenable:foldlevel=0:ft=fvwm
