diff --git a/Modules/CommandPad/commandpad.cpp b/Modules/CommandPad/commandpad.cpp
index 5b7fadd13b64522528524928f4f2ed3cce17567b..9e1402ae0ab05ec61b968f3939298c95d18a71c8 100644
--- a/Modules/CommandPad/commandpad.cpp
+++ b/Modules/CommandPad/commandpad.cpp
@@ -72,11 +72,17 @@ QWidget* CommandPad::toWidget() {
 }
 
 XmlObject CommandPad::toXmlObject() {
-    return XmlObject(getName(ModuleId::COMMANDPAD));
+    XmlObject obj(getName(ModuleId::COMMANDPAD));
+    obj.addAttribute("selected", commandComboBox->currentText());
+    return obj;
 }
 
 void CommandPad::fromXmlObject(const XmlObject& xmlObject) {
-    Q_UNUSED(xmlObject);
+    QString curr = xmlObject.getAttribute("selected");
+    int idx = commandComboBox->findText(curr);
+    if(idx != -1) {
+        commandComboBox->setCurrentIndex(idx);
+    }
 }
 
 #define _CMD(id, strName) \
@@ -128,7 +134,7 @@ void CommandPad::fromXmlObject(const XmlObject& xmlObject) {
 void CommandPad::setupUi() {
     QStackedWidget* stacked = new QStackedWidget;
 
-    QComboBox* commandComboBox = new QComboBox;
+    commandComboBox = new QComboBox;
     commandComboBox->setSizePolicy(QSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed));
     connect(commandComboBox, QOverload<int>::of(&QComboBox::currentIndexChanged), this,
     [ = ](int idx) {
diff --git a/Modules/CommandPad/commandpad.h b/Modules/CommandPad/commandpad.h
index a179cfc0a59de74bd74cf7fe0e55e8f4d0f20353..44bb73ef8f88130789c817bd18bca72e7a1ade4c 100644
--- a/Modules/CommandPad/commandpad.h
+++ b/Modules/CommandPad/commandpad.h
@@ -22,6 +22,8 @@ class CommandPad : public DefaultModule {
 
   private:
     void setupUi();
+
+    QComboBox* commandComboBox;
 };
 
 #endif // COMMANDPAD_H