diff --git a/src/store/modules/Authentication/AuthenticanStore.js b/src/store/modules/Authentication/AuthenticanStore.js
index 07d5ee8..88fb54b 100644
--- a/src/store/modules/Authentication/AuthenticanStore.js
+++ b/src/store/modules/Authentication/AuthenticanStore.js
@@ -5,11 +5,13 @@
 const AuthenticationStore = {
   namespaced: true,
   state: {
+    consoleWindow: null,
     authError: false,
     xsrfCookie: Cookies.get('XSRF-TOKEN'),
     isAuthenticatedCookie: Cookies.get('IsAuthenticated'),
   },
   getters: {
+    consoleWindow: (state) => state.consoleWindow,
     authError: (state) => state.authError,
     isLoggedIn: (state) => {
       return (
@@ -33,6 +35,7 @@
       state.xsrfCookie = undefined;
       state.isAuthenticatedCookie = undefined;
     },
+    setConsoleWindow: (state, window) => (state.consoleWindow = window),
   },
   actions: {
     login({ commit }, { username, password }) {
@@ -48,7 +51,10 @@
     logout({ commit }) {
       api
         .post('/logout', { data: [] })
-        .then(() => commit('logout'))
+        .then(() => {
+          commit('setConsoleWindow', false);
+          commit('logout');
+        })
         .then(() => router.go('/login'))
         .catch((error) => console.log(error));
     },
diff --git a/src/views/Operations/Kvm/KvmConsole.vue b/src/views/Operations/Kvm/KvmConsole.vue
index c028a9f..4f24db2 100644
--- a/src/views/Operations/Kvm/KvmConsole.vue
+++ b/src/views/Operations/Kvm/KvmConsole.vue
@@ -46,6 +46,7 @@
 import IconLaunch from '@carbon/icons-vue/es/launch/20';
 import IconArrowDown from '@carbon/icons-vue/es/arrow--down/16';
 import { throttle } from 'lodash';
+import { mapState } from 'vuex';
 
 const Connecting = 0;
 const Connected = 1;
@@ -62,6 +63,7 @@
   },
   data() {
     return {
+      isConsoleWindow: null,
       rfb: null,
       isConnected: false,
       terminalClass: this.isFullWindow ? 'full-window' : '',
@@ -72,6 +74,7 @@
     };
   },
   computed: {
+    ...mapState('authentication', ['consoleWindow']),
     serverStatusIcon() {
       if (this.status === Connected) {
         return 'success';
@@ -89,6 +92,11 @@
       return this.$t('pageKvm.connecting');
     },
   },
+  watch: {
+    consoleWindow() {
+      if (this.consoleWindow == false) this.isConsoleWindow.close();
+    },
+  },
   mounted() {
     this.openTerminal();
   },
@@ -143,9 +151,26 @@
       }
     },
     openConsoleWindow() {
-      window.open(
+      // If isConsoleWindow is not null
+      // Check the newly opened window is closed or not
+      if (this.isConsoleWindow) {
+        // If window is not closed set focus to new window
+        // If window is closed, do open new window
+        if (!this.isConsoleWindow.closed) {
+          this.isConsoleWindow.focus();
+          return;
+        } else {
+          this.openNewWindow();
+        }
+      } else {
+        // If isConsoleWindow is null, open new window
+        this.openNewWindow();
+      }
+    },
+    openNewWindow() {
+      this.isConsoleWindow = window.open(
         '#/console/kvm',
-        '_blank',
+        'kvmConsoleWindow',
         'directories=no,titlebar=no,toolbar=no,location=no,status=no,menubar=no,scrollbars=no,resizable=yes,width=700,height=550'
       );
     },
