diff --git a/kernel/include/kernel/Terminal/VirtualTTY.h b/kernel/include/kernel/Terminal/VirtualTTY.h
index d4f3cf02..42bffa9d 100644
--- a/kernel/include/kernel/Terminal/VirtualTTY.h
+++ b/kernel/include/kernel/Terminal/VirtualTTY.h
@@ -94,6 +94,10 @@ namespace Kernel
 		uint32_t m_column { 0 };
 		Cell* m_buffer { nullptr };
 
+		bool m_last_cursor_shown { false };
+		uint32_t m_last_cursor_row { static_cast<uint32_t>(-1) };
+		uint32_t m_last_cursor_column { static_cast<uint32_t>(-1) };
+
 		const Palette& m_palette;
 
 		TerminalDriver::Color m_foreground;
diff --git a/kernel/kernel/Terminal/VirtualTTY.cpp b/kernel/kernel/Terminal/VirtualTTY.cpp
index f11a2290..29b3aeb3 100644
--- a/kernel/kernel/Terminal/VirtualTTY.cpp
+++ b/kernel/kernel/Terminal/VirtualTTY.cpp
@@ -571,17 +571,14 @@ namespace Kernel
 
 	void VirtualTTY::update_cursor()
 	{
-		static bool last_shown = !m_cursor_shown;
-		if (m_cursor_shown != last_shown)
+		if (m_cursor_shown != m_last_cursor_shown)
 			m_terminal_driver->set_cursor_shown(m_cursor_shown);
-		last_shown = m_cursor_shown;
+		m_last_cursor_shown = m_cursor_shown;
 
-		static uint32_t last_column = -1;
-		static uint32_t last_row = -1;
-		if (last_column != m_column || last_row != m_row)
+		if (m_last_cursor_column != m_column || m_last_cursor_row != m_row)
 			m_terminal_driver->set_cursor_position(m_column, m_row);
-		last_column = m_column;
-		last_row = m_row;
+		m_last_cursor_column = m_column;
+		m_last_cursor_row = m_row;
 	}
 
 }