diff --git a/config/ags/config.js b/config/ags/config.js
index d2e4380d..76f2b779 100644
--- a/config/ags/config.js
+++ b/config/ags/config.js
@@ -5,6 +5,7 @@ import { NotificationCenter } from './js/notifications/center.js';
 import { NotificationsPopupList } from './js/notifications/popup.js'
 import { Calendar } from './js/date.js';
 import { QuickSettings } from './js/quick-settings/main.js';
+import { Overview } from './js/overview/main.js';
 
 import { Closer, closeAll } from './js/misc/closer.js';
 ags.App.closeAll = () => closeAll();
@@ -27,5 +28,6 @@ export default {
     NotificationsPopupList,
     Calendar,
     QuickSettings,
+    Overview,
   ],
 };
diff --git a/config/ags/js/bar/workspaces.js b/config/ags/js/bar/workspaces.js
index ad227e47..b9e9c189 100644
--- a/config/ags/js/bar/workspaces.js
+++ b/config/ags/js/bar/workspaces.js
@@ -7,6 +7,9 @@ import { EventBox } from '../misc/cursorbox.js';
 const Workspace = ({ i } = {}) =>
 Revealer({
   transition: "slide_right",
+  properties: [
+    ['id', i],
+  ],
   child: EventBox({
     tooltipText: `${i}`,
     onPrimaryClickRelease: () => execAsync(`hyprctl dispatch workspace ${i}`).catch(print),
@@ -29,17 +32,38 @@ export const Workspaces = Box({
   className: 'workspaces',
   children: [EventBox({
     child: Box({
-      children: Array.from({ length: 15 }, (_, i) => i + 1).map(i => Workspace({ i: i})),
-      connections: [[Hyprland, box => {
-        let workspaces = [];
-        Hyprland.workspaces.forEach(ws => {
-          if (ws.id > 0) workspaces.push(ws);
-        });
+      properties: [
+        ['workspaces'],
 
-        box.children.forEach(rev => rev.reveal_child = false);
-        workspaces.forEach(ws => {
-          box.children[ws.id - 1].reveal_child = true;
-        });
+        ['refresh', box => {
+          box.children.forEach(rev => rev.reveal_child = false);
+          box._workspaces.forEach(ws => {
+            ws.revealChild = true;
+          });
+        }],
+
+        ['updateWs', box => {
+          Hyprland.workspaces.forEach(ws => {
+            let currentWs = box.children.find(ch => ch._id == ws.id);
+            if (!currentWs && ws.id > 0) {
+              box.add(Workspace({ i: ws.id}));
+            }
+          });
+          box.show_all();
+
+          // Make sure the order is correct
+          box._workspaces.forEach((workspace, i) => {
+            workspace.get_parent().reorder_child(workspace, i);
+          });
+        }],
+      ],
+      connections: [[Hyprland, box => {
+        box._workspaces = box.children.filter(ch => {
+          return Hyprland.workspaces.find(ws => ws.id == ch._id)
+        }).sort((a, b) => a._id - b._id);
+
+        box._updateWs(box);
+        box._refresh(box);
       }]],
     }),
   })],
diff --git a/config/ags/js/overview/main.js b/config/ags/js/overview/main.js
index 96add99d..202884aa 100644
--- a/config/ags/js/overview/main.js
+++ b/config/ags/js/overview/main.js
@@ -16,7 +16,7 @@ const DEFAULT_SPECIAL = {
 export const Overview = Window({
   name: 'overview',
   layer: 'overlay',
-  //popup: true,
+  popup: true,
   anchor: 'top',
   margin: [ 0, 0, 0, 0 ],
   child: Box({
@@ -45,17 +45,12 @@ export const Overview = Window({
     connections: [
       [Hyprland, box => {
         let childI = 0;
-        box._workspaces = box.children[childI++].centerWidget.children.concat(
-                          box.children[childI].centerWidget.children);
-
-        // Make sure the order is correct
-        box._workspaces.forEach(workspace => {
-          workspace.get_parent().reorder_child(workspace, workspace._id)
-        });
+        box._workspaces = [].concat(box.children[childI++].centerWidget.children,
+                                    box.children[childI].centerWidget.children)
+                            .sort((a, b) => a._id - b._id);
 
         box._updateWs(box);
         box._updateApps(box);
-
       }],
     ],
     properties: [
@@ -142,13 +137,7 @@ export const Overview = Window({
       ['updateWs', box => {
         Hyprland.workspaces.forEach(ws => {
           let currentWs = box._workspaces.find(ch => ch._id == ws.id)
-          if (currentWs) {
-            if (!currentWs._ordered) {
-              currentWs.get_parent().reorder_child(currentWs, ws._id);
-              currentWs._ordered = true;
-            }
-          }
-          else {
+          if (!currentWs) {
             var childI = 0;
             if (ws.id < 0) {
               childI = 1;
@@ -157,7 +146,6 @@ export const Overview = Window({
             currentWs = Box({
               properties: [
                 ['id', ws.id],
-                ['ordered', false],
               ],
               className: 'workspace',
               child: EventBox({
@@ -171,6 +159,11 @@ export const Overview = Window({
           }
         });
         box.show_all();
+
+        // Make sure the order is correct
+        box._workspaces.forEach((workspace, i) => {
+          workspace.get_parent().reorder_child(workspace, i)
+        });
       }],
     ],
   }),