add() {
    if [ $# -eq 2 ]; then
        $CREATE /action/"$@"
        # create /foo bar works even if /foo already exists
    else
        echo "error: $0: add takes exactly three arguments" >&2
        echo "usage: add <name> <command>" >&2
    fi
}

end_actions_setup() {  # called by rc after sourcing this file
    return
}

#---------------------------------------------------------------------

$REMOVE /action 2>/dev/null

# page related
add update_page_name "$WRITE /bar/label/pager/text \"\$($READ /wmii/page/sel/name)\""
add select_next_page "$WRITE /wmii/page/sel/ctl 'select next'"
add select_prev_page "$WRITE /wmii/page/sel/ctl 'select prev'"
add destroy_page "$WRITE /wmii/ctl 'destroy'"
add unselect "$WRITE /wmii/page/sel/ctl 'select me'"
add new_page "$WRITE /wmii/ctl 'new'"

# layout related:
add apply_grid_layout "$WRITE /wmii/page/sel/frame/sel/layout '$GRID_LAYOUT'"
add apply_tile_layout "$WRITE /wmii/page/sel/frame/sel/layout '$TILE_LAYOUT'"
add apply_hsplit_layout "$WRITE /wmii/page/sel/frame/sel/layout '$HSPLIT_LAYOUT'"
add apply_vsplit_layout "$WRITE /wmii/page/sel/frame/sel/layout '$VSPLIT_LAYOUT'"
add apply_single_layout "$WRITE /wmii/page/sel/frame/sel/layout ''"
add apply_multi_layout "$WRITE /wmii/page/sel/frame/sel/layout '$MULTI_LAYOUT'"

# frame related:
add interactive "$WRITE /wmii/page/sel/frame/sel/ctl inter"
add destroy_frame "@{destroy_page}"  # alias
add select_next_frame "$WRITE /wmii/page/sel/frame/sel/ctl 'select next'"
add select_prev_frame "$WRITE /wmii/page/sel/frame/sel/ctl 'select prev'"
add select_child_frame "$WRITE /wmii/page/sel/frame/sel/ctl 'select child'"
add select_parent_frame "$WRITE /wmii/page/sel/frame/sel/ctl 'select parent'"
add max_frame "$WRITE /wmii/page/sel/frame/sel/ctl 'resize 0,0,east,south-$LABEL_HEIGHT'"
add move_frame_west "$WRITE /wmii/page/sel/frame/sel/ctl 'resize -40,-0,-0,-0'"
add move_frame_north "$WRITE /wmii/page/sel/frame/sel/ctl 'resize -0,-30,-0,-0'"
add move_frame_east "$WRITE /wmii/page/sel/frame/sel/ctl 'resize +40,+0,+0,+0'"
add move_frame_south "$WRITE /wmii/page/sel/frame/sel/ctl 'resize +0,+30,+0,+0'"
add grow_frame_west "$WRITE /wmii/page/sel/frame/sel/ctl 'resize -40,-0,+40,-0'"
add grow_frame_north "$WRITE /wmii/page/sel/frame/sel/ctl 'resize -0,-30,-0,+30'"
add grow_frame_east "$WRITE /wmii/page/sel/frame/sel/ctl 'resize +0,+0,+40,+0'"
add grow_frame_south "$WRITE /wmii/page/sel/frame/sel/ctl 'resize +0,+0,+0,+30'"
add shrink_frame_west "$WRITE /wmii/page/sel/frame/sel/ctl 'resize +40,+0,-40,+0'"
add shrink_frame_north "$WRITE /wmii/page/sel/frame/sel/ctl 'resize +0,+30,+0,-30'"
add shrink_frame_east "$WRITE /wmii/page/sel/frame/sel/ctl 'resize -0,-0,-40,-0'"
add shrink_frame_south "$WRITE /wmii/page/sel/frame/sel/ctl 'resize -0,-0,-0,-30'"
add toggle_zoom "$WRITE /wmii/page/sel/frame/sel/ctl zoom"
add hide_tab "$WRITE /wmii/page/sel/frame/sel/tab-height 0"
add hide_border "$WRITE /wmii/page/sel/frame/sel/border-width 0"
add show_tab "$WRITE /wmii/page/sel/frame/sel/tab-height $LABEL_HEIGHT"
add show_border "$WRITE /wmii/page/sel/frame/sel/border-width 3"
add swap "$WRITE /wmii/page/sel/frame/sel/ctl swap"
add snap_frame_west "$WRITE /wmii/page/sel/frame/sel/ctl 'resize west,-0,-0,-0'"
add snap_frame_north "$WRITE /wmii/page/sel/frame/sel/ctl 'resize -0,north,-0,-0'"
add snap_frame_east "$WRITE /wmii/page/sel/frame/sel/ctl 'resize east,+0,+0,+0'"
add snap_frame_south "$WRITE /wmii/page/sel/frame/sel/ctl 'resize +0,south-$LABEL_HEIGHT,+0,+0'"

# client related:
add close_client "$WRITE /wmii/ctl close"
add attach_client "$WRITE /wmii/ctl attach"
add detach_client "$WRITE /wmii/ctl detach"

# key mode related:
add mode_move "$WRITE /keys/lookup/bindings /mode/move; $WRITE /bar/label/mode/text m"
add mode_resize "$WRITE /keys/lookup/bindings /mode/resize; $WRITE /bar/label/mode/text r"
add mode_bare "$WRITE /keys/lookup/bindings /mode/bare; $WRITE /bar/label/mode/text b"
add mode_advanced "$WRITE /keys/lookup/bindings /mode/advanced; $WRITE /bar/label/mode/text a"
add mode_normal "$WRITE /keys/lookup/bindings /mode/normal; $WRITE /bar/label/mode/text n"

# misc:
add term "xterm -bg black -fg grey"
add quit "$WRITE /wmii/ctl quit"
add input_actions "$WRITE /input/lookup/labels /label/actions; $WRITE /input/ctl 'display 1'"
add input_programs "$WRITE /input/lookup/labels /label/programs; $WRITE /input/ctl 'display 1'"
add browser '${BROWSER:-mozilla}'
add browser_google_plumb '${BROWSER:-mozilla} "http://www.google.com/search?q=$(wmiplumb | sed s/\ /%20/g)"'
add browser_open_plumb '${BROWSER:-mozilla} "$(wmiplumb)"'

# useful composed actions, just uncomment if want use them:
#add select_parent_next "@{select_parent_frame}; @{select_next_frame}; @{select_child_frame}"
#add select_parent_prev "@{select_parent_frame}; @{select_prev_frame}; @{select_child_frame}"
#add select_child_next "@{select_child_frame}; @{select_next_frame}; @{select_parent_frame}"
#add select_child_prev "@{select_child_frame}; @{select_prev_frame}; @{select_parent_frame}"
