diff --git a/gui/page/spkpageapplist.cpp b/gui/page/spkpageapplist.cpp
index 17045d5..f40d08d 100644
--- a/gui/page/spkpageapplist.cpp
+++ b/gui/page/spkpageapplist.cpp
@@ -27,6 +27,9 @@ namespace SpkUi
     mBtnGotoPage->setText(tr("Goto"));
     mBtnPgUp->setText(tr("Previous"));
     mBtnPgDown->setText(tr("Next"));
+    mBtnGotoPage->setFocusPolicy(Qt::NoFocus);
+    mBtnPgDown->setFocusPolicy(Qt::NoFocus);
+    mBtnPgUp->setFocusPolicy(Qt::NoFocus);
 
     mPageSwitchLay->addWidget(mPageIndicator);
     mPageSwitchLay->addStretch();
@@ -92,6 +95,7 @@ namespace SpkUi
       itm->deleteLater();
     }
     mAppItemList.clear();
+    mAppsArea->verticalScrollBar()->setValue(0);
   }
 
   void SpkPageAppList::ResourceAcquisitionFinished(int id, ResourceResult result)
diff --git a/gui/spkiconbutton.cpp b/gui/spkiconbutton.cpp
index 971260b..aac8e84 100644
--- a/gui/spkiconbutton.cpp
+++ b/gui/spkiconbutton.cpp
@@ -8,7 +8,7 @@
 SpkIconButton::SpkIconButton(QWidget *parent) :
   QPushButton(parent)
 {
-
+  setFocusPolicy(Qt::NoFocus);
 }
 
 void SpkIconButton::SetIcon(QIcon i, QSize s)
diff --git a/gui/spkmainwindow.cpp b/gui/spkmainwindow.cpp
index cacadaf..444ea2f 100644
--- a/gui/spkmainwindow.cpp
+++ b/gui/spkmainwindow.cpp
@@ -447,8 +447,11 @@ SpkUi::SpkMainWidget::SpkMainWidget(QWidget *parent) : QFrame(parent)
   SidebarMgr->AddUnusableItem(CategoryParentItem);
   CategoryWidget->addTopLevelItem(AppDetailsItem);
   CategoryWidget->addTopLevelItem(CategoryParentItem);
+  CategoryWidget->addTopLevelItem(DownloadsItem);
   CategoryWidget->addTopLevelItem(UiTestItem);
 
+  CategoryWidget->setFocusPolicy(Qt::NoFocus);
+
   // Must be done after added into a view.
   AppDetailsItem->setHidden(true); // Hide until we actually open up a Details page
   CategoryParentItem->setExpanded(true);
diff --git a/resource/icons/loading-icon.svg b/resource/icons/loading-icon.svg
new file mode 100644
index 0000000..e89a671
--- /dev/null
+++ b/resource/icons/loading-icon.svg
@@ -0,0 +1,245 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   width="48"
+   height="48"
+   viewBox="0 0 12.7 12.7"
+   version="1.1"
+   id="svg5"
+   inkscape:version="1.1.1 (3bf5ae0d25, 2021-09-20, custom)"
+   sodipodi:docname="loading-icon.svg"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <sodipodi:namedview
+     id="namedview7"
+     pagecolor="#ffffff"
+     bordercolor="#eeeeee"
+     borderopacity="1"
+     inkscape:pageshadow="0"
+     inkscape:pageopacity="0"
+     inkscape:pagecheckerboard="0"
+     inkscape:document-units="mm"
+     showgrid="false"
+     units="px"
+     width="48px"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:zoom="8.6917863"
+     inkscape:cx="36.873893"
+     inkscape:cy="35.263177"
+     inkscape:window-width="1852"
+     inkscape:window-height="1021"
+     inkscape:window-x="68"
+     inkscape:window-y="30"
+     inkscape:window-maximized="1"
+     inkscape:current-layer="g7131"
+     inkscape:snap-global="false">
+    <sodipodi:guide
+       position="-1.0906364,2.8181404"
+       orientation="1,0"
+       id="guide9660" />
+    <sodipodi:guide
+       position="7.1936015,1.7762211"
+       orientation="1,0"
+       id="guide10203" />
+    <sodipodi:guide
+       position="-5.6970363,8.7347431"
+       orientation="0,-1"
+       id="guide5905" />
+    <sodipodi:guide
+       position="-6.0065417,3.2842886"
+       orientation="1,0"
+       id="guide6913" />
+  </sodipodi:namedview>
+  <defs
+     id="defs2">
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient16383">
+      <stop
+         style="stop-color:#ffe02f;stop-opacity:1"
+         offset="0"
+         id="stop16379" />
+      <stop
+         style="stop-color:#ceaf00;stop-opacity:1"
+         offset="1"
+         id="stop16381" />
+    </linearGradient>
+    <linearGradient
+       inkscape:collect="always"
+       id="linearGradient16371">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0.72503608"
+         offset="0"
+         id="stop16367" />
+      <stop
+         style="stop-color:#a9c7e2;stop-opacity:1"
+         offset="1"
+         id="stop16369" />
+    </linearGradient>
+    <filter
+       style="color-interpolation-filters:sRGB;"
+       inkscape:label="Drop Shadow"
+       id="filter12165"
+       x="-0.61467958"
+       y="-0.51081231"
+       width="2.2293592"
+       height="2.0052463">
+      <feFlood
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         id="feFlood12155" />
+      <feComposite
+         in="flood"
+         in2="SourceGraphic"
+         operator="in"
+         result="composite1"
+         id="feComposite12157" />
+      <feGaussianBlur
+         in="composite1"
+         stdDeviation="0.6"
+         result="blur"
+         id="feGaussianBlur12159" />
+      <feOffset
+         dx="0"
+         dy="-0.0357754"
+         result="offset"
+         id="feOffset12161" />
+      <feComposite
+         in="SourceGraphic"
+         in2="offset"
+         operator="over"
+         result="fbSourceGraphic"
+         id="feComposite12163" />
+      <feColorMatrix
+         result="fbSourceGraphicAlpha"
+         in="fbSourceGraphic"
+         values="0 0 0 -1 0 0 0 0 -1 0 0 0 0 -1 0 0 0 0 1 0"
+         id="feColorMatrix12185" />
+      <feFlood
+         id="feFlood12187"
+         flood-opacity="0.498039"
+         flood-color="rgb(0,0,0)"
+         result="flood"
+         in="fbSourceGraphic" />
+      <feComposite
+         in2="fbSourceGraphic"
+         id="feComposite12189"
+         in="flood"
+         operator="in"
+         result="composite1" />
+      <feGaussianBlur
+         id="feGaussianBlur12191"
+         in="composite1"
+         stdDeviation="0.3"
+         result="blur" />
+      <feOffset
+         id="feOffset12193"
+         dx="0"
+         dy="-0.0357754"
+         result="offset" />
+      <feComposite
+         in2="offset"
+         id="feComposite12195"
+         in="fbSourceGraphic"
+         operator="over"
+         result="composite2" />
+    </filter>
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient16371"
+       id="radialGradient16377"
+       cx="-4.7125068"
+       cy="7.5934238"
+       fx="-4.7125068"
+       fy="7.5934238"
+       r="1.757013"
+       gradientTransform="matrix(-1.3027498,0.11328712,-0.18036851,-2.0741547,-7.8638702,21.444021)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient16383"
+       id="radialGradient16385"
+       cx="-5.912662"
+       cy="5.7206993"
+       fx="-5.912662"
+       fy="5.7206993"
+       r="2.0979352"
+       gradientTransform="matrix(-1.2935587,0.01030025,-0.00428345,-0.53793422,-9.9609197,7.0026033)"
+       gradientUnits="userSpaceOnUse" />
+    <radialGradient
+       inkscape:collect="always"
+       xlink:href="#linearGradient16383"
+       id="radialGradient16393"
+       cx="-5.4107118"
+       cy="10.34456"
+       fx="-5.4107118"
+       fy="10.34456"
+       r="2.0979352"
+       gradientTransform="matrix(-1.3869,0.09227862,-0.02095436,-0.31493344,-9.840288,12.377522)"
+       gradientUnits="userSpaceOnUse" />
+  </defs>
+  <g
+     inkscape:label="图层 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <g
+       id="g3677"
+       transform="matrix(0.88007609,0,0,0.88007609,0.78040127,1.479092)">
+      <rect
+         style="fill:#a9a9a9;fill-opacity:1;fill-rule:evenodd;stroke-width:5.3055;stroke-linecap:square;stroke-linejoin:round;stroke-dashoffset:45.3543;paint-order:markers stroke fill"
+         id="rect1658"
+         width="11.160667"
+         height="8.1493292"
+         x="0.61245853"
+         y="1.4098672"
+         ry="1.5216811" />
+      <path
+         id="path2772"
+         style="fill:#424242;fill-opacity:1;fill-rule:evenodd;stroke-width:18.8976;stroke-linecap:square;stroke-linejoin:round;stroke-dashoffset:45.3543;paint-order:markers stroke fill"
+         d="m 34.921875,11.419922 a 3.7096729,3.7096729 0 0 0 -3.708984,3.708984 3.7096729,3.7096729 0 0 0 3.708984,3.710938 3.7096729,3.7096729 0 0 0 3.710937,-3.710938 3.7096729,3.7096729 0 0 0 -3.710937,-3.708984 z M 6.1210938,15.679688 C 5.2082301,15.6918 4.3204825,16.571215 3.5292969,17.777344 v 12.044922 c 0,3.002714 2.417207,5.419921 5.4199219,5.419922 H 37.863281 c 3.002715,0 5.419922,-2.417208 5.419922,-5.419922 V 26.15625 c -1.064126,5.801119 -6.494141,6.128906 -6.494141,6.128906 C 34.285467,32.167203 32.377484,31.662727 25.378906,24.939453 21.622195,21.499702 18.690008,22.539649 15.824219,26.105469 13.860659,28.54867 11.292898,21.37589 7.7734375,16.705078 7.2235219,15.975264 6.6684472,15.672425 6.1210938,15.679688 Z"
+         transform="scale(0.26458333)" />
+    </g>
+    <g
+       id="g7131"
+       transform="matrix(1.1035095,0,0,1.1035095,13.460695,1.3904642)"
+       style="filter:url(#filter12165)">
+      <path
+         style="fill:url(#radialGradient16377);fill-opacity:1;fill-rule:evenodd;stroke-width:4.99999;stroke-linecap:square;stroke-linejoin:round;stroke-dashoffset:45.3543;paint-order:markers stroke fill"
+         d="M -3.5630021,6.4950297 C -2.2294148,6.4369804 -2.206634,5.533127 -2.206634,4.524096 h -3.4904023 c -0.097047,1.1964816 0.4082363,1.9405496 1.3563682,1.9709337 0.095555,0 0.1821818,0.1234057 0.1821818,0.2133822 0,0.089977 -0.086626,0.2133822 -0.1821818,0.2133822 -1.3335873,0.058049 -1.3563682,0.9619027 -1.3563682,1.9709337 h 3.4904024 c 0.097047,-1.1964815 -0.4082363,-1.9405495 -1.3563682,-1.9709336 -0.095555,0 -0.1821818,-0.1234057 -0.1821818,-0.2133823 0,-0.089976 0.086626,-0.2133822 0.1821818,-0.2133822 z"
+         id="path4697"
+         sodipodi:nodetypes="cccczcccczc" />
+      <rect
+         style="fill:url(#radialGradient16385);fill-opacity:1;fill-rule:evenodd;stroke-width:4.99999;stroke-linecap:square;stroke-linejoin:round;stroke-dashoffset:45.3543;paint-order:markers stroke fill"
+         id="rect3701"
+         width="4.1958704"
+         height="0.85814303"
+         x="-6.0065417"
+         y="3.9652569"
+         ry="0.24215318" />
+      <path
+         style="fill:#918b64;fill-opacity:1;fill-rule:evenodd;stroke-width:4.99999;stroke-linecap:square;stroke-linejoin:round;stroke-dashoffset:45.3543;paint-order:markers stroke fill"
+         d="m -2.4644408,8.7343896 c 0,0 -0.055095,-0.8312165 -1.4461186,-0.8236696 -1.3910233,0.00755 -1.4378873,0.8488331 -1.4378873,0.8488331 z"
+         id="path8210-5"
+         sodipodi:nodetypes="czcc" />
+      <rect
+         style="fill:url(#radialGradient16393);fill-opacity:1;fill-rule:evenodd;stroke-width:4.99999;stroke-linecap:square;stroke-linejoin:round;stroke-dashoffset:45.3543;paint-order:markers stroke fill"
+         id="rect3701-7"
+         width="4.1958704"
+         height="0.85814303"
+         x="-6.0065417"
+         y="8.5575686"
+         ry="0.24215318" />
+      <path
+         style="fill:#918b64;fill-opacity:1;fill-rule:evenodd;stroke-width:4.99999;stroke-linecap:square;stroke-linejoin:round;stroke-dashoffset:45.3543;paint-order:markers stroke fill"
+         d="m -5.3313101,5.5701504 c 0,0 0.055095,0.8312165 1.4461186,0.8236696 1.3910233,-0.00755 1.4378873,-0.8488331 1.4378873,-0.8488331 0,0 -1.5860681,-0.013474 -2.1582201,0.1779698 -0.5721519,0.1914438 -0.7257858,-0.1528063 -0.7257858,-0.1528063 z"
+         id="path8210"
+         sodipodi:nodetypes="czczc" />
+    </g>
+  </g>
+</svg>