Search This Blog

Tuesday 6 October 2015

less clicking more speed

less clicking more speed






One install fittstool  and configure it.  This is the fittstoolrc for the above wallpaper. When setting it up I use a wall paper like this until I learn all the locations. As I run most maximized I just select a blank workspace if I forget.


############fittstoolrc ########
############## CLOCK-WISE ##############

############# TOP CENTRE ################
#### JUST ONE FOR EACH MOUSE BUTTON #####
############### TERMINAL-LOCK-QUIT ###############

[TopCenter]

LeftButton=lilyterm
MiddleButton=btrxtrlock-wrapper
RightButton=killall -QUIT icewm


## note for openbox RightButton=openbox --exit
## note btrxtrlock-wrapper is a bash script in /usr/local/bin that runs "sleep 1 && /usr/bin/btrxtrlock"

############## TOP RIGHT ################
#### JUST ONE FOR EACH MOUSE BUTTON #####
###################### NET ####################

[TopRight]

LeftButton=icecat
MiddleButton=claws-mail
RightButton=dxirc

################ RIGHT ##################
#### JUST ONE FOR EACH MOUSE BUTTON #####
################ OFFICE ##################

[Right]


LeftButton=lowriter
MiddleButton=looffice
RightButton=localc


############### BOTTOM RIGHT ############
#### JUST ONE FOR EACH MOUSE BUTTON #####
################ NET2  ###################

[BottomRight]

LeftButton=transmission-gtk
MiddleButton=gftp
RightButton=utox

########### BOTTOM CENTRE ###############
#### JUST ONE FOR EACH MOUSE BUTTON #####
################ NET 3 ####################

[BottomCenter]

LeftButton=dillo
MiddleButton=mumble
RightButton=netsurf

############## BOTTOM LEFT ##############
#### JUST ONE FOR EACH MOUSE BUTTON #####
############## EDIT  ###################

[BottomLeft]

LeftButton=leafpad
MiddleButton=adie
RightButton=abiword

################ LEFT ###################
#### JUST ONE FOR EACH MOUSE BUTTON #####
################ SOUND ##################

[Left]

LeftButton=xterm -C alsamixer
MiddleButton=amixer -q sset Master toggle 
RightButton=mrxvt -e cplay ~/music

#########################################
###########  MOUSE WHEEL ################
################ SOUND ##################
[Left]
WheelUp=amixer -q sset Master 2+
WheelDown=amixer -q sset Master 2-

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

############## TOP LEFT #################
#### JUST ONE FOR EACH MOUSE BUTTON #####
################# FILE MANAGER #############

[TopLeft]

LeftButton=rox
MiddleButton=xfe
RightButton=spacefm


#Available positions: Left, TopLeft, etc, TopCenter, BottomCenter, Right, TopRight, BottomRight, etc...
#Available events: LeftButton, RightButton, MiddleButton, WheelUp, WheelDown, WheelUpOnce, WheelDownOnce, Enter, Leave


Then I add fbpanel for a dynamic menu

here is the  fbpanel config

########################################
## fbpanel configuration file         ##
########################################


# DESCRIPTION
# Configuration file consists of mandatory 'Global' block that MUST come first,
# and optionally one or more 'Plugin' block.
# Lines having '#' as first non-blank char or blank lines are ignored
# Keywords are not case-sensitive
# Values are case-sensitive
# Value of variable is a text from first non-blank char after '='
# till the last non-blank char. '#' is NOT treated as coment in this context

# 'Global' block describes global parameters like position, size and
# some NETWM settings

# Global {

#     # screen edge
#     # legal values are: left, right, top, bottom
#     edge = bottom

#     # allignment of a panel
#     # legal values are: left, right, center
#     allign = left

#     # length of margin (in pixels)
#     # legal values are numbers
#     margin = 1

#     # widthtype specifies how panel width is calculated
#     # legal values are: request, pixel, percent
#     #   request - follow widgets' size requests. can shrink or grow dynamically
#     #   pixel   - occupy fixed number of pixels, then 'width' variable holds a number
#     #   percent - be 'width' precent of an edge.
#     widthtype = percent

#     # numerical value of width (not applicable for 'request' widthtype)
#     # legal values are numbers
#     width = 90

#     # heighttype specifies how panel height is calculated
#     # legal values are: pixel
#     #   pixel   - ocupy fixed number of pixels, then 'height' variable holds a number
#     heighttype = pixel

#     # numerical value of height (if applicable)
#     # legal values are numbers
#     height = 24


#     # Identify panel window type as dock
#     # legal values are boolean
#     SetDockType = true

#     # Reserve panel's space so that it will not be covered by maximazied windows
#     # legal values are boolean
#     # SetPartialStrut = true


#     # Transparency stuff:
#     # tintColor is a color to composite on root background given as #RRGGBB or as name
#     # alpha is transparency of the tint color.
#     # transparent = true
#     # tintColor = #FFFFFF
#         or
#     # tintColor = white
#     # alpha = 127
#     # Autohide
#     # autoHide = false
#     # heightWhenHidden = 2
# }



# 'Plugin' block specifies a plugin to load. It has same syntax for both
# builtin and external plugins.

# First parameter is 'type'. It's mandatory and must come first
# Legal values are plugin names. Names of builtin plugins are:
# separator   - visual separator
# wincmd      - 'show desktop' button
# taskbar     - lists all opened windows (tasks)
# launchbar   - bar with launch button
# image       - just shows an image
# dclock      - digital color clock
# tclock      - digital clock
# space       - just seize space
# pager       - thumbnailed view of the desktop
# tray        - tray for XEMBED icons (aka docklets)

# expand - specifies if plugin can accomodate extra space or not [optional]
# padding - extra padding around plugin  [optional]
# config {} - block of plugin's private configuration.
#             This part is plugin  dependant


#
# Plugin {
#     type = wincmd
#     config {
#         image = ~/.fbpanel/images/Desktop2.png
#         tooltip = Left click to iconify all windows. Middle click to shade them.
#     }
# }


Global {

    edge = top
    allign = left
    margin = 5
    widthtype = pixel
    width = 25
    heighttype = pixel
    height = 16
    roundcorners = false
    transparent = false
    tintcolor = #ffffff
    alpha = 0
    autoHide = true
    heightWhenHidden = 2
}



Plugin {
        type = space
        config {
                size = 2
        }
}


Plugin {
    type = menu
    config {
    image = /usr/share/fbpanel/images/logo.png
        systemmenu {
        }
        separator {
        }
        item {
            icon = gnome-settings
            name = configure
            image = /usr/share/fbpanel/logo.png
            command = configure
        }
    }
}

Add a good file-manager like the brilliant rox-filer  and set up it bookmarks and default launch settings along with all back up applications in the custom settings

The add and configure you favorite wm. Set it up so most windows are maximized

add a panel so you can have a visual que of running applications and add some workspaces. I have 8

Learn to love alt-tab or scroll via the panel to switch applications

I tend to use icewm with it's panel it has a built in run dialog

or openbox and tint2 and bashrun2

now count how many actions it takes to do something?

Most common ones are one click to the edge of the screen. The dynamic menu is one click and scroll.  I have Alt-tab through setup to show all open applications rather than a menu as I find it faster once my fingers are on the keys to just tab down the open applications.

If you are using openbox be sure you setup split vert and split horiz settings for rox-filer as it's a single pane file manager. The a double click in the top right corner and a key shift to split the maximized windows either vertically or horizontally. The one feature that although icewm can do it it doesn't give you the ability to revert to the maximized state unless you only perform just one action,

  The relevent part of openbox rc.xml obviously you will need to change for your own screen size.


<!-- Restore window dimensions -->
<keybind key="C-F7">
  <action name="UnmaximizeFull"/>
  <action name="NextWindow">
<placement>
  <policy>Smart</policy>
  <center>yes</center>
</placement>
    <interactive>no</interactive>
    <dialog>none</dialog>
    <finalactions>
      <action name="UnmaximizeFull"/>
    </finalactions>
  </action>
</keybind>


<keybind key="C-F8">
<action name="MaximizeFull"/><action name="MoveResizeTo"><x>0</x><y>0</y><width>510</width><height>600</height></action>
<action name="Raise"/><action name="NextWindow"><dialog>no</dialog><finalactions><action name="MaximizeFull"/>
<action name="MoveResizeTo"><x>-0</x><y>0</y><width>510</width><height>600</height></action>
<action name="Raise"/></finalactions></action>
</keybind>


<!--1280x1024 -->

<!-- If two Maximized windows are present will resize each virticaly to show both in half the screen  -->
<keybind key="C-F9">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <width>50%</width>
  </action>
  <action name="MaximizeVert"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
  </action>
  <action name="NextWindow">
    <interactive>no</interactive>
    <dialog>none</dialog>
    <finalactions>
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <width>50%</width>
      </action>
      <action name="MaximizeVert"/>
      <action name="MoveResizeTo">
        <x>-0</x>
        <y>0</y>
      </action>
    </finalactions>
  </action>
</keybind>

<!--1280x1024 -->

<!-- If two Maximized windows are present will resize each horizontaly to show both in half the screen  -->
<keybind key="C-F10">
  <action name="UnmaximizeFull"/>
  <action name="MoveResizeTo">
    <height>50%</height>
  </action>
  <action name="MaximizeHorz"/>
  <action name="MoveResizeTo">
    <x>0</x>
    <y>0</y>
  </action>
  <action name="NextWindow">
    <interactive>no</interactive>
    <dialog>none</dialog>
    <finalactions>
      <action name="UnmaximizeFull"/>
      <action name="MoveResizeTo">
        <height>50%</height>
      </action>
      <action name="MaximizeHorz"/>
      <action name="MoveResizeTo">
        <x>0</x>
        <y>-0</y>
      </action>
    </finalactions>
  </action>
</keybind>



#---------------------------------------------
# TINT2 CONFIG FILE
#---------------------------------------------

#---------------------------------------------
# BACKGROUND AND BORDER
#---------------------------------------------

# The whole row = id=1
rounded = 1
border_width = 1
#background_color = #000000 20 = black @ 20%
background_color = #000000 100
border_color =     #00ff00 00 = Light green @ zero% OFF

# inactive taskbar item = id=2
rounded = 1
border_width = 1
#background_color = #000000 20  = black @ 20%
background_color = #000000 0
border_color =     #ffffff 100 = white @ 100%
                 
# Inactive taskbar items = id=3
rounded = 1
border_width = 1
background_color = #000000 10  = black dark @ 10%
#background_color = #000000 100
border_color =     #ffffff 100 = white @ 100%

# active taskbar items = id=4
rounded = 1
border_width = 1
background_color = #00ff00 10  = Light green @ 10%
border_color     = #00ff00 100 = Light green @ 100%

# active taskbar items = id=5
rounded = 1
border_width = 1
#background_color = #000000 10  = black dark @ 10%
background_color = #000000 100
border_color     = #00ff00 100 = Light green @ 100% 

 
# Color table (or colour table in English)
#000000 = black
#ffffff = white
#808080 = darkgray
#d4d4d4 = lightgray
#0000ff = blue
#8f8fef = lightblue
#5af3e6 = skyblue
#f000ff = purple
#ff0000 = red
#ff6767 = lightred
#fbd3ee = pink
#3c9900 = darkgreen
#00ff00 = green
#bcf09a = lightgreen
#f000ff = purple
#fbd3ee = pink
#ffaa00 = orange
#efbf63 = lightorange

#---------------------------------------------
# PANEL
#---------------------------------------------
panel_monitor = all
panel_position = bottom right
panel_size = 100% 30
panel_margin = 0 0
panel_padding = 10 3 10
font_shadow = 0
panel_background_id = 0
wm_menu = 1
panel_dock = 0
panel_layer = top

#---------------------------------------------
# TASKBAR
#---------------------------------------------
taskbar_mode = multi_desktop
taskbar_padding = 2 0 0
taskbar_background_id = 2
taskbar_active_background_id = 4

#---------------------------------------------
# TASKS
#---------------------------------------------
task_icon = 10
task_text = 0
task_maximum_size = 40 20
task_centered = 1
task_padding = 0 2
task_font = kiloji 10
task_font_color = #333333 80
task_active_font_color = #333333 100
task_icon_asb = 100 -50 -20
task_active_icon_asb = 100 -20 10
task_background_id = 0
#task_active_background_id = 3
task_active_background_id = 0

#---------------------------------------------
# SYSTRAYBAR
#---------------------------------------------
systray = 1
systray_padding = 6 5 5
systray_background_id =2
systray_sort = left2right
systray_icon_size = 1

#---------------------------------------------
# CLOCK
#---------------------------------------------
time1_font = sans 7
time1_format = %T       
#looks like this: 13:30:21
time2_font = sans 7
time2_format = %d:%m:%y
#looks like this: 27:01:09:
#time1_format = %H:%M @ %A %d %B
#looks like this: 22.32 THURSDAY 01 JANUARY
clock_font_color = #ffffff 100
clock_padding = 3 3
clock_background_id = 3
#clock_lclick_command = alarmclock
clock_lclick_command = xclock -d
#clock_rclick_command = rednotebook
clock_rclick_command = zim
#clock_rclick_command = orage

#----------more options----------------

#clock_font_color = #000000 100
#time1_format = %H:%M @ %A %d %B
#looks like this: 22.32 THURSDAY 01 JANUARY
#time2_format = %A %d %B
#looks like this: saturday 27 January
#time2_format = %a %d %b
#looks like this: Sat 27 Jan
#time2_format = %D
#looks like this: 01/27/09  = %m %d %y
#time1_format = %H:%M  
#looks like this:  12:30
#time1_font = Visitor TT1 BRK 12
#clock_rclick_command = xcalendar
#clock_tooltip = %A %d %B
#time1_timezone = :US/Hawaii
time2_timezone = :Europe/London
#clock_tooltip_timezone = :/usr/share/zoneinfo/Europe/Paris
#time1_format = %F %a  %l:%M %P
#time1_font = sans 10
#time2_format = %F %a  %l:%M %P
#time2_font = sans 10
#clock_font_color = #000000 100
#clock_padding = 1 1
#clock_background_id = 1

#---------------------------------------------
# BATTERY
#---------------------------------------------
battery = 1
battery_hide = 98
battery_low_status = 7
battery_low_cmd = notify-send "battery low"
bat1_font = sans 8
bat2_font = sans 6
battery_font_color = #ffffff 76
battery_padding = 1 0
battery_background_id = 2

#---------------------------------------------
# TOOLTIP
#---------------------------------------------
tooltip = 1
tooltip_padding = 2 2
tooltip_show_timeout = 0.7
tooltip_hide_timeout = 0.3
tooltip_background_id = 5
tooltip_font_color = #ffffff 100
tooltip_font = sans 10

#---------------------------------------------
# MOUSE ACTION ON TASK
#---------------------------------------------
mouse_left toggle_iconify
mouse_middle = none
mouse_right = close
mouse_scroll_up = toggle
mouse_scroll_down = iconify
#---------------------------------------------
# AUTOHIDE OPTIONS
#---------------------------------------------
autohide = 0
autohide_show_timeout = 0.3
autohide_hide_timeout = 0.1
#autohide_hide_timeout = 2
autohide_height = 1
#strut_policy = minimum 
#strut_policy = none #use with "autohide = 1"
#strut_policy = follow_size #use with "autohide = 0" tint panel never covered by maximized windows
strut_policy = follow_size

#---------------------------------------------
# GRAPHS OPTIONS
#---------------------------------------------
# Graphs
graphs_items = CMN
graphs_use_bars = 0
graphs_graph_width = 50
graphs_netiface = eth0
graphs_color0 = #FF3333 100
graphs_color1 = #FF3333  60
graphs_color2 = #7777FF 100
graphs_color3 = #7777FF  60
graphs_color4 = #00FF00 100
graphs_color5 = #00FF00  60
graphs_padding = 10 2 6
graphs_background_id = 2
graphs_lclick_command = lilyterm -geometry 140x59 -x htop


# Color table (or colour table in English)
#000000 = black
#ffffff = white
#808080 = darkgray
#d4d4d4 = lightgray
#0000ff = blue
#8f8fef = lightblue
#5af3e6 = skyblue
#f000ff = purple
#ff0000 = red
#ff6767 = lightred
#fbd3ee = pink
#3c9900 = darkgreen
#00ff00 = green
#bcf09a = lightgreen
#f000ff = purple
#fbd3ee = pink
#ffaa00 = orange
#efbf63 = lightorange

#panel_layer = bottom,normal,top : Puts tint2 into the bottom/normal/top layer. Default is the #bottom layer, but for real transparency normal or top layer may be a nice alternative.

#    strut_policy = follow_size/minimum/none : STRUTs are used by the window manager to decide #the size of maximized windows. Should the 'maximized windows' follow tint2 size (follow_size) #or use the minimum size (minimum), or use the screen size (none). minimum option is #interresting when used with autohide_height parameter.

 
If we think about it logically there is not much sense in running small windows especially when screen real estate is so important. Use your screen to the max. (unless it's massive) but most screens are as small as we can get away with..

The problems with running maximized is you can't see other windows

You need to know what’s running and where it is The fastest way is to give you a small visual clue. Hence we use a panel/tray/task-bar . It's small and need no interaction at all. If you don't want a visible tray then it's 1 action away if on auto hide or a keyboard short like alt-tab

You need to know where to find applications and be able to launch them fast.

Menus:
Menus are slow because you need to navigate but easy as they give feedback

launchers:
Launchers are fast but use real estate unnecessarily.

Keyboard Shortcuts:
Keyboard Shortcuts are fast but require learning

Run dialogs:
Run dialogs are fast but require knowing what to type

We use 10% of our available applications 90% of the time so they are the one to concentrate on.

I use fittstool because I get the benefit of launchers without the real estate loss and I only have to learn the location of my most used applications it's easy to learn. They’re just one click away and the target area is easy to hit.

The other 90% are 1 or 2 keyboard clicks away via short cuts or 3 clicks away via a menu

This is all good until you need to use a single pane file-manager like I do.
If I say want to move a file. I open rox (top left corner lmb) navigate to the file. Select it and drag it to it's destination via the home icon and either the up icon or down through the directories. (you set spring open in options)

If I have many files to move my solution is to open 2 rox windows (top left corner lmb click twice) navigate to the directories then drag the file to the other rox window via tint2 panel

In openbox I open 2 rox windows (My choices in in speed order). top left corner lmb double click or via ctl+r or from rox bookmarks (this has the added advantage of instant navigation if you moving files) or from rox menu or run dialog or openbox menu. When open I can thensplit the maximized windows via ctl+F10 or ctl+F9 move the files and close the windows. alt+F4 is fastest for multiple window closures as you already have you fingers on the keys.

If running openbox I overcome the missing cpu and network that I use in icewm by adding them to fbpanel taking away auto hide and moving it next to tint2


For more ramblings on rox-filer see my old post here

 http://oswaldkelso.blogspot.co.uk/2011/04/rox-filer-openbox-and-tint.html