diff --git a/woman/lib.py b/woman/lib.py
index a5bfc0832ba516178aeed4d7f3d4a708ae688d5f..9416f2d4078456041430d2116ee4e9747c016d0d 100644
--- a/woman/lib.py
+++ b/woman/lib.py
@@ -88,9 +88,11 @@ def swap_workspace(a_master, a_slave, b_master, b_slave):
 
     a = (a_master, a_slave)
     b = (b_master, b_slave)
-    if a_master not in shared.output_of_workspace or a_slave not in shared.output_of_workspace[a_master]:
+    if not shared.workspace_exist(*a):
+        if not shared.workspace_exist(*b):
+            return
         return rename_workspace(*b, *a)
-    if b_master not in shared.output_of_workspace or b_slave not in shared.output_of_workspace[b_master]:
+    if not shared.workspace_exist(*b):
         return rename_workspace(*a, *b)
     shared.i3_cmd(f'rename workspace {workspace(*a)} to tmp_swap')
     try:
diff --git a/woman/shared.py b/woman/shared.py
index 055c3f773bf92220b3dafb37cdb890aa90ccaf9e..a96e5715e82e60ee6e35bc86975fa446fad4b595 100755
--- a/woman/shared.py
+++ b/woman/shared.py
@@ -65,8 +65,8 @@ class Shared:
         self.qt_local_queue.value = []
         self.i3.value = i3ipc.Connection()
 
-
-
+    def workspace_exist(self, master, slave):
+        return master in self.output_of_workspace and slave in self.output_of_workspace[master]
 
     def qt_task(self, *arg, otherwise=lambda: False):
         # print(f"QT TASK FROM {threading.current_thread()}: {arg}")