[RAZR i Android Development] arman68:
I have modded the stock motoblur launcher with:

no quick search bar

5 rows on homescreen

4x5 apps in folders (20 items instead of 16)

no icon texts in dock

Screenshots with navigation bar visible:

View attachment 1928045

Screenshots with no navigation bar:

View attachment 1928046

Be aware though, that this is not perfect, and I am aware of 2 problems when switching to landscape mode:

4x4 grid in landscape will not show the items from the portrait bottom row

opening a folder, with more than 18 items in landscape, removes the last 2 items

Download (zip to install from CWM recovery): launcher_4x5_motorblur_xt890_v2.zip - 8.78 MB

(This will also remove Google Search from your phone)

If you have removed the motoblur launcher (for example, with my launcher remover), and would like to reinstall it (stock, not 4x5 mod), download this CWM recovery zip file: launcher_motoblur_xt890.zip - 29.24 MB (includes launcher, circle clock widget with weather app, favourite contacts)

For reference, these are the modifications I did to Homescreen.apk:

Starting with the standard ICS launcher, modding the xml is not enough, and a bit of smali editing is needed. The motoblur launcher is actually very similar to the stock JB launcher, and so are the mods. First, in Launcher.smali, look for the following code:

.method private [B]updateGlobalSearchIcon[/B](Landroid/graphics/drawable/Drawable$ConstantState;)V
.locals [COLOR="red"]3[/COLOR]
.parameter

.prologue
const [COLOR="red"]v2[/COLOR], 0x7f0e009e

.line 4934
const v0, 0x7f0e00a0

invoke-virtual {p0, v0}, Lcom/motorola/homescreen/Launcher;->findViewById(I)Landroid/view/View;

move-result-object v0

.line 4935
invoke-virtual {p0, v2}, Lcom/motorola/homescreen/Launcher;->findViewById(I)Landroid/view/View;

move-result-object v1

.line [COLOR="red"]4936[/COLOR]
invoke-direct {p0, [COLOR="red"]v2[/COLOR], p1}, Lcom/motorola/homescreen/Launcher;->updateButtonWithDrawable(ILandroid/graphics/drawable/Drawable$ConstantState;)V

.line 4937
if-eqz v0, :cond_0

if-eqz v1, :cond_0

.line 4938
invoke-direct {p0, v0, v1}, Lcom/motorola/homescreen/Launcher;->invalidatePressedFocusedStates(Landroid/view/View;Landroid/view/View;)V

.line 4940
:cond_0
return-void
.end method

and replace with:

.method private [B]updateGlobalSearchIcon[/B](Landroid/graphics/drawable/Drawable$ConstantState;)V
.locals [COLOR="red"]1[/COLOR]
.parameter

.prologue
.line [COLOR="red"]4936[/COLOR]
const [COLOR="red"]v0[/COLOR], 0x7f0e009e

invoke-direct {p0, [COLOR="red"]v0[/COLOR], p1}, Lcom/motorola/homescreen/Launcher;->updateButtonWithDrawable(ILandroid/graphics/drawable/Drawable$ConstantState;)V

.line 4940
:cond_0
return-void
.end method

In layout-port/search_bar.xml we hide the search bar by setting its size to 0. Unlike removing the search bar altogether, this prevents FC in the launcher itself, and any app that assumes the search bar exists. Original:

<RelativeLayout android:layout_gravity="bottom|center" android:background="@drawable/search_frame" android:layout_width="fill_parent" [COLOR="Red"]android:layout_height="[B]@dimen/search_bar_height[/B]"[/COLOR] style="@style/SearchDropTargetBar"

Hidden search bar:

<RelativeLayout android:layout_gravity="bottom|center" android:background="@drawable/search_frame" android:layout_width="fill_parent" [COLOR="red"]android:layout_height="[B]0.0dip[/B]"[/COLOR] style="@style/SearchDropTargetBar"

In layout-port/launcher.xml we need to increase the number of rows from 4 to 5, and remove the padding for the quick search bar. Change:

<com.motorola.homescreen.MotoWorkspace android:id="@id/workspace" [COLOR="Red"]android:paddingTop="[B]@dimen/qsb_bar_height_inset[/B]"[/COLOR] android:paddingBottom="@dimen/button_bar_height" android:layout_width="fill_parent" android:layout_height="fill_parent" launcher:defaultScreen="0" launcher:cellCountX="4" [COLOR="red"]launcher:cellCountY="[B]4[/B]"[/COLOR] launcher:pageSpacing="@dimen/workspace_page_spacing" launcher:scrollIndicatorPaddingLeft="@dimen/workspace_divider_padding_left" launcher:scrollIndicatorPaddingRight="@dimen/workspace_divider_padding_right">

to:

<com.motorola.homescreen.MotoWorkspace android:id="@id/workspace" [COLOR="red"]android:paddingTop="[B]0.0dip[/B]"[/COLOR] android:paddingBottom="@dimen/button_bar_height" android:layout_width="fill_parent" android:layout_height="fill_parent" launcher:defaultScreen="0" launcher:cellCountX="4" [COLOR="red"]launcher:cellCountY="[B]5[/B]"[/COLOR] launcher:pageSpacing="@dimen/workspace_page_spacing" launcher:scrollIndicatorPaddingLeft="@dimen/workspace_divider_padding_left" launcher:scrollIndicatorPaddingRight="@dimen/workspace_divider_padding_right">

Even with the search bar removed, there is not enough space to fit 5 full size rows. The solution I used was to reduce the size of the dock, by getting rid of the icons text. You need to replace the following lines in values-hdpi/dimens.xml:

<dimen name="hotseat_cell_height">[COLOR="red"]82[/COLOR].0dip</dimen>
<dimen name="button_bar_height">[COLOR="red"]82[/COLOR].0dip</dimen>
<dimen name="button_bar_height_plus_padding">[COLOR="red"]84[/COLOR].0dip</dimen>

with:

<dimen name="hotseat_cell_height">[COLOR="red"]58[/COLOR].0dip</dimen>
<dimen name="button_bar_height">[COLOR="red"]58[/COLOR].0dip</dimen>
<dimen name="button_bar_height_plus_padding">[COLOR="red"]60[/COLOR].0dip</dimen>

Finally, to change the folders from a maximum of 4x4 (16 items) to 4x5 (20 items), in values/integers.xml, change:

<integer name="folder_max_count_x">4</integer>
<integer name="folder_max_count_y">[COLOR="red"][B]4[/B][/COLOR]</integer>
<integer name="folder_max_num_items">[COLOR="red"][B]16[/B][/COLOR]</integer>

to:

<integer name="folder_max_count_x">4</integer>
<integer name="folder_max_count_y">[COLOR="red"][B]5[/B][/COLOR]</integer>
<integer name="folder_max_num_items">[COLOR="red"][B]20[/B][/COLOR]</integer>