Sunday, 27 March 2016

WMFS with Conky installation/configurations -BSD

#pkg install xorg
#pkg install wmfs
#pkg install conky
#pkg install feh

#mkdir ~/.config/wmfs
#chmod 770 ~/.config/wmfs
#cp /usr/local/etc/xdg/wmfs/wmfsrc ~/.config/wmfs

#vi  ~/.config/wmfs
and modify accordingly as you like
Mine wmfsrc is as

#cat .config/wmfs/wmfsrc 
#
# This is the default wmfs config file, copy it to
# ~/.config/wmfs/wmfsrc and edit it.
#

# Include file to split configuration
# @include "~/.config/wmfs/menu-wmfsrc"

[misc]
        font                  = "dejavu-10"
        raisefocus            = true
        raiseswitch           = false
        focus_follow_mouse    = true
        focus_follow_movement = false
        opacity               = 255

        # focus_pointer_click: click on unfocused client area:
        # true  -- default, set focus
        # false -- click go to client; including dockapps
        focus_pointer_click = true
        status_timing      = 1     #seconds
        #status_path       = "/home/thenabx/.config/wmfs/status.sh"
[/misc]

[bar]
        bg     = "#191919"
        fg     = "#D4D4D4"
        border = true
        #height = "-1"

        light_shade =  0.10
        dark_shade  = -0.10

        [systray]
                # Enable/disable systray
                active = true

                # Screen of systray
                screen = 0

                # Spacing between tray icons
                spacing = 3
        [/systray]

        # Remove this section to disable the selbar.
        [selbar]
                bg = "#191919"
                fg = "#D4D4ff"

                # Cut title length
                # max_length = 25

                [mouse] button = "3" func = "clientlist"  [/mouse]
                [mouse] button = "4" func = "client_next" [/mouse]
                [mouse] button = "5" func = "client_prev" [/mouse]
        [/selbar]

[/bar]

[layouts]
        fg = "#191919"
        bg = "#7E89A2"

        # Border around the layout button.
        border = true

        # Value menu or switch.
        system = "menu"

        # Value left or right.
        placement = "right"

        # Keep layout geo for free layout
        keep_layout_geo = false

        # Symbol displayed for the selected layout in the list
        selected_layout_symbol = "*"

        # Width of layout button
        # layout_button_width = x

        # Tiling layouts.
        [layout] type = "tile_right"         symbol = "RIGHT"    [/layout]
        [layout] type = "tile_left"          symbol = "LEFT"     [/layout]
        [layout] type = "tile_top"           symbol = "TOP"      [/layout]
        [layout] type = "tile_bottom"        symbol = "BOTTOM"   [/layout]
        [layout] type = "tile_grid"          symbol = "GRID_H"   [/layout]
        [layout] type = "tile_grid_vertical" symbol = "GRID_V"   [/layout]
        [layout] type = "mirror_vertical"    symbol = "MIRROR_V" [/layout]
        [layout] type = "mirror_horizontal"  symbol = "MIRROR_H" [/layout]

        # Other layouts.
        [layout] type = "max"   symbol = "MAX"  [/layout]
        [layout] type = "free"  symbol = "FREE" [/layout]

[/layouts]

[tags]
        [default_tag]
             name             = "new tag"
             mwfact           = 0.5
             nmaster          = 1
             layout           = "tile_right"
             resizehint       = false
             infobar_position = "top"
        [/default_tag]

        # whether client_next on the last tag will send you on the first
        # and client_prev on the first tag will send you on the last one
        tag_round      = false

        # Going twice on the same tag will bring you back on the previous one
        tag_auto_prev  = true

        occupied_bg    = "#003366"
        occupied_fg    = "#D4D4D4"
        sel_fg         = "#191919"
        sel_bg         = "#7E89A2"
        urgent_bg      = "#DD1111"
        urgent_fg      = "#000000"

        # If true, number of the tag will be used for name
        name_count     = false
        #default_name   = "new tag" # deprecated, use [default_tag] instead
        #default_layout = "tile_right" # deprecated, use [default_tag] instead

        expose_name    = "EXPOSE"
        expose_layout  = "tile_left"
        
        # Border around the tag buttons.
        border = true

        # Hide empty tags in tag list
        autohide = false

        # Mouse buttons action on tag.
        mouse_button_tag_sel       = "1"
        mouse_button_tag_transfert = "2"
        mouse_button_tag_add       = "3"
        mouse_button_tag_next      = "4"
        mouse_button_tag_prev      = "5"

        [tag]
                name             = "one"
                screen           = 0
                mwfact           = 0.65
                nmaster          = 1
                layout           = "tile_right"
                resizehint       = false
                infobar_position = "top"
                above_fc         = false
                #[mouse] [/mouse] Possible multi mouse section
        [/tag]

        # clients option is *DEPRECATED* but works, see [rules] section
        [tag] name = "two"  clients = {"Browser"} [/tag]
        [tag] name = "three" [/tag]
        [tag] name = "four"  [/tag]
        [tag] name = "five"  [/tag]
        [tag] name = "six"   [/tag]
        [tag] name = "seven" [/tag]
        [tag] name = "eight" [/tag]
        [tag] name = "nine"  [/tag]
[/tags]

[root]
       # Command you can execute to set the background.
# backgroup_command = "feh --bg-scale /home/thenabx/.config/wmfs/wall.jpg"
#        [mouse] button = "4" func = "tag_next"              [/mouse]
#        [mouse] button = "5" func = "tag_prev"              [/mouse]
#        [mouse] button = "3" func = "menu" cmd = "rootmenu" [/mouse]
   # Command you can execute to set the background.
   background_command = "/home/thenabx/.config/wmfs/autostart.sh"
   [mouse] button = "4" func = "tag_next"              [/mouse]
   [mouse] button = "5" func = "tag_prev"              [/mouse]
   [mouse] button = "3" func = "menu" cmd = "rootmenu" [/mouse]
[/root]

[client]
        client_round         = true
        client_auto_center   = false
        border_height        = 3
        border_shadow        = true
        border_normal        = "#191919"
        border_focus         = "#003366"
        place_at_mouse       = false
        resize_corner_normal = "#191919"
        resize_corner_focus  = "#003366"
        set_new_win_master   = true
        client_tile_raise    = false
        new_client_get_mouse = false

        # send all client that have no tag rule in this default tag
        #default_open_tag     = 4
        # same as above but for the screen
        #default_open_screen  = 1

        # Space between tiled clients
        padding = 0

        # Modifier for mouse use
        modifier = "Alt"

        light_shade =  0.10
        dark_shade  = -0.10

        # *DEPRECATED* but works, see [rules] section
        # Set automatic free or max client
        # autofree = "xterm|MPlayer"
        # automax  = "Navigator"

        [mouse] button = "1" func = "client_raise" [/mouse]
        [mouse] button = "1" func = "mouse_move"   [/mouse]
        [mouse] button = "3" func = "client_raise" [/mouse]
        [mouse] button = "3" func = "mouse_resize" [/mouse]

        # Remove this section to delete the titlebar.
        [titlebar]
                stipple   = false
                height    = 12
                fg_normal = "#7E89A2"
                fg_focus  = "#9F9AB3"

                [mouse] button = "1" func = "client_raise" [/mouse]
                [mouse] button = "1" func = "mouse_move"   [/mouse]
                [mouse] button = "3" func = "client_raise" [/mouse]
                [mouse] button = "3" func = "mouse_resize" [/mouse]

                [button]
                        # Available "free", "max", "tile" flags or button.
                        flags = "free,max,tile"
                        [mouse] button = "1" func = "client_kill"             [/mouse]
                        [mouse] button = "3" func = "menu" cmd = "clientmenu" [/mouse]

                        [line] coord = {1, 1, 4, 1} [/line]
                        [line] coord = {1, 1, 1, 4} [/line]
                        [line] coord = {1, 4, 4, 4} [/line]
                [/button]
        [/titlebar]
[/client]

[rules]
       # Example of rule for MPlayer
       [rule]
               instance      = "xv"       # First part of WM_CLASS
               class         = "MPlayer"  # Seconf part of WM_CLASS, not needed if first part is correct
               # role        = ""         # WM_WINDOW_ROLE
               screen        = 0          # Screen to use
               tag           = 2          # Tag number of apps
               free          = true       # Set automatic free client
               max           = false      # Set automatic maximized client
               follow_client = false      # follow the client
               ignore_tags   = false      # ignore tag (free mode)
       [/rule]
[/rules]

[menu]
        # Default menu, binded on the root window, button 3.
        [set_menu]
                name = "rootmenu"

                # place_at_mouse = false
                # x = 40 y = 50

                # Available "center", "left", "right" menu align. Default: "center".
                align = "left"

                fg_focus  = "#191919" bg_focus  = "#7E89A2"
                fg_normal = "#9F9AB3" bg_normal = "#191919"

#               [item] name = "Terminal"        func = "spawn" cmd = "gnome-terminal" [/item]
[item] name = "VLC"        func = "spawn" cmd = "vlc" [/item]
[item] name = "Vuze"        func = "spawn" cmd = "vuze" [/item]

[item] name = "Terminal"        func = "spawn" cmd = "gnome-terminal"[/item]
                [item] name = "E-Mails" func = "spawn" cmd = "thunderbird" [/item]
[item] name = "Applications" submenu = "appmenu"                   [/item]
                [item] name = "Next tag"        func = "tag_next"                  [/item]
                [item] name = "Previous tag"    func = "tag_prev"                  [/item]
                [item] name = "Next layout"     func = "layout_next"               [/item]
                [item] name = "Previous layout" func = "layout_prev"               [/item]
                [item] name = "Toggle infobar"  func = "toggle_infobar_position"   [/item]
                [item] name = "Quit WMFS"       func = "quit"                      [/item]
        [/set_menu]

        [set_menu]
                name = "appmenu"
                align = "left"

                fg_focus  = "#191919" bg_focus  = "#7E89A2"
                fg_normal = "#9F9AB3" bg_normal = "#191919"

                [item] name = "Browser"         func = "spawn" cmd = "midori"     [/item]
                [item] name = "Calculator"      func = "spawn" cmd = "xcalc"       [/item]
        [/set_menu]

        [set_menu]
                name = "clientmenu"

                fg_focus  = "#D4D4D4" bg_focus  = "#003366"
                fg_normal = "#D4D4D4" bg_normal = "#191919"

                # Check items: possible 'check_max' or 'check_free'.
                [item] name = "Close"    func = "client_kill"                      [/item]
                [item] name = "Maximize" func = "toggle_max"  check = "check_max"  [/item]
                [item] name = "Free"     func = "toggle_free" check = "check_free" [/item]
        [/set_menu]
[/menu]

[launcher]
        [set_launcher]
                # Limit size of the launcher window (px)
                width_limit = 300

                name = "launcher_exec"
                prompt = "Exec: "
                command = "exec"
        [/set_launcher]

        #ViWMFS : manage wmfs with vi-based command.
        [set_launcher]
                name = "viwmfs"
                prompt = "> "
                command = "wmfs -V"
        [/set_launcher]
[/launcher]

[keys]
         # Reload the configuration of wmfs.
        [key] mod = {"Alt", "Control"} key = "r" func = "reload" [/key]

        # Open a terminal.
        [key] mod = {"Control"} key = "Return" func = "spawn" cmd = "xterm" [/key]

        # Kill the selected client.
        [key] mod = {"Alt"} key = "q" func = "client_kill" [/key]

        # Quit wmfs.
        [key] mod = {"Control", "Alt", "Shift"} key = "q" func = "quit" [/key]

        # Swap current client with the next.
        [key] mod = {"Alt"} key = "t" func = "client_swap_next" [/key]

        # Swap current client with the previous.
        [key] mod = {"Alt", "Shift"} key = "t" func = "client_swap_prev" [/key]
        
        # Set the selected client as Master
        [key] mod = {"Control"} key = "m" func = "client_set_master" [/key]

        # Toggle maximum the selected client
        [key] mod = {"Alt"} key = "m" func = "toggle_max" [/key]

        # Toggle free the selected client.
        [key] mod = {"Alt"} key = "f" func = "toggle_free" [/key]

        # Toggle the position of the infobar.
        [key] mod = {"Alt"} key = "b" func = "toggle_infobar_position" [/key]
        [key] mod = {"Alt", "Shift"} key = "b" func = "toggle_infobar_display" [/key]

        # Toggle the resizehint of the current tag/screen
        [key] mod = {"Shift", "Control"} key = "r" func = "toggle_resizehint" [/key]

        # Toggle the tag_autohide mode
        [key] mod = {"Shift", "Control"} key = "t" func = "toggle_tagautohide" [/key]

        # Select the next client.
        [key] mod = {"Alt"} key = "Tab" func = "client_next" [/key]

        # Select the previous client.
        [key] mod = {"Alt","Shift"} key = "Tab" func = "client_prev" [/key]

        # Select the next tag.
        [key] mod = {"Control"} key = "Right" func = "tag_next" [/key]

        # Select the previous tag.
        [key] mod = {"Control"} key = "Left" func = "tag_prev" [/key]

        # Select the next visible tag.
        [key] mod = {"Control","Alt"} key = "Right" func = "tag_next_visible" [/key]

        # Select the previous visible tag.
        [key] mod = {"Control","Alt"} key = "Left" func = "tag_prev_visible" [/key]

        # Set the next layout.
        [key] mod = {"Alt"} key = "space" func = "layout_next" [/key]

        # Set the previous layout.
        [key] mod = {"Alt", "Shift"} key = "space" func = "layout_prev" [/key]

        # Increase mwfact.
        [key] mod = {"Alt"} key = "l" func = "set_mwfact" cmd = "+0.025" [/key]

        # Decrease mwfact.
        [key] mod = {"Alt"} key = "h" func = "set_mwfact" cmd = "-0.025" [/key]

        # Increase nmaster.
        [key] mod = {"Alt"} key = "d" func = "set_nmaster" cmd = "+1" [/key]

        # Decease nmaster.
        [key] mod = {"Alt", "Shift"} key = "d" func = "set_nmaster" cmd = "-1" [/key]

        #Launcher.
        [key] mod = {"Alt"} key = "p" func = "launcher" cmd = "launcher_exec" [/key]

        #ViWMFS
        [key] mod = {"Alt"} key = "Escape" func = "launcher" cmd = "viwmfs" [/key]

        # Set the tag x.
        [key] mod = {"Alt"} key = "F1" func = "tag" cmd = "1" [/key]
        [key] mod = {"Alt"} key = "F2" func = "tag" cmd = "2" [/key]
        [key] mod = {"Alt"} key = "F3" func = "tag" cmd = "3" [/key]
        [key] mod = {"Alt"} key = "F4" func = "tag" cmd = "4" [/key]
        [key] mod = {"Alt"} key = "F5" func = "tag" cmd = "5" [/key]
        [key] mod = {"Alt"} key = "F6" func = "tag" cmd = "6" [/key]
        [key] mod = {"Alt"} key = "F7" func = "tag" cmd = "7" [/key]
        [key] mod = {"Alt"} key = "F8" func = "tag" cmd = "8" [/key]
        [key] mod = {"Alt"} key = "F9" func = "tag" cmd = "9" [/key]

        # Transfert selected client to x.
        [key] mod = {"Alt", "Shift"} key = "F1" func = "tag_transfert" cmd ="1" [/key]
        [key] mod = {"Alt", "Shift"} key = "F2" func = "tag_transfert" cmd ="2" [/key]
        [key] mod = {"Alt", "Shift"} key = "F3" func = "tag_transfert" cmd ="3" [/key]
        [key] mod = {"Alt", "Shift"} key = "F4" func = "tag_transfert" cmd ="4" [/key]
        [key] mod = {"Alt", "Shift"} key = "F5" func = "tag_transfert" cmd ="5" [/key]
        [key] mod = {"Alt", "Shift"} key = "F6" func = "tag_transfert" cmd ="6" [/key]
        [key] mod = {"Alt", "Shift"} key = "F7" func = "tag_transfert" cmd ="7" [/key]
        [key] mod = {"Alt", "Shift"} key = "F8" func = "tag_transfert" cmd ="8" [/key]
        [key] mod = {"Alt", "Shift"} key = "F9" func = "tag_transfert" cmd ="9" [/key]

        # Toggle additional tags (x) on the current tag
        [key] mod = {"Alt", "Super"} key = "F1" func = "tag_toggle_additional" cmd ="1" [/key]
        [key] mod = {"Alt", "Super"} key = "F2" func = "tag_toggle_additional" cmd ="2" [/key]
        [key] mod = {"Alt", "Super"} key = "F3" func = "tag_toggle_additional" cmd ="3" [/key]
        [key] mod = {"Alt", "Super"} key = "F4" func = "tag_toggle_additional" cmd ="4" [/key]
        [key] mod = {"Alt", "Super"} key = "F5" func = "tag_toggle_additional" cmd ="5" [/key]
        [key] mod = {"Alt", "Super"} key = "F6" func = "tag_toggle_additional" cmd ="6" [/key]
        [key] mod = {"Alt", "Super"} key = "F7" func = "tag_toggle_additional" cmd ="7" [/key]
        [key] mod = {"Alt", "Super"} key = "F8" func = "tag_toggle_additional" cmd ="8" [/key]
        [key] mod = {"Alt", "Super"} key = "F9" func = "tag_toggle_additional" cmd ="9" [/key]

        # change screen
        [key] mod = {"Super"} key = "Tab" func = "screen_next" [/key]
        [key] mod = {"Super", "Shift"} key = "Tab" func = "screen_prev" [/key]

        # swap client in the next/prev screen
        [key] mod = {"Super", "Shift"} key = "a" func = "client_screen_next" [/key]
        [key] mod = {"Super", "Shift"} key = "z" func = "client_screen_prev" [/key]

        [key] mod = {"Alt"} key = "e" func = "toggle_tag_expose" [/key]

        # unlisted fonctions that can be used in [key] func = ""
        # client_focus_{right, left, top, bottom}
        # client_ignore_tag # Toggle the client in ignore_tag (display the client on all tags)
        # tag_prev_sel # go back to the previous selected tag
        # tag_transfert_{next, prev}
        # tag_urgent # go to the urgent tag
        # tag_swap_{next, prev} # swap tag with the previous/next one
        # tag_last # go to the last tag
        # tag_stay_last # toggle the current tag as the last one
        # toggle_abovefc
        # screen_prev_sel # go to the previous screen selected
        # set_layout # set layout. need to be called with cmd = "<layout_name>"
        # ignore_next_client_rules # ignore the rule the next time a rule is called

[/keys]



#vi ~/.xinitrc
and add this line
exec wmfs
then save(this will work when you will type startx at system boot start)
After all these steps wmfs shoud work at start.

Next part is startus bar, wallpaper(background), This part is a bit tricky. Let's start

#touch ~/.config/wmfs/status.sh
#chmod +x ~/.config/wmfs/status.sh
#vi   ~/.config/wmfs/status.sh
and add these lines



feh --bg-fill /home/thenabx/.config/wmfs/wall.jpg
#yellow="#fff109"
#red="#ff190a"
#blue="#5959ff"
#green="#73ff27"
conky | while read -r; do wmfs -s -name "$REPLY"; done

save and exit

Line with "feh" is for your background which defines path to your wallpaper image
Line with "conky" is for your wmfs status bar which pipes conky onto.
Important once status.sh is done don't forget to uncomment these line in wmfsrc  mentioned at the beginning.
#status_timing      = 1     #seconds
#status_path       = "/home/thenabx/.config/wmfs/status.sh"
as
status_timing      = 1     #seconds
status_path       = "$HOME/.config/wmfs/status.sh"


OR

You can also define autostart.sh under [root]....[/root]
as i defined in my wmfsrc it's upto your choice(if conky never piped it's output to wmfs bar due to some situation you can try under [root]....[/root]).
After these restart wmfs by ctrl+alt+r
Now your background should appear in all tabs

Now here begins the conky part

conky requires ~/.conkyrc
So here's general settings according to my requirements modify as you would like

$ cat .conkyrc
out_to_x no
out_to_console yes
background yes
use_xft yes

xftfont Lucida Grande:size=8

#xftalpha 0.8

update_interval 0.5

total_run_times 0

double_buffer yes

own_window yes
own_window_type desktop
own_window_transparent yes
own_window_hints undecorated,below,sticky,skip_taskbar,skip_pager

minimum_size 400 5

draw_shades no
draw_outline no
draw_borders no

alignment top_left

gap_x 35
gap_y 5
no_buffers yes
uppercase no

use_spacer right
#draw_graph_borders yes 
#${color #0077ff}NetDown:$color ${downspeed wlan0}      ${color #0077ff}NetUp:$color ${upspeed wlan0}
#${color #0077ff}${downspeedgraph wlan0 32,155 104E8B 0077ff} $alignr${color #0077ff}${upspeedgraph wlan0 32,155 104E8B 0077ff}
#yellow #fff109
#red    #ff190a
#blue   #5959ff
#green  #73ff27

TEXT
|${color} \\#fff109\CPU:${color}${cpu}%|${color} \\#ff190a\L:${color}${loadavg}|${color}M:${color}$memperc%($mem)|${color}\\#73ff27\P1:${color}${fs_used /}/${fs_size /}|${color}P2:${color}${fs_used /media}/${fs_size /media}|${color}\\#5959ff\B: ${color}$battery|${color}\\#ff190a\T:${execi 300 sysctl -n hw.acpi.thermal.tz0.temperature}
#${hwmon 1 temp 1}
#|${color #0077ff}NetDown:$color ${downspeed wlan0}      ${color #0077ff}NetUp:$color ${upspeed wlan0}
#${color #0077ff}${downspeedgraph wlan0 32,155 104E8B 0077ff} $alignr${color #0077ff}${upspeedgraph wlan0 32,155 104E8B 0077ff}

Trust me .conkyrc requires some time to understand and how it works with wmfs status bar, I'm not going to brief you here but will let you know in a simple way. 
.conkyrc script is executed by conky as it's runtime configurations file and conky is called by wmfs script via status.sh for status bar. To get desired output with wmfs status bar I mentioned wmfs commands(like color codes) directly into .conkyrc which I was unable to get separatly with status.sh. Conky runs it's own color codes and some other commands via .conkyrc which don't work over wmfs but only X11 supports.

That's it. 

No comments:

Post a Comment