FreeBSD Screen Shots

Running rio (The Plan 9 "window manager"). On *nix this is based on 9wm.

Nice and simple stacking window manager. Kinda got used to it when using Plan 9 and actually like the way that windows can be drawn on the screen rather than dragged into place.

In the bottom terminal you can see the commands needed to build rio (without needing to build the whole of plan9port).

rio2.png
 
Nothing too exciting, I was just happy to get the newest version of ActiveState's Komodo IDE running on FreeBSD that I took a screenshot!

active_state_10.png
 
For my laptop with a 1280x800 screen, I've moved to a minimalistic xmonad layout. It simply has 2 black dzen bars with a trayer in between at the top. The one on the right just grabs conky info. I've avoided many bitmaps or pixmaps on the bars. I know from the colors what numbers mean. Up/Down Wifi speed. Battery, cpu usage, audio volume. etc.

mvgWvWY.png


The following ports (or packages) are needed for this setup. One could make various substitutions.
x11-wm/hs-xmonad
x11-wm/hs-xmonad-contrib
x11/dmenu
sysutils/conky
lang/python
x11/dzen2
x11/trayer
x11/rxvt-unicode
x11-wm/compton
x11-fonts/liberation-fonts-ttf
shells/bash
The installation of hs-xmonad will also bring in lang/ghc

I'm not really a haskell programmer, but nevertheless managed to cobble together a usable ~/.xmonad/xmonad.hs configuration:

Code:
import XMonad
import System.IO
import System.Exit
import XMonad.Util.Run
import XMonad.Actions.CycleWS
import XMonad.Actions.NoBorders
import XMonad.Actions.FloatKeys
import Data.Ratio ((%))
import XMonad.Hooks.ManageDocks
import XMonad.Hooks.ManageHelpers
import XMonad.Hooks.DynamicLog
import XMonad.Hooks.EwmhDesktops
import XMonad.Layout.NoBorders (noBorders)
import XMonad.Layout.MouseResizableTile
import qualified XMonad.StackSet as W
import qualified Data.Map as M

main = do
    dzenLeftBar <- spawnPipe myXmonadBar
    dzenRightBar <- spawnPipe myStatusBar
    trayBar <- spawnPipe myTrayer
    comPositor <- spawnPipe myCompositor
    xmonad (ewmh defaultConfig)
      { terminal            = myTerminal
      , workspaces          = myWorkspaces
      , logHook             = myLogHook dzenLeftBar
      , manageHook          = myManageHook
      , layoutHook          = myLayout
      , modMask             = mod4Mask
      , keys                = mykeys
      , normalBorderColor   = "grey15"
      , focusedBorderColor  = "grey42"
      , borderWidth         = 1
      , handleEventHook     = handleEventHook defaultConfig <+>
                              fullscreenEventHook
      }

myXmonadBar = "pkill dzen2; dzen2 -x '0' -y '0' -h '24' -w '610' -ta 'l'" ++
              " -fg 'yellow' -bg 'black' -fn xft:'liberation sans':size=11" ++
              ":style=bold:antialias=true:hinting=true"
myStatusBar = "pkill conky; conky -c /home/robertss/.xmonad/conky_dzen | " ++
              "dzen2 -x '660' -y '0' -h '24' -w '620' -ta 'r' -bg 'black'"
myTrayer = "pkill trayer; trayer --edge top --align left --distancefrom left" ++
           " --distance 610 --widthtype pixel --width 50 --transparent true " ++
           "--alpha 0 --tint 0x000000 --expand true --heighttype pixel " ++
           "--height 24"
myCompositor = "pkill compton; compton -b -o 0 -m 1 -D 0"
myTerminal      = "urxvtc"
myWorkspaces  = ["1","2","3","4 "]
myLogHook h = dynamicLogWithPP $ defaultPP
    {
        ppCurrent           =   dzenColor "red" "black" . pad
      , ppVisible           =   dzenColor "white" "black" . pad
      , ppHidden            =   dzenColor "green" "black" . pad
      , ppHiddenNoWindows   =   dzenColor "#7b7b7b" "black" . pad
      , ppUrgent            =   dzenColor "black" "red" . pad
      , ppWsSep             =   ""
      , ppSep               =   " | "
      , ppLayout            =   dzenColor "yellow" "black" .
                                (\x -> case x of
                                    "Full"           -> " "
                                    "MouseResizableTile"  -> "|"
                                    "Mirror MouseResizableTile"  -> "-"
                                    _                ->      x
                                )
      , ppTitle             =   (" " ++) . dzenColor "grey" "black" . dzenEscape
      , ppOutput            =   hPutStrLn h
    }

myManageHook = composeAll
    [
      resource  =? "SmFloatTerm" -->
                                (doRectFloat $ W.RationalRect 0.4 0.4 0.58 0.58)
    , resource  =? "LgFloatTerm" -->
                                    (doRectFloat $ W.RationalRect 0 0.03 1 0.96)
    , manageDocks
    ]

myLayout = avoidStruts $ noBorders Full ||| layout3 ||| layout2
            where layout2 = mouseResizableTile
                            { draggerType = FixedDragger 0 3 }
                  layout3 = mouseResizableTileMirrored
                            { draggerType = FixedDragger 0 3 }

myLauncher = "dmenu_run -fn 'liberation sans':size=14:style=bold:" ++ 
             "antialias=true:hinting=true"
                                      
toggleFloat = withFocused (\windowId -> do
                              { floats <- gets (W.floating . windowset);
                                if windowId `M.member` floats
                                then withFocused $ windows . W.sink
                                else do
                                keysResizeWindow (-240,-100) (4%5,2%3) windowId
                              }
                          )

mykeys conf@(XConfig {XMonad.modMask = modMask}) = M.fromList $
    [ ((modMask .|. controlMask,    xK_Return   ), spawn $ XMonad.terminal conf)
    , ((modMask,                    xK_c        ), kill)
    , ((modMask,                    xK_space    ), sendMessage NextLayout)
    , ((modMask,                    xK_n        ), sendMessage ToggleStruts)
    , ((modMask,                    xK_r        ), refresh)
    , ((modMask,                    xK_Tab      ), windows W.focusDown)
    , ((modMask,                    xK_j        ), windows W.focusDown)
    , ((modMask,                    xK_k        ), windows W.focusUp  )
    , ((modMask .|. controlMask,    xK_j        ), windows W.swapDown)
    , ((modMask .|. controlMask,    xK_k        ), windows W.swapUp)
    , ((modMask,                    xK_Return   ), windows W.swapMaster)
    , ((modMask,                    xK_t        ), toggleFloat)
    , ((modMask,                    xK_b        ), withFocused toggleBorder)
    , ((modMask,                    xK_h        ), sendMessage Shrink)
    , ((modMask,                    xK_l        ), sendMessage Expand)
    , ((modMask,                    xK_u        ), sendMessage ShrinkSlave)
    , ((modMask,                    xK_i        ), sendMessage ExpandSlave)
    , ((modMask,                    xK_comma    ), sendMessage (IncMasterN 1))
    , ((modMask,                    xK_period   ),
                                                  sendMessage (IncMasterN (-1)))
    , ((modMask,                    xK_Right    ), nextWS)
    , ((modMask .|. controlMask,    xK_Right    ), shiftToNext)
    , ((modMask .|. mod1Mask,       xK_Right    ), shiftToNext >> nextWS)
    , ((modMask,                    xK_Left     ), prevWS)
    , ((modMask .|. controlMask,    xK_Left     ), shiftToPrev)
    , ((modMask .|. mod1Mask,       xK_Left     ), shiftToPrev >> prevWS)
    , ((modMask,                    xK_p        ), spawn myLauncher)
    , ((modMask,                    xK_Home     ), spawn 
                                                   "urxvtc -name 'SmFloatTerm'")
    , ((modMask .|. controlMask,    xK_Home     ), spawn
                                                   "urxvtc -name 'LgFloatTerm'")
    , ((modMask,                    xK_f        ), spawn "firefox")
    , ((modMask,                    xK_m        ),
                                          spawn "thunderbird; xmonad --restart")
    , ((modMask,                    xK_v        ), spawn "vlc")
    , ((modMask,                    xK_g        ), spawn "geany")
    , ((modMask .|. controlMask,    xK_f        ), spawn "xfe")
    , ((0,                          xK_Print    ), spawn
                                              "scrot -e 'mv $f ~/screenshots/'")
    , ((0,                          0x1008ff11  ), spawn "mixer -s vol -2")
    , ((0,                          0x1008ff13  ), spawn "mixer -s vol +2")
    , ((modMask,                    xK_w        ), spawn "xmonad --restart")
    , ((modMask,                    xK_q        ),
                                 spawn "xmonad --recompile && xmonad --restart")
    , ((modMask .|. controlMask,    xK_q        ),
                                                      io (exitWith ExitSuccess))
    ]
(I actually use a variant of the above with the keyboard section mapped for the dvorak layout.)

This works in conjunction with sysutils/conky with the configuration file ~/.xmonad/conky_dzen
Code:
background no
out_to_console yes
out_to_x no
update_interval 2.0
use_spacer none

TEXT
^fn(xft:liberation sans:size=11:style=bold:antialias=true:hinting=true)| \
^fg(green) ^i(/home/robertss/.xmonad/dzen2/net_down_03.xbm)${downspeed wlan0} \
^fg(magenta)^i(/home/robertss/.xmonad/dzen2/net_up_03.xbm)${upspeed wlan0}^fg() | \
^fg(blue)${exec sysctl hw.acpi.battery.life | egrep -o '[0-9]{1,3}' }%  \
^fg(orange)${cpu}% \
^fg(cyan)${exec mixer vol | grep -o ':[0-9]*' | egrep -o '[0-9]{1,3}' }%^fg() |\
${execi 1800 /home/robertss/.xmonad/mail-notify} \
^fg(yellow)^fn(liberation sans:size=12:style=bold italic:\
antialias=true:hinting=true)${time %a  %m/%d/%Y  %R }

The ~/.xmonad/mail-notify:
Code:
#! /usr/local/bin/bash
gmail=$(python /home/robertss/.xmonad/gmail.py)
if [ $gmail -eq 0 ]; then
  echo ""
elif [ $gmail -gt 0 ]; then
  echo "^fg(magenta)Email: $gmail^fg() |"
else
  echo "^fg(red)Net Down?^fg() |"
fi
,which in turn calls a python script ~/.xmonad/gmail.py (below) to get a mail count from Gmail. (substitute your own username and password).
Code:
#!/usr/bin/env python
def gmail_checker(username,password):
  import imaplib,re
  i=imaplib.IMAP4_SSL('imap.gmail.com')
  try:
  i.login(username,password)
  x,y=i.status('INBOX','(MESSAGES UNSEEN)')
  messages=int(re.search('MESSAGES\s+(\d+)',y[0]).group(1))
  unseen=int(re.search('UNSEEN\s+(\d+)',y[0]).group(1))
  return (messages,unseen)
  except:
  return False,0
messages,unseen = gmail_checker('gmail_user@gmail.com','password')
print "%i" % (unseen)

My ~/.xinitrc/ is invoked from x11/slim and brings up the urxvtd daemon with
Code:
urxvtd -q -f -o
exec xmonad
And that's pretty much it.
 
Last edited:
FVWM with x11/lxpanel and x11-wm/plank
sxPpxC2.png


MRPYBqM.png
oZaQFuM.png

Here is my .fvwm2rc
(move windows with Super key + left click, resize with Super key + middle click, right click on window while holding Super key - window options menu (or Super+Return aka Enter, or right click title bar/window border), shade on tittlebar middle click, show desktop with Ctrl+Alt+D, scroll workspaces with Super+mouse wheel (PgUp/PgDown), Ctrl+Alt+ left\middle\right click to minimize\maximize\close, tiling: Super+left arrow, Super+right arrow ...) --
Code:
###################.fvwm2rc by ILUXA

ImagePath $HOME/.fvwm/pixmaps/:/usr/local/share/fvwm/pixmaps/

AddToFunc StartFunction
 + I Module FvwmCommandS
# + I Module FvwmBanner
 + I Module FvwmEvent FE-StartOps
# add taskbar and pager
# + I Module FvwmTaskBar
# + I Module FvwmPager 0 3
AddToFunc InitFunction
 + I Exec [ -f $HOME/.xinitrc-fvwm ] && sh $HOME/.xinitrc-fvwm
#AddToFunc RestartFunction
# + I Exec ...

IgnoreModifiers L25
DesktopSize 1x1
Emulate Fvwm
HideGeometryWindow Always
OpaqueMoveSize unlimited
# Working area : left right top bottom (33)
#EwmhBaseStruts 0 0 0 49
BugOpts RaiseOverUnmanaged off
DefaultFont "xft:Cantarell:pixelsize=14"
DefaultColors #FFFFFF #313434

Style * NoIcon
Style * ClickToFocus
Style * ResizeOpaque
Style * MwmFunctions
Style * MwmDecor
Style * OLDecor
Style * !StippledTitle
Style * DecorateTransient
Style * EWMHUseStackingOrderHints
Style * BorderWidth 3, HandleWidth 3
Style * SnapAttraction 13 SameType Screen
Style * Font "xft:Cantarell:pixelsize=14:Bold"
Style * ForeColor darkgray, BackColor #313434
Style * HilightFore white, HilightBack #313434

CursorStyle ROOT left_ptr
CursorStyle TITLE left_ptr
CursorStyle DEFAULT left_ptr
CursorStyle SYS left_ptr
CursorStyle MENU left_ptr
CursorStyle WAIT left_ptr
BusyCursor DynamicMenu True, Read True

MenuStyle * Fvwm
MenuStyle * Hilight3DOff
MenuStyle * SeparatorsLong
MenuStyle * BorderWidth 1
MenuStyle * VerticalMargins 10 10
MenuStyle * Font "xft:Cantarell:pixelsize=15"
MenuStyle * Foreground white, Background #313434
MenuStyle * ActiveFore white, HilightBack #215D9C
MenuStyle * VerticalItemSpacing 4 6, VerticalTitleSpacing 0 4

TitleStyle ActiveUp solid #313434 -- Flat
TitleStyle ActiveDown solid #313434 -- Flat
TitleStyle Inactive solid #313434 -- Flat
TitleStyle Centered Height 20

BorderStyle Inactive -- HiddenHandles NoInset
BorderStyle Active -- HiddenHandles NoInset

ButtonStyle 1 Pixmap close.png -- Flat
ButtonStyle 3 Pixmap min.png -- Flat
ButtonStyle 5 Pixmap max.png -- Flat

ButtonStyle 1 Inactive Pixmap unfocused.png -- Flat
ButtonStyle 3 Inactive Pixmap unfocused.png -- Flat
ButtonStyle 5 Inactive Pixmap unfocused.png -- Flat

ButtonStyle 1 ActiveDown Pixmap close-press.png -- Flat
ButtonStyle 3 ActiveDown Pixmap min-press.png -- Flat
ButtonStyle 5 ActiveDown Pixmap max-press.png -- Flat
##########Titlebar buttons
Mouse 1 1 A Close
Mouse 1 3 A Iconify
Mouse 1 5 A Maximize
##########Titlebar actions: move, raise and focus with single click, maximize with double click.
DestroyFunc MaximizeOrMove
AddToFunc MaximizeOrMove
 + I Raise
 + I Focus
 + D Maximize
 + M ThisWindow (Maximized, !Shaded) Maximize False
# + M TestRc (Match) Move 50-50w 50-50w
 + M TestRc (Match) WarpToWindow 50 1
 + M Move

Mouse 1 T A MaximizeOrMove
# Shade on titlebar middle click
Mouse 2 T A WindowShade
##########Options menu: Super+right click window/ right click titlebar or border/
Super+Space
# Toggle OnTop with Lower
DestroyFunc LowerTo4
AddToFunc LowerTo4
 + I Layer 0 4
 + I Lower
# Move function
DestroyFunc MyMove
AddToFunc MyMove
 + I ThisWindow (Maximized) Maximize False
# + I TestRc (Match) Move 50-50w 50-50w
 + I WarpToWindow 50 1
 + I Move

DestroyMenu WindowOptions
AddToMenu WindowOptions
+ "    Lower" LowerTo4
+ "    On Top" Layer 0 6
+ "" Nop
+ "    Minimize" Iconify
+ "    Maximize" Maximize
#+ "" Nop
#+ "    Move" MyMove
#+ "    Resize" Resize Direction SE
+ "" Nop
+ "    Always on Visible Desk    " Stick
+ "" Nop
+ "    Move to Desk 1" MoveToDesk 0 0
+ "    Move to Desk 2" MoveToDesk 0 1
+ "    Move to Desk 3" MoveToDesk 0 2
+ "    Move to Desk 4" MoveToDesk 0 3
+ "" Nop
+ "    Close" Close

Mouse 3 W 4 Menu WindowOptions mouse -1p -1p
Mouse 3 TS A Menu WindowOptions mouse 0p 0p
Key Space A 4 Menu WindowOptions
##########Desktop: empty left click, right click -- desktop menu
DestroyMenu RootMenu
AddToMenu RootMenu "     FVWM     " Title
+ "  &Identify" Module FvwmIdent
+ "" Nop
+ "  &Console" FvwmConsole
+ "" Nop
+ "  &Config" Exec xterm -e $EDITOR $HOME/.fvwm2rc
+ "" Nop
+ "  &Restart" Restart
+ "" Nop
+ "  &Quit" FvwmForm FvwmForm-QuitVerify

Mouse 1 R A Nop
Mouse 3 R A Menu RootMenu mouse -1p -1p
##########Show desktop with Ctrl+Alt+D
DestroyFunc ShowDesktop
AddToFunc   ShowDesktop
 + I All (CurrentPage, !Iconic) Iconify

Key D A CM ShowDesktop
##########Move windows with Super+left mouse click
DestroyFunc FocusWhenMove
AddToFunc FocusWhenMove
 + I Raise
 + I Focus
 + M ThisWindow (Maximized) Maximize False
# + M TestRc (Match) Move 50-50w 50-50w
 + M TestRc (Match) WarpToWindow 50 10
 + M Move

Mouse 1 WST 4 FocusWhenMove
##########Resize windows with Super+middle mouse click
DestroyFunc FocusWhenResize
AddToFunc FocusWhenResize
 + I Raise
 + I Focus
 + I Resize Direction Automatic

Mouse 2 WST 4 FocusWhenResize
##########Scroll Desks with:
# Ctrl+Alt+mouse wheel
Mouse 4 A CM Desk -1 0 0 3
Mouse 5 A CM Desk +1 0 0 3
# Ctrl+Alt+PgUp\PgDn
Key Prior A CM Desk -1 0 0 3
Key Next A CM Desk +1 0 0 3
##########Show 1-4 Desk with Super + F1-F4
Key F1 A 4 GotoDesk 0 0
Key F2 A 4 GotoDesk 0 1
Key F3 A 4 GotoDesk 0 2
Key F4 A 4 GotoDesk 0 3
##########Move window to 1-4 Desk with Super + 1-4
Key 1 A 4 MoveToDesk 0 0
Key 2 A 4 MoveToDesk 0 1
Key 3 A 4 MoveToDesk 0 2
Key 4 A 4 MoveToDesk 0 3
##########Ctrl+Alt+ left\middle\right click to minimize\maximize\close
#Mouse 1 W CM Iconify
#Mouse 2 W CM Maximize
#Mouse 3 W CM Close
##########Alt+Tab
Key Tab A M WindowList Root c c NoGeometry, NoCurrentDeskTitle, IconifiedAtEnd
##########Tiling:
# Super + Left arrow
DestroyFunc TileLeft
AddToFunc TileLeft
 + I ThisWindow (!Shaded, !Iconic) Maximize 50 100
 + I ThisWindow (Maximized, !Shaded, !Iconic) Move 0 0

Key Left A 4 TileLeft
# Super + Right arrow
DestroyFunc TileRight
AddToFunc TileRight
 + I ThisWindow (!Shaded, !Iconic) Maximize 50 100
 + I ThisWindow (Maximized, !Shaded, !Iconic) Move 50 0

Key Right A 4 TileRight
##########Other key bindings
# Unmaximize or  minimize
DestroyFunc UnmaximizeIconify
AddToFunc UnmaximizeIconify
 + I ThisWindow (Maximized) Maximize False
 + I TestRc (!Match) Iconify

#Keyname      Context  Modifiers    Function            Description
Key Up            A      4          Maximize True       #Super+Up arrow -- maximize
Key Down          A      4          UnmaximizeIconify   #Super+Down -- unmaximize or minimize
Key M             A      4          MyMove              #Super+M -- move
Key R             A      4          Resize Direction SE #Super+R -- resize
Key H             A      4          Iconify             #Super+H -- minimize
Key Q             A      4          Close               #Super+Q -- close
Key R             A     C4          Restart             #Ctrl+Super+R -- restart FVWM
# Keyboard shortcuts for apps
Key X             A     CM          Exec xkill                        #Ctrl+Alt+X -- xkill
Key KP_Multiply   A      C          Exec mixer vol mute               #Ctrl+Num* -- volume mute
Key KP_Subtract   A      C          Exec mixer vol -7                 #Ctrl+Num- -- volume -
Key KP_Add        A      C          Exec mixer vol +7                 #Ctrl+Num+ -- volume +
Key F2            A      M          Exec gmrun                        #Alt+F2 -- gmrun
Key L             A     CM          Exec xscreensaver-command -lock   #Ctrl+Alt+L - lock screen
##########FVWM Modules
# FVWM banner
*FvwmBanner: NoDecor
*FvwmBanner: Pixmap Logo.png
# FVWM Identify app from desktop menu
Style FvwmIdent WindowListSkip, NeverFocus, !Title
*FvwmIdent: Font "xft:Cantarell:pixelsize=13"
*FvwmIdent: Fore white
*FvwmIdent: Back #313434
*FvwmIdent: MinimalLayer 6
# FVWM quit dialog
Style FvwmForm-QuitVerify  WindowListSkip, !Title
*FvwmFormDefault: Font "xft:Cantarell:pixelsize=13"
*FvwmFormDefault: ButtonFont "xft:Cantarell:pixelsize=13"
*FvwmFormDefault: TimeoutFont "xft:Cantarell:pixelsize=13"
*FvwmFormDefault: Fore white
*FvwmFormDefault: Back #313434
*FvwmFormDefault: ItemFore white
*FvwmFormDefault: ItemBack #313434
# FVWM taskbar
Style "FvwmTaskBar" Sticky, WindowListSkip, CirculateSkip \
EWMHIgnoreStackingOrderHints, StaysOnTop, !Title \
NeverFocus, FixedPosition
*FvwmTaskBar: Geometry "+0-0"
*FvwmTaskBar: UseSkipList
*FvwmTaskBar: WindowButtonsLeftMargin 8
*FvwmTaskBar: Back #313434
*FvwmTaskBar: Fore white
*FvwmTaskBar: IconBack #242626
*FvwmTaskBar: IconFore #DADADA
*FvwmTaskBar: Font "xft:Cantarell:pixelsize=15"
*FvwmTaskBar: SelFont "xft:Cantarell:pixelsize=15"
*FvwmTaskBar: StatusFont "xft:Cantarell:pixelsize=15"
*FvwmTaskBar: StartCommand Popup RootMenu rectangle \
    $widthx$height+$left+$top 0 -100m
*FvwmTaskBar: StartName FreeBSD
*FvwmTaskBar: StartIcon bsd.xpm
*FvwmTaskBar: ClockFormat %D   %H:%M
*FvwmTaskBar: Action Click3 Iconify true, Lower
# FVWM desk switcher
Style FvwmPager Sticky, WindowListSkip, CirculateSkip, !Title, NeverFocus
*FvwmPager: Geometry 300x100-0+0
*FvwmPager: Rows 1
*FvwmPager: Columns 4
*FvwmPager: Font "xft:Cantarell:pixelsize=15"
*FvwmPager: Back #DADADA
*FvwmPager: Hilight #215D9C
*FvwmPager: Label 0 1
*FvwmPager: Label 1 2
*FvwmPager: Label 2 3
*FvwmPager: Label 3 4
##########Apps
Style Plank UnManaged
Style gvolwheel EWMHIgnoreStackingOrderHints, StaysOnTop
Style panel NeverFocus, EWMHIgnoreStackingOrderHints, StaysOnTop, FixedPosition
Style lxpanel EWMHIgnoreStackingOrderHints, StaysOnTop
Style Gmrun WindowListSkip, !UsePPosition, StaysOnTop, PositionPlacement Center
Style XTerm MiniIcon mini.x.xpm, ResizeHintOverride
Style Nautilus NoDecorHint, NakedTransient
Style File-roller NoDecorHint, TitleFormat %c
Style Totem NoDecorHint, TitleFormat %c
Style Evince NoDecorHint, TitleFormat %c
Style Gnome-screenshot NoDecorHint, TitleFormat
Style chromium-browser NoPPosition
Style Python NoDecorHint
# Wine games focus fix
Style *.exe FPLenient
##########Start options per app (set the window position, start maximized, etc)
DestroyModuleConfig FE-StartOps: *
*FE-StartOps: add_window FuncStartOps

DestroyFunc FuncStartOps
AddToFunc   FuncStartOps
# Web browsers start maximized
#+ I ThisWindow ("Firefox") Maximize
#+ I ThisWindow ("Seamonkey") Maximize
#+ I ThisWindow ("Midori") Maximize
#+ I ThisWindow ("chromium-browser") Maximize
# Stjerm position fix
+ I ThisWindow ("Stjerm") Move 0 0

"Pixmaps" (window buttons) you can downlad here, extract them into your $ImagePath (~/.fvwm/pixmaps/)
For better integration use Maya GTK2/3 theme (Maya1.zip, attached to this post).

If you want to use FVWM taskbar
gYsjCUo.png

and pager,
v8ILnak.png

uncomment
Code:
AddToFunc StartFunction
# add taskbar and pager
 + I Module FvwmTaskBar
 + I Module FvwmPager 0 3
lines in config.

As a volume indicator for lxpanel I'm using audio/gvolwheel, as a clipboard manager -- deskutils/clipit, as a composite manager -- x11-wm/compton (nice compton config), as a notification daemon -- sysutils/dunst, as a wallpaper setter -- graphics/hsetroot.
By default, ~/.xinitrc-fvwm is a startup script.
Code:
#!/bin/sh
# add "~/.local/bin" to $PATH
PATH=${PATH}:~/.local/bin; export PATH

# enable GTK apps sound notifications (libcanberra & libcanberra-gtk3 should be installed)
GTK_MODULES="canberra-gtk-module"; export GTK_MODULES

xrdb -merge ~/.Xdefaults
setxkbmap -layout us,ru -option grp:caps_toggle -option grp_led:scroll -option terminate:ctrl_alt_bksp -option compose:ralt

# set your resolution & stop tearing (nvidia)
#nvidia-settings --assign CurrentMetaMode="1280x1024 +0+0 { ForceCompositionPipeline = On }"

# resolution for other video cards
#VGA_out="$(xrandr -q | grep -m 1 '\<connected\>' | cut -d ' ' -f1)"; export VGA_out
#xrandr --output $VGA_out --mode "1280x1024"

# set your wallpaper
#hsetroot -fill /home/user/picture.jpg

xscreensaver -nosplash &
compton -b
conky &
stjerm &
lxpanel &
clipit &
gvolwheel &
plank &

# restart FVWM to apply new resolution
#sleep 5 && FvwmCommand Restart

For correct plank work, install Maya-FVWM plank theme (just because it's nice :)) (extract it to ~/.local/share/plank/themes)
and enable "Hide Dock" option in plank settings.


By the way, for now, latest version in ports tree pkg repository is an outdated 2.6.5 version,
but I was able to successfully build and install latest 2.6.6 release (released on 15 March) from source,
just apply patches from /usr/ports/x11-wm/fvwm2/files/
Also I created a bug report with a request for update to 2.6.6.
("Bug" was fixed and FVWM was updated :), so now you can install FVWM 2.6.6 from ports).
 

Attachments

  • Maya1.zip
    306.5 KB · Views: 389
Last edited by a moderator:
Back
Top